April 28, 2018

Setting up Ubuntu Linux with Docker

Let's say that I only have a Windows 10 system at home, and I wanted to take a refresher course, Michael Hartl's Learn Enough Command Line to Be Dangerous. There are many ways to get Linux on a Windows machine. The easiest I found? Docker. Besides, they use Docker at work, so I need to practice that, too.

There are some technologies that keep on popping up again and again in my short career as an automation developer. One of those is Docker. "Docker is a software platform that allows you to build, test, and deploy applications quickly. Docker packages software into standardized units called containers that have everything the software needs to run including libraries, system tools, code, and runtime", according to AWS's article, What is Docker?

Back in July 2016, I was doing some weekend work to see if my company might be able to set up Docker with the new Docker Toolbox, with me working with our DevOps team, implementing a Selenium Grid using Docker-Selenium to possibly offload some of the cost of Sauce Labs, which can get pricey. I was inspired by a Selenium Conf India 2016 talk, "Testing as a Container". The month before, I was also tinkering with Setting up a Virtual DEV environment with VirtualBox, Vagrant and Docker, based on a Test Driven Java Development book I was reading. The projects were nixed, and I moved onto other things.

Years later, in March 2018, I would revisit this project, Starting a Selenium Grid using AWS + SeleniumHQ Docker images and Docker Compose.

That's how it goes jumping from gig to gig the past few years: from workplace to workplace the technology stack changes. Hopefully with my current full time permanent gig I can stop tinkering, settle down for five or six years and actually get good at some of this stuff, instead of always feeling that I am paging through the book "How To Skydive" while I am in free fall.

With this blog article we are not doing anything so fancy. All I want to do is bring up a Docker image containing Ubuntu. You see, as much as I love my work Macbook, at home I always use a Windows machine. Every few months I am tinkering with a new tool or technology, installing the Windows version of whatever I am tinkering with. It gets cluttered with half-forgotten tools. Maybe if I use Docker, I can start using a real Linux environment while at home instead of the half-baked hybrid I have been using.

Yeah, I could Start a Linux Machine with Amazon Web Services Free Tier, which I researched back in January of 2018 ... but between you and me, I worry about leaving a process running, and being stuck with a hefty monthly bill. Luckily, Docker for Windows would work just as easily!

Docker Community Edition



April 9, 2018

So You Want To Be An Automation Developer - Guest Post on Blog.SmartBear.

Last week, SmartBear.com -- the company behind TestComplete, ReadyAPI, QAComplete, SoapUI, and Swagger -- tapped me on the shoulder. Did I want to write a guest post on their blog? How about something that manual testers could use as a guide to switch to automation?

It took me three hours, but I came up with an article: So You Want To Be An Automation Developer.

 "Are you a software tester trying to break into automation? Need pointers to get your first job? Although I only have three years of experience as an automation developer, I may be able to point you in the right direction.

"Step One: Take a Coding Class

"When you are writing automation, you aren’t simply tinkering with a new toolset or technology. You are writing software in order to test software. It will definitely help you if you start learning how to code. With your first job, you won’t need to know how to write clean code or refactor tests right away, but if your job interviews are anything like the ones I had, you will have to demonstrate some knowledge of a programming language during your job interview.

"My biggest recommendation if you are brand new to coding? Check out your local community college to see what programming classes they offer. Testing and developing are completely different mindsets. Learning from and interacting with a teacher, bouncing ideas off of students, and forming up study groups will help with the ever growing frustration as you are learning this brand new skill. You will hit wall after wall trying to understand the basic concepts. Your study group can be your wrecking crew. It also helps that everyone in the class are tackling the same concepts at the same pace".

Read more here.


Thank you so much, SmartBear for publishing my article! Happy Testing!

-T.J. Maher
Sr. QA Engineer, Software Engineer in Test
Meetup Organizer, Ministry of Testing - Boston

Twitter | YouTubeLinkedIn | Articles

March 29, 2018

Starting a Selenium Grid using AWS + SeleniumHQ Docker images + Docker Compose

With this blog post we will be exploring how to start a Selenium Grid using an Amazon Web Service (AWS) instance the SeleniumHQ Docker images, Docker and Docker Compose. For this example, I will be using a Macbook, so the Terminal will be my Command Line Interface.

Need more information? Check out the official Amazon Web Services documentation:
We could use the "Amazon Elastic Container Service" and using AWS Fargate to run containers without managing servers or clusters ... but since I am tinkering, I want to make sure that I am using only free services provided by the Amazon Free Tier that I signed up for last month.

We are going to be starting off by following along with the official docs by Amazon, AWS Docker Basics.

March 21, 2018

Watch Seb Rose Talk About the Big Ideas Behind BDD

Couldn't make it to Day One of Seb Rose's "BDD Kickstart" course, held Tuesday March 20th, 2018 from 9:00 to 4:30 pm at the SmartBear.com Assembly Square, Somerville, MA office? Man, that was fun! Hear him summarize the class in his talk he gave the Ministry of Testing - Boston Meetup, live streamed and recorded!

Catch me give a brief intro in the video!

The Big Ideas Behind BDD 
Ministry of Testing - Boston Meetup: 3/20/2018
https://youtu.be/hQyXgKENDtg

Want to view his slides?



The Ministry of Testing - Boston at SmartBear.com
Thank you SmartBear for being such a wonderful sponsor for my Meetup!

Seb Rose, Cucumber.io
Thank you, Seb, after a long day teaching your class for speaking to our group!

Brianne from SmartBear, hard at work managing the live streaming
Thank you, Brianne, our newest event organizer at the Ministry of Testing - Boston for organizing the event, setting it up, managing the live streaming, and acting as emcee!

Seb Rose & T.J. Maher, Meetup Organizer of the Ministry of Testing - Boston

I just really love the Ministry of Testing - Boston. It has been so much fun the past year-and-a-half running the group!

Happy Testing!

-T.J. Maher
Sr. QA Engineer, Software Engineer in Test
Meetup Organizer, Ministry of Testing - Boston

Twitter | YouTubeLinkedIn | Articles

March 17, 2018

Getting to Know GitLab and How They Test the UI

The past three years as an automation developer, I have worked with many different continuous integration platforms such as Jenkins, TeamCity, and CircleCI, hooking up my automation to it so the tests can be run once an hour, nightly, or every single time is checked in.

Threat Stack uses GitLab for its Continuous Integration / Continuous Deployment (CI / CD) pipeline. Why? You should ask Pete Cheslock, head of DevOps. He is currently writing about his experience in our company blog:
With GitLab, I am more concerned with finding out what it does in general. Lucky for me, they give YouTube tours such as this one shot back in November 2017, Idea to Production with GitLabs.


This video gives you a good idea of using GitLab to do issue tracking, planning, committing to the repo, testing with CI, debugging in the terminal, deploying to production, scaling an application and application performance monitoring.

The History of GitLab

According to https://about.gitlab.com/history/

"2011: Our CTO Dmitriy needed an great tool to collaborate with his team. He wanted something efficient and enjoyable so he could focus on his work, not the tools. He created GitLab from his house in Ukraine. It was a house without running water but Dmitriy perceived not having a great collaboration tool as a bigger problem than his daily trip to the communal well. [...] So together with Valery, he started to build GitLab as a solution for this. This commit was the very start of GitLab.
"2012: GitLab.com: Sid saw GitLab for the first time and thought it was natural that a collaboration tool for programmers was an open source so you could contribute to it. Being a Ruby programmer he checked out the source code and was impressed with the code quality of GitLab after more than 300 contributions in the first year. He asked Hacker News if they were interested in using GitLab.com and hundreds of people signed up for the beta. In November 2012, Dmitriy made the first version of GitLab CI".

Wait a Second... GitLab Uses Ruby?

Oh, that is interesting! GitLab is coded using Ruby! The Test Engineering  team picked the Ruby language for its automation framework because Chef and Test Kitchen use Ruby. As a Ruby Newbie, I have been finding it helpful to review the great work the Gauge.org people have done creating examples using their BDD framework with Capybara.

What I find more fortunate is that it appears that GitLab uses for its UI tests what I am attempting to use: Capybara + Ruby + Headless Chrome.

I need to check out Mike Greiling's article, "How GitLab switched to Headless Chrome for testing: A detailed explanation with examples of how GitLab made the switch to headless Chrome".

As Mike put it, last year, "news spread that Chrome 59 would support a native, cross-platform headless mode. It was previously possible to simulate a headless Chrome browser in CI/CD using virtual frame buffer, but this required a lot of memory and extra complexities. A native headless mode is a game changer. It is now possible to run integration tests in a headless environment on a real, modern web browser that our users actually use!

"Soon after this was revealed, Vitaly Slobodin, PhantomJS's chief developer, announced that the project would no longer be maintained".

And all of the source code for GitLab's Community Edition is stored on GitLab. Awesome!

At my job there are so many things that are new to me:

  • I am new to Gauge.org
  • I am new to Ruby
  • I am new to Capybara
  • I am new to GitLab
  • I am new to Headless Chrome. 
... For the last week, since I was placed on Threat Stack's UI team, I've written a few UI tests, but they all run locally, on my own computer, but I was stumped when it came to using CI with GitLab. I've been searching for a model to base my new framework on.

Looks like I found one. This should be fun! 


Happy Testing!

-T.J. Maher
Sr. QA Engineer, Software Engineer in Test
Meetup Organizer, Ministry of Testing - Boston

Twitter | YouTubeLinkedIn | Articles

March 16, 2018

Use 20% Discount Code ATDTJ for Agile Testing Days in Boston, Coming Late June!

Did you know? The Ministry of Testing - Boston has a group discount code for Agile Testing Days! Want to borrow it? I checked with Techwell, and they said it was okay to share! Use the discount code ATDTJ to get 20% off the already discounted "super early lobster" pricing which is running until April 27th, 2018. 

The conference is running June 25 - 29th, 2018 and will be held in the DoubleTree Hilton up in Danvers, MA.

Prices before the 20% discount:
There also will be a class "Python for Testers" run by Kristoffer Nordstrom.

Wow. It's like my Twitter feed come to life!

... I wonder how many people I can get recruit to come to a Ministry of Testing - Boston? So far, we already have had:
  • Angie Jones speak to our group in a Google Hangout last Spring.
  • Claire Moss, organizer of the Ministry of Testing - Atlanta brought Llewllyn Falco, to run a Lean Coffee last year.
  • When MoT-Boston invaded last year's TestBash Philly, we heard Ash Coleman, and Paul Holland speak.
  • Andreas Grabner will be speaking to us in April.
  • I've been trying to recruit Lisa Crispin since last summer to give a quick Q & A in a webinar to us, but we've haven't been able to do it yet.

This should be fun! If the baby doesn't come early, I think I should be there!


Happy Testing!

-T.J. Maher
Sr. QA Engineer, Software Engineer in Test
Meetup Organizer, Ministry of Testing - Boston

Twitter | YouTubeLinkedIn | Articles

March 8, 2018

Ministry of Testing - Boston: An Origin Story

For most of my twenty year career, I have been searching to become a part of a software testing community. To find myself running one after so long of a search absolutely astounds me. 

Ever since I became the Meetup Organizer of the Ministry of Testing - Boston I have been having the time of my life! I really have given my all to the group, having a heck of a lot of fun planning events, meeting people, and trying to build a community of software testers here in Boston. I love the challenges of growing the membership, running fun social media campaigns, finding interesting speakers, and making connections here in Boston. And all of this has been in the past year! 

So much has happened since we moved from being the Greater Boston QA and Testing Group to under the umbrella of Rosie Sherry and Richard Bradshaw's Ministry of Testing:

February 12, 2018

Are You a Gauge Expert? How Do You Graft On a Fluent Selenium-Ruby Framework?

Are you an expert in Gauge, the BDD framework? ( See a Brief Overview of Gauge ).

I have a question: How do you work with selenium-ruby?

I was planning on working towards what Dave Haeffner has in ElementalSelenium.com creating a library of:
I am brand-new to Gauge and using Selenium-Ruby. So far I only have used Selenium-Java.

It looks like Gauge strongly advocates against page objects calling them an Anti-Pattern. Er... Um... burying a page's locators in code, as they do in the blog makes me worried. I am looking for other solutions.

February 10, 2018

"How Machine Learning Helps Test Software" - Ministry of Testing - Boston - Feb. 6, 2018

On Tuesday, February 6th, 2018, the Ministry of Testing - Boston was invited by Mabl to hear John Kinnebrew and Sergei Makar-Limanov describe how mabl "uses machine intelligence to automate visual insights and make tests more adaptive".

With their AI, you can train mabl to go on a "user's journey". Much like Selenium IDE, the record-and-playback device, you walk the agent on what you as a tester would like it to focus on. What you want it to know. What you want it to ignore. It then learns and adapts, learning how you like to test.

Their product should be launching a free public beta in a few weeks. I can't wait to try it out!

Thank you so much, mabl for having us!

Intelligent Testing with mabl: Adaptive tests and automated visual insights
John Kinnebrew and Sergei Makar-Limanov
February 6th, 2018


About John Kinnebrew:

https://johnkinnebrew.com/

"John is building intelligent tools that enable developers to create better software at mabl. He received his B.A. in Computer Science from Harvard University and his Ph.D. in Computer Science from Vanderbilt University. His research interests include machine learning, combinatorial optimization, intelligent agents, and coordination in multi-agent systems.

"At Bridj, he led the research and data science group with a focus on machine learning and AI optimization techniques applied to transportation modeling, prediction, and optimization for improving mass transit. His research at Vanderbilt focused on the design of intelligent pedagogical agents and machine learning techniques to model important learning behaviors, including metacognition and self-regulated learning strategies, from activity traces of student interaction in educational systems".


Happy Testing!

-T.J. Maher
Sr. QA Engineer, Software Engineer in Test
Meetup Organizer, Ministry of Testing - Boston

Twitter | YouTubeLinkedIn | Articles

February 5, 2018

Introduction to Vulns, Common Vulnerabilities and Exposures, the CVE List, and the National Vulnerability Database

Whenever I find a software testing position in a field in which I am unfamiliar, I try rounding up all resources I can. In my security testing research, I found a syllabus for Tufts University's COMP 116: Introduction to Computer Security course offered Spring of 2018. Just my luck! The instructor for the course posted the entire syllabus and required reading material online, including a copy of a wonderful slide deck for a presentation on an Introduction to CVE, CWE, and the Top 25 given by Steve Christey Coley, creator of the term, CVE -- Common Vulnerabilities and Exposures.

What is a Vulnerability?

According to CVE.MITRE.org, in their terminology section, "a vulnerability is a weakness in the computational logic (e.g., code) found in software and some hardware components (e.g., firmware) that, when exploited, results in a negative impact to confidentiality, integrity, OR availability. Mitigation of the vulnerabilities in this context typically involves coding changes, but could also include specification changes or even specification deprecations (e.g., removal of affected protocols or functionality in their entirety).

"Examples of vulnerabilities include:
  • "phf (remote command execution as user "nobody")
  • "rpc.ttdbserverd (remote command execution as root)
  • "world-writeable password file (modification of system-critical data)
  • "default password (remote command execution or other access)
  • "denial of service problems that allow an attacker to cause a Blue Screen of Death
  • "smurf (denial of service by flooding a network)"
MITRE, a not-for-profit in Bedford, MA, maintains the Common Vulnerabilities and Exposures (CVE)® List.