November 8, 2021

The Cheezy Internet: Composing tests using Cucumber and Gherkin

This is fourth in a series of blog posts. Care to go back to the beginning?

Following along with Jeff "Cheezy" Morgan's eBook, "Cucumber and Cheese: A Tester's Workshop" (2017), after setting up a development environment, we started creating in Ruby + Watir the basic building blocks for an automated test framework, as we saw in the last Adventures in Automation blog entry. 

Instead of going into great detail testing against the complex test site Jeff uses in Chapter 4: Cucumbers and Puppies of is book, with Sally's Puppy Adoption Agency, we are using the simpler test site, The-Internet https://the-internet.herokuapp.com/login, by Dave Haeffner. 

This blog post will explore scaffolding a site and composing acceptance tests using Cucumber and Gherkin. 

Scaffolding a Site Using TestGen

It's always a challenge for me when creating a new project to figure out where everything should go. What should the folder and file structure be? Luckily, Jeff Morgan created a Ruby gem called "testgen" which solves all of these problems. 
  • Change the directory to the src folder in your home directory: cd ~/src
  • Pick a name for your project, such as "cheezy_internet"
  • Install Jeff Morgan's Ruby gem testgen on your local machine: gem install testgen 
  • Use the Ruby gem testgen to create a new file hierarchy: testgen project cheezy_internet 

November 7, 2021

The Cheezy Internet: Writing Ruby + Watir tests for The-Internet

This is third in a series of blog posts. Care to go back to the beginning?

Last blog entry, based on Jeff "Cheezy" Morgan's LeanPub book, "Cucumbers and Cheese: A Tester's Workshop", we set up our local machine, wrote and executed our first Watir program. 

Based on his book, we are going to attempt to sketch out and write our first test against Dave Haeffner's sample login page on The-Internet at https://the-internet.herokuapp.com/login.

The-Internet / Login Page


Drafting a Test 

A sample test for The-Internet / Login could be:
  • Go to https://the-internet.herokuapp.com/login
  • Enter tomsmith into the username textbox.
  • Enter SuperSecretPassword! into the password textbox. 
  • Press the Login button. 
  • If the Secure Area page does not show "'Welcome to the Secure Area", fail the test.

November 6, 2021

The Cheezy Internet: Installing Ruby + Watir + Chromedriver + VS Code on Windows 10

This is second in a series of blog posts. Care to go back to the beginning?

For this exercise, we will be setting up a Windows 10 box for use as a development machine.

Macbooks are amazing machines. I love coding on them. Using the Mac Terminal in Homebrew. Dressing them up with decals, such as the glasses-and-tie decal my wife bought for my very first work laptop back at Fitbit-Boston.

Apple Logo Dressed in glasses and a tie
Love dressing up the Apple logo!

I definitely would not recommend using your work machine, if you have one, for anything but work and work-related activities. 

The problem is that when it comes to non-work related programming activities, it can leave for me, well, less glamourous and sparkly alternatives.  

My home computer always has been a Windows Desktop, a big ole workhorse to store the family photos and videos, ancient video games like the original StarCraft, old blog posts, articles, and essays. But they can be so hard to set up sometimes with the toolsets I need to put together an automation framework. 

Based on the information in Jeff "Cheezy" Morgan's LeanPub book, "Cucumbers and Cheese: A Tester's Workshop" (2017), we will start setting up our local machine. 

November 5, 2021

The Cheezy Internet: Creating a Ruby + Watir + Cucumber automation framework with Jeff Morgan's Page-Object gem

Greenfield projects have been rare in my automation development career. The programming language, the toolsets that help craft the automation frameworks, the methods that interact with the pages of the web  application under test, all have been selected long before I joined the software development team. 

My job as an automation developer is to get up to speed on the automation framework as fast as possible. To climb the steep learning curves quickly, I have been creating little toy projects, ever since my first automation development job at Fitbit-Boston back in 2015. Doing this, I get explore the tools and technologies used for automated testing, using similar source material testing against a simple test site.

Our source material for this current exercise will be Jeff "Cheezy" Morgan's LeanPub book, "Cucumbers and Cheese: A Tester's Workshop". Even though "Cucumbers and Cheese" was written in 2012 and last updated in 2017, it contains a treasure trove of information for beginning automation developers, walking the reader through building an automation framework in Ruby + Cucumber + Watir + Jeff's page-object Ruby gem. Jeff's application under test is a mock site, the Puppy Adoption Agency at http://puppies.herokuapp.com/

Our application under test for this project will be an old favorite of mine: The-Internet at https://the-internet.herokuapp.com/, created by Dave Haeffner. Dave Haeffner is the author of the SeleniumGuidebook.com -- which comes in C#, Java, JavaScript, Python, and Ruby editions -- and the very helpful blog ElementalSelenium.com.

Next week, we will start using the information in "Cucumbers and Cheese" to start building an automation framework, starting with setting up a test environment. 


Happy Testing!

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

Twitter | YouTubeLinkedIn | Articles

November 4, 2021

Just purchased a new automation development book, Cucumbers and Cheese: A Tester's Workshop

This morning, I just purchased Jeff "Cheezy" Morgan's LeanPub book, "Cucumbers and Cheese: A Tester's Workshophttps://leanpub.com/cucumber_and_cheese . 

Although this book came out in 2012 and was last updated in 2017, the Gherkin + Ruby + Watir + Page-Object Ruby Gem framework described was the basis of the initial framework my workplace uses. 

Related Links: 
... Can't wait to read it! 

About the Book:

"In Cucumber and Cheese, Cheezy shares the concepts that help teams succeed with ATDD (aka
BDD, story test-driven development, specification by example, business-facing tests that guide
development, take your pick). And he does this the best possible way - with examples. You can
work the examples along with Cheezy, who makes them accessible even to people with not-so-much
coding experience.

"Cucumber and Cheese isn’t just for web developers. The book works through examples for web
services, mobile apps, XML, native windows apps. You’ll even learn how to create test data by
example.

"The book includes essential seekrits such as how to handle Ajax and that pesky waiting for events
to occur. Cucumber and Cheese is soup to nuts, from general principles like page objects and Don’t
Repeat Yourself, to specifics for Rails developers on RSpec matchers and ActiveRecord reference
material.

"Cheezy has a gift for making you enjoy yourself so much, you might forget you’re learning
something you thought would be hard. Lots of examples! And puppies!"



About the Author: 

"Jeff “Cheezy” Morgan has been teaching classes and coaching teams on agile and lean techniques since early 2004. Most of his work has focused on the engineering practices used by developers and testers. For the past few years, he has experienced great success and recognition for his work in the area of Continuous Delivery.

"He is based out of Toronto and focused on bringing Industrial Logic’s passion for technical excellence, modern agile, and lean product management to the Canadian market. He is the author of Cucumber and Cheese, A Testers Workshop.

"You can meet him at most of the conferences around North America during the year or follow him on Twitter @chzy".


Happy Testing!

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

Twitter | YouTubeLinkedIn | Articles

October 2, 2021

Long time no hear!

Hey there! It's been a while. How have you been? 

It's been a rough year, hasn't it? 

Since we last talked, a global pandemic started, I lost a job, found a new job, found a new house, moved into the new house, got vaccinated for COVID-19, helped my in-laws move in, found out the new job wasn't really an automation development job, quit that job, the family caught mild cases of COVID-19, and started a brand new job last week.

There just hasn't been any mental energy left over to blog. 

When my three year old son has been in daycare, I am in work-mode. 
When my son is home, I have been in Dad-mode. 
I just haven't been in blogger mode ...

... Until now. 

I think life is more settled now. 

I think I can start blogging again, now that I have an automation development position to blog about.

See you online! Feel free to ping me on Twitter at @tjmaher1.

And, as always .... Happy Testing!

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

Twitter | YouTubeLinkedIn | Articles

August 8, 2020

Exploring WebdriverIO - Installation

Over the past five years, I've constructed many automation test frameworks, both tinkering here at home and creating ones on-the-job. 

For this next series of blog entries, I will be exploring Webdriver IO Version 6, which uses JavaScript, Node Js, and the Node Package Manager (NPM). The only problem? I last used this particular toolset back when I was working on a Nightwatch JS project four years ago. So, here it goes! 

The WebdriverIO robot


Related Links: 
First up: Installing WebdriverIO!

June 9, 2020

The next step in my automation development journey


Although I received my offer letter back on June 3rd, for a Software Test Engineer position at Verily (formerly Google Life Science) it was still thrilling to see in my Inbox:

"Welcome to Google: Hi Thomas Maher, We're so excited for you to join us at Google/ Alphabet".
"Email: Onboarding at Google"
My automation journey started, as I mentioned a few years ago, when I was I picked up the book "How Google Tests Software (2012)".

June 4, 2020

Hello, Verily! Can't wait until June 15th!

Starting June 15th, I will be a Software Test Engineer for Verily Life Sciences!

Verily.com

"Verily's mission is to make the world’s health data useful so that people enjoy longer and healthier lives. The company was launched in 2015 and is a subsidiary of Alphabet.

"Verily develops tools and devices to collect, organize and activate health data, and creates interventions to prevent and manage disease. The company partners with leading life sciences, medical device and government organizations, using deep hardware, software, scientific, and healthcare expertise to enable faster development, meaningful advances, and deployment at scale".

This is so exciting. I can hardly wait!!
-T.J. Maher
Sr. QA Engineer, Software Engineer in Test
Meetup Organizer, Ministry of Testing - Boston

Twitter | YouTubeLinkedIn | Articles

April 15, 2020

Why hire me as an SDET? Some recommendations.

As you may have seen in my last post, the workplace I have loved had a reduction in force. I made a lot of friends at Threat Stack, people I loved working with and hanging out with. I am really going to miss them.

I am now looking for a new full-time perm SDET role in the Boston role. Why hire me as an SDET as your company? Here are a few recommendations from the people I worked for, worked with, and trained:


April 14, 2020

SDET looking for full-time opportunities in Downtown Boston

Anyone know of any SDET (Software Development Engineer in Test) positions in Downtown Boston? I am now looking for new employment.

I now have five years experience in the automation development space. I am familiar with:
  • Creating and demoing automation framework proof-of-concepts
  • Interviewing stakeholders to validate business needs are met
  • Leading discussions on what makes up a high value test
  • Setting up code reviews with developers
  • Iterating through development stages
  • Customizing reporting and logging
  • Configuring tests to be run continuously
  • Training fellow automation developers on how to add to the finished framework. 
  • See samples of Programming Projects I have done
I have experience as a:
I have been a QA Engineer since 1996. Seeking full-time employment in Boston, MBTA accessible.

And here's my GitHub and my LinkedIn Profile!

Happy Testing!

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

Twitter | YouTubeLinkedIn | Articles

March 24, 2020

New article on the Threat Stack blog: How to Write an Automated Test Framework in a Million Little Steps

A new article of mine was just published on the Threat Stack blog, dealing with all the research, requirements gathering, and analysis I performed when I was drafting the first version of an automation framework testing our web application, the Threat Stack Cloud Security Platform.

The article is called: How to Write an Automated Test Framework in a Million Little Steps. Enjoy!

So far, I have written for Threat Stack:

... And I was interviewed for the article, Current Trends in Automated Software Testing. Now you know why I haven't had a chance to post to this blog in a while. Work has kept me busy, busy, busy!

Happy Testing!

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

Twitter | YouTubeLinkedIn | Articles

November 15, 2019

November MOTB Lightning Talks are now on YouTube!

Miss the Lightning Talks on Wednesday for the Ministry of Testing - Boston

Have no fear! They were recorded and are now on YouTube: https://www.youtube.com/playlist?list=PLsiNNDAR76piGnQ0pHSUdftFiMa8U1FDm

Thank you Bertold Kolics, Event Organizer for the November Meetup, for handling all video recordings! 

November 12, 2019

Wed Nov 11, 2019: Come visit Mabl's new office tomorrow for an evening of lightning talks!

Come visit Mabl's new office tomorrow for an evening of ten-minute lightning talks! Come mingle starting at 6:00 pm, and help yourself to some refreshments, provided by Mabl.com, our host and sponsor for the evening. Thank you, Lisa Crispin and Bertold Kolics of Mabl, our group's newest Event Organizer, for setting this event up for us!
  • Location: Mabl, 101 Arch Street, Floor 16, Boston, MA
  • Time: Wednesday, November 13, 2019, 6:00 PM to 8:00 PM
Want to attend? Sign up here! https://www.meetup.com/ministry-of-testing-boston/events/265871045/

October 23, 2019

Five Tips On How Testers Can Collaborate With Software Developers

Previously Published August 27, 2019 on the Threat Stack blog, based on the TestingGuild.com talk I gave back in June 2018, How to Work With Developers.

Whenever I join a new team, my first task is fostering and nurturing a good working relationship with the developers. Why? If there is good chemistry between testers and developers, the quality of work improves as the quality of communication increases.

The relationship between developer and tester shouldn’t be one of artist and art critic. Rather, it should be like the relationship between a writer and a copy editor, where each contributes to the quality of the final product.

Developing a good working relationship with developers can be tricky. I am really fortunate working here at Threat Stack where my work is valued and my ideas are appreciated, but in my career — like many of you — I have had my struggles.

With that in mind, here are five tips that I’ve found helpful in nurturing and developing relationships with my developer teammates.

October 17, 2019

10 Automated Testing Tools That Threat Stack Uses — and Why

Previously published on the Threat Stack Blog, September 19, 2019, co-author Laura Haiduck. 
All software development projects, whether they’re large or small, can benefit from well-planned and well-executed testing. It’s your way to ensure that the software you’re developing performs as expected and delivers value to the customer. More important — given the nature of our current cyber landscape — well-executed testing is your way to ensure that your software doesn’t ship with errors or vulnerabilities that could compromise its integrity. In a word, good testing lets you pass on performance value to customers — while also providing them with underlying security.

At Threat Stack, we have a complex, full stack development environment that requires a great deal of planning and decision making within the Test Engineering Team to make sure that all the functional areas of our platform are being tested effectively and efficiently. This includes decisions about what testing tools to use, since the right ones allow us to introduce automation as well as speed, repeatability, consistency, and accuracy of results.

September 12, 2019

Are you sure the buses are still listed? Interacting with APIs with Ruby + NET::HTTP + Gauge

This is Part 2 of 2 of a blog series. Care to go back to the beginning

There are many different Ruby libraries that allow you to interact with an API:

  • Net/Http: The HTTP client built into Ruby standard library. 
  • Httparty: Built on top of Net/Http by John Nunemaker, you can GET the HTTP Response HTTP Code, Response Message, and the HTTP Headers with one call. The Google Group was last active in 2017. 
  • Faraday: Also allows you to get the status, headers, and body, allowing you a bit more to customize the HTTP request
  • Rest-Client: a "simple HTTP and REST client for Ruby, inspired by the Sinatra’s microframework style of specifying actions: get, put, post, delete".
For this sample project, where we are simply getting data from the MBTA API, we will use:

  • Net/HTTP to get data from the API
  • The JSON library to parse the data
  • The test/unit library to assert that the expected values and the actual values match up
  • ThoughtWorks Gauge as the test framework. 

September 4, 2019

Are you sure the buses are still listed? Setting up data-driven API tests with Ruby + NET::HTTP + Gauge

The Massachusetts Bay Transit Authority (MBTA) operates a series of bus lines, whose information is accessible through their API, https://api-v3.mbta.com/. How could you test that a sampling of these bus lines are still listed?
  • Route 210  | Quincy Center - Fields Corner           
  • Route 212  | Quincy Center - North Quincy           
  • Route 220  | Hingham Depot - Quincy Center         
  • Route 222  | East Weymouth - Quincy Center         
  • Route 230  | Montello Commuter Rail Station - Quincy   
  • Route 236  | South Shore Plaza - Quincy Center
Sure, you could go to the MBTA website and search for the bus route at https://www.mbta.com/schedules/bus but, as we saw in our project Are You Sure The Bus Line Is Still Listed?, what is best for humans is not best when creating an automated test. 

With this project, we are going to use the built-in Ruby Library NET::HTTP to interact with the API, and Thoughtworks Gauge to set up the test framework, and we are going to make the tests data-driven, putting the information we need to verify in a table.

Related Documentation: 

August 12, 2019

Come see Angie Jones, fresh from her world tour at the Ministry of Testing - Boston Meetup on September 23, 2019

Angie Jones, International Keynote Speaker, blogger at angiejones.tech, Director of TestAutomationU.com is on a world tour for her latest talk Visual Validation for Test Automation:
Live or work in Boston? Come meet Angie Jones in person on Monday, September 23rd, 2019!
Image result for angie jones
Angie Jones


Sign up, here!
Thank you, http://Applitools.com for having Angie speak to us!
Thank you, http://SmartBear.com for hosting!


Happy Testing!

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

Twitter | YouTubeLinkedIn | Articles

July 19, 2019

My free course "Introduction to Capybara" is now online!

I remember being so impressed when I first heard about Test Automation University, the latest project by Angie Jones. A free online university, sponsored by Applitools, where subject matter experts in the software testing field created tutorials? Yes, please! Finding up-to-date information on automated testing can be an exercise in frustration.

Imagine my surprise when a few weeks after TAU was launched, Angie Jones got in touch with me back in February: Did I want to create a course for Test Automation University?

I decided my topic would be on Capybara, the Selenium WebDriver wrapper I used to put together the UI Automation framework at work last year. It took a lot of time, effort, and sleepless nights, but after a month of effort, I was able to beat the deadline.

I hope you like it!

Introduction to Capybara
 https://youtu.be/hZjsvTYJIL8
Thank you so much, Angie, for giving me this opportunity! 

I cannot believe all the effort Angie Jones puts into reaching out to the software testing community. She is always on the go, giving lectures, running webinars, and speaking at conferences. 

Angie has been a guest speaker at my Ministry of Testing - Boston Meetup twice:
... I can't wait to see what Angie has in store for the Meetup this fall!



Happy Testing!

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

Twitter | YouTubeLinkedIn | Articles

July 11, 2019

New to coding? Learn Java through Angie Jones' TestAutomationU

Are you a software tester who is new to coding? Don't know where to start?

Angie Jones has released a new Java Programming course on her Test Automation University.

https://youtu.be/Fo2U0o64oVI


The Java course uses the OpenJDK General Availability release of Java 11.

The OpenJDK, the Open Java Development Kit is a free and open-source implementation of the Java Platform, Standard Edition (Java SE). (Get the OpenJDK FAQ).

Since I am using Windows, how I installed it:
  • Download from JDK.Java.Net/Archive/ Java version 11.0.2 LTS version.
  • Extract the Zip File to C:\Program Files\Java, creating a jdk-11 folder. 
  • Set the PATH and JAVA_HOME according to this StackOverflow answer
  • Downloaded and Installed IntelliJ IDEA Community Edition, setting it up with Java 11.0.2. 
I am loving the course! Angie sprinkled her fun and her energy throughout the course.

Here are a few tips taking the course:

  • Expand the course to cover the left side of your monitor, with your IDE covering the right hand side of your monitor. 
  • When Angie goes over code, type what she types, and execute when she executes.
  • Do the outside exercises Angie recommends. 
Passively watching Angie type code will not allow you to learn. Only through you practicing the material will allow things to sink in. 

Happy Testing!

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

Twitter | YouTubeLinkedIn | Articles

June 27, 2019

Five Tips How Software Testers Can Collaborate With Software Developers

Whenever I join a new team, my first task is fostering and nurturing a good working relationship with the developers. Why? If there is good chemistry between testers and developers, the quality of work increases as the quality of communication increases.

The relationship between tester and developer shouldn’t be one of artist and art critic. Rather, it should be one between writer and copy-editor, each contributing to the quality of the product.

Developing a good working relationship with developers can be tricky. Here are five tips for nurturing and developing relationships with your developer teammates.

June 25, 2019

June 4, 2019

Notes: The Ministry of Testing's Introduction to HTTP by Mark Winteringham

Even though I have been a software tester for the past twenty years, I still like taking introductory courses where I can practice going back to the basics.

Right now, I am working through Mark Winteringham's Introduction to HTTP, accessible when you purchase the Ministry of Testing's Professional Membership.


June 3, 2019

Notes: Amber Race, Exploring Service APIs Through Test Automation using Postman

Want to learn about testing REST APIs? Make sure to check out Amber Race's Exploring Service APIs Through Test Automation, part of Angie Jones' free Test Automation University. Amber is a Software Development Engineer in Test at Big Fish Games and blogs about her work at AmberTests.com.



May 30, 2019

My Threat Stack interview: What are the current trends in automation?

Threat Stack, where I work, has started a campaign to showcase on its company blog not just its developers and security analysts, but also its software testers.

I was interviewed for Threat Stack's article, Current Trends in Automated Software Testing: 10 Testing Pros Share Insights Into the Most Interesting Current Trends in Automated Software Testing.
My TLDR version:



... Make sure to read what my co-worker, Carl Robinson has been doing with Docker!

Happy Testing!

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

Twitter | YouTubeLinkedIn | Articles

May 17, 2019

New to Automation? Take a Foundation course at Test Automation University

New to Automated testing? Need to figure out what tests to automate? Who should do the automation work? How to get buy-in from the development team?

These and many other questions are answered in Angie Jones' Test Automation University course, Setting a Foundation for Test Automation.

 

The video course contains over 45 minutes of material covering topics such as:
  • What is your goal for starting a test automation initiative and what is it that you want to accomplish?
  • Who do you envision participating in your test automation initiative and in what capacity?
  • How do you plan for the execution of this strategy?
  • How to get people on board and help them understand their place in the automation strategy
  • How to scale your automation

Registration is free for this course, the current fifteen courses available, and the five courses listed as "Coming Soon".  Also coming soon, ... a course I designed for Applitools Test Automation University: Introduction to Capybara.



Happy Testing!

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

Twitter | YouTubeLinkedIn | Articles

April 19, 2019

Long time no see!

Long time no see! How have you been?

I've been good. My nine-month old son is utterly adorable. My wife and I just love getting on the floor and playing with him. He's now crawling around so fast, we can barely keep up with him! He's also standing, pulling himself up on anything he can get a hold off. Kitchen cabinets. Walls. Shelving units. His Dad's hair. His Dad's ear. And somehow he is sprouting a third and fourth tooth!

Work has been amazing! I cannot believe how supportive everyone has been for this new father! Since we last spoke, I am on a new development team, focused more on the back-end, testing Threat Stack's many microservices that run the SecOps product.

Last year, I was creating a UI Automation framework from scratch, using Capybara + Ruby as a wrapper for Selenium WebDriver, and ThoughtWorks Gauge as a test framework.

To deepen my knowledge of Capybara and Gauge, I created a few demo projects:

Last September, I even volunteered writing a chapter of a software testing book "How to Gauge What Your Tests Are Doing" for Eran Kinsbruner's Continuous Testing for DevOps Professionals.

This year? I wrote an Introduction to Capybara course! It took a few months, and a lot of sleepless nights, but it was worth it. It is still being finished up. Watch this space. More details to come! 


Happy Testing!

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

Twitter | YouTubeLinkedIn | Articles

February 8, 2019

January 31, 2019

Four Years of Adventures in Automation!

When I started this blog, it was before I ever found my first automation development position. This blog was a way for me to keep up the good fight, journaling my experience.

Four years and 321 blog posts later, I have been on teams building testing frameworks in Selenium WebDriver + Java, NightwatchJS + NodeJS,  Capybara + Ruby, and now ScalaTest and Scala. The Programming Projects section of this site captures my experiments with many others.

This blog acted as a springboard for me to start publishing articles, contributing to software testing books, and giving talks at online conferences. You can read more about it in the Media section of this blog.

I don't get as much time to write on this blog as I used to. The main reason?

T.J. Maher and his son, Tommy.
... After work, I seem to be otherwise occupied in baby giggles, baby cuddles, and baby snuggles.

I wanted to thank you, dear reader, for all your help. This blog has been a magnificent conversation started with many a hero in the software testing field. Thank you so much, Alan Richardson, Bas Dijkstra, Jim Hazan, Matt Hutchinson - Testing Curator, Joe Colantonio, Lisa Crispin, and most importantly Angie Jones.

So far, in four years this blog has received 730,089 pageviews, with 70% of the visitors going "Software Testing? Automation? The hell?? This isn't what I Googled!" and promptly going back to wherever they came from.

If you want to drop a line to say hello, I am on Twitter, and I am always online!

Happy Testing!

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

Twitter | YouTubeLinkedIn | Articles

December 21, 2018

Basic Capybara-Gauge: Review the Ruby code with Rubocop

This is the seventh part of a series of blog posts. Care to go back to the beginning

Tinkering with Ruby only for the past year, Rubocop, a "Ruby static code analyzer and formatter, based on the community Ruby style guide" according to their Github site is both a blessing and a curse for someone new to the language. It is blessing that it is so detailed with output. The curse is that if you are new, it is going to take a lot of random Googling to figure out what all the errors thrown actual mean!

There is a lot of content in the Ruby Style Guide...

What is the Ruby Style Guide?

From the Ruby Style Guide README: "This Ruby style guide recommends best practices so that real-world Ruby programmers can write code that can be maintained by other real-world Ruby programmers. A style guide that reflects real-world usage gets used, while a style guide that holds to an ideal that has been rejected by the people it is supposed to help risks not getting used at all—no matter how good it is. [...]

"There are some areas in which there is no clear consensus in the Ruby community regarding a particular style (like string literal quoting, spacing inside hash literals, dot position in multi-line method chaining, etc.). In such scenarios all popular styles are acknowledged and it's up to you to pick one and apply it consistently".


Basic Capybara-Gauge: Add Chrome and ChromeDriver logging capabilities

This is the sixth part of a series of blog posts. Care to go back to the beginning

Want to view JavaScript errors in Chrome? Or see if your Selenium WebDriver instance is throwing any errors? Check out the Logging Preference Capabilities from the Chromium project.

With this article, we will demonstrate how to get these logs set up in your Capybara-Ruby project, and what to add in the spec_helper.rb file we created.

Basic Capybara-Gauge: Setting Up Specs and Step Implementations

This is the fifth part of a series of blog posts. Care to go back to the beginning

So far, we have written test specifications to test Dave Haeffner's The-Internet, and we have set up the Gauge-Ruby environment. We managed to get Chrome to run a simple Capybara test, and figured out how to make the test run in Headless Chrome. Our test we created last time...

specs/Navigation/Navigation.spec
# Navigation: Go to The-Internet Login Page

## NAVIGATION: Visit The-Internet
* LOGIN: Visit the Login Page
* LOGIN: Verify the heading is "Login Page"

... For this entry, we will be building upon that, figuring out how to get our Capybara-Gauge framework to execute the following:

Authorization: Validate logging into and out of The-Internet
  • Scenario #1: Authorization: Successfully log into and out of the secure area 
  • Scenario #2: Authorization: Verify alert error is shown when entering a blank user name and password.

December 20, 2018

Basic Capybara-Gauge: Set Up Headless Chrome

This is the fourth part of a series of blog posts. Care to go back to the beginning

We've come up with test specs for Dave Haeffner's The-Internet. We've set up a Ruby environment to run the tests, and configured Chrome to open the Login page.

With this entry, we will be activating Chrome in Headless Mode, i.e. running Chrome but without a visual interface, allowing the tests to run faster.

About Headless Chrome


According to Eric Bidelman's article, Getting Started with Headless Chrome, the new option of running Chrome in Headless mode started with Google Chrome version 59, released in May 2017.

Before, you had to use something such as PhantomJS to emulate the Chrome browser if you wanted to run Chrome in a place where the processing power to bring up a visual window would be a waste, such as running it with an automated test script running in a continuous integration environment. Now, it is built right in.

December 19, 2018

Basic Capybara-Gauge: Setting Up Capybara to Open a Chrome Browser

This is the third part of a series of blog posts. Care to go back to the beginning

So far, we have written test specifications to test Dave Haeffner's The-Internet, and we have set up the Gauge-Ruby environment.

Now, we need to set Capybara up to be integrated with the Gauge test framework. 

December 18, 2018

Basic Capybara-Gauge: Setup Ruby Environments for The-Internet

This is the second part of a series of blog posts. Care to go back to the beginning

With the last entry, we analyzed the App Under Test, Dave Haeffner's The-Internet and came up with some test specifications. With this entry, we will be setting up the Ruby environment that will be running the Capybara-Gauge tests.

Although I am developing this project on my Macbook with this example, it is possible to install Ruby, Gauge on a Windows Machine.  See my article, Intro to setting up a BDD framework with VS Code + Gauge + Ruby.

December 16, 2018

Video Talk: How Software Testers Can Work With Developers

Joe Colantonio, creator of the absolutely awesome software testing podcast TestTalks.com, started in an entire series of Guild Conferences: The Automation Guild, the Testing Guild, and the AI Guild.

Back in January 2018 I was invited to speak as part of the Automation Guild 2018. I gave a talk How to Pass Coding Interview as an Automation Engineer.

I was invited again to speak for Joe's Testing Guild in June 2018. Although automation is all the rage, sucking up most of the oxygen out of any conversation about testing, I decided to give a talk getting back to basics:

How Software Testers Can Work With Developers
June 20, 2018
https://youtu.be/m3nenJ-hAOM

"T.J. Maher has been a software tester for over twenty years since before the concept of Agile software development existed. He believes the relationship between developers and testers should not be one of artist and art critic. Instead, it should be one of a writer and a copyeditor, each working together to create a quality product. T.J. will be sharing his experiences working with developers pre-Agile, working with them on Agile teams, and his insight gained by shifting to automation development".
Enjoy!

And, as always, Happy Testing!

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

Twitter | YouTubeLinkedIn | Articles

December 15, 2018

Basic Capybara-Gauge: Analyzing The-Internet

Basic Capybara-Gauge: Analyzing The-Internet


For the past year, my job at work has been to create an automation framework that monitors daily our web-based application, putting it through its paces. This project will be showcasing tools and technologies used to compose the framework, but most importantly, the thought process analyzing the site to determine what to test.

Our application under test for this project will be an old favorite of mine: The-Internet, created by Dave Haeffner, author of the SeleniumGuidebook.com -- which comes in C#, Java, JavaScript, Python, and Ruby editions -- and the very helpful blog ElementalSelenium.com.

The tools we will be using:
  • ThoughtWorks Gauge, to set up the tests in a human readable fashion
  • Capybara, to handle interaction between the tests and the browser
  • Ruby, the programming language of the framework
  • Bundler, to help manage Ruby's gem files


December 11, 2018

What software design principles do you use writing UI automation frameworks? Do you use SOLID?

When crafting automation frameworks, do you use SOLID software design principles in your work? If so, could you provide some examples?  

Ever since I've been tasked to create a Capybara + Ruby UI automation framework, I've been reading  books such as Robert "Uncle Bob" C. Martin's Clean Architecture: A Craftman's Guide to Software Structure and Design (2018) and his Agile Software Development, Principles, Patterns, and Practices (2002), trying to glean some insight on how to improve what I am doing.

The SOLID object oriented design principles, a mnemonic created by Michael Feathers based on principles Uncle Bob had collected are a bit beyond me at the moment. Attempting to study about the Single responsibility principle, Open/closed principle, Liskov substitution principle, Interface segregation principle and the Dependency inversion principle, trying to see how I can apply them is giving me a headache.

I fully recommend Angie Jones' webinar, Applying the Pillars of Object Oriented Frameworks to Test Automation for anyone who needs a refresher on Encapsulation, Inheritance, Polymorphic and Abstraction. I wish there was something like this for SOLID design principles!

Here are some of the principles I follow when writing automation frameworks:

DRY
  • Don't Repeat Yourself.  Instead of copying-and-pasting code, I factor out commonly used code snippets, placing the block of code into a library I can then reuse. 

YAGNI
  • You Ain't Going To Need It. Instead of plotting out every single selector on a page that locates a web element in a user-interface, I focus on just what I need for the current two week sprint. Every single time I try to plan ahead, priorities change, shift, reshape, and by the time I finally get back to the prepwork, everything has changed.

Abstraction
  • If there is a Login screen, I create a Login page object, which stores all the locators that interact with the web elements such as the username & password textbox, and the Login button. It also would have a LOGIN method where a test could pass in a username and password and be logged into the System Under Test.

Encapsulation
  • Within Page Objects, I declare public methods that then interact with the private variables storing the selectors for the web elements on the page. 

Inheritance
  • Are there commonly used elements on the page? I create a Base Page Object which contain commonly used methods that other pages can inherit.
These principles? I find them easy to understand and use. SOLID Principles? Not so much.

Any help that you could give would be much appreciated. I will craft a response blog post from the answers I receive. 

Oh, and don't get me started on how lost I am about the Gang of Four's Design Patterns: Elements of Reusable Object-Oriented Software (1994)!



Happy Testing?

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

Twitter | YouTubeLinkedIn | Articles

November 28, 2018

Tomorrow, November 29, 2018: Angie Jones gives a sneak peek on Test Automation University

Angie Jones will be giving a sneak peek at her latest project, Test Automation University!

Register at https://go.applitools.com/181129-Test-Automation-U-Unveiled.html

"Test Automation University is open for enrollment! This free, community-driven educational program identifies, aggregates, and amplifies strategies and techniques helping test automation teams succeed more often. Led by Applitools newcomer Angie Jones, ‘Test Automation U’ will be a vital tool helping people along their path to test automation success.

"In this live session, Angie will unveil the project, how it works, and outline courses from experts like Dave Haeffner, Jonathan Lipps, Amber Race, Joe Colantonio, and Elisabeth Hocke, just to name a few. Angie will also share a sneak peek into her first 7-chapter course, titled "Setting the Foundation for Successful Test Automation", including chapters:
  • "How to Design an Automation Strategy
  • "Future-proofing your Test Automation Efforts
  • "Quantifying and Sharing the Value of Test Automation
  • "And more..."
Happy Testing! And make sure to sign up for Angie Jones' newsletter.

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

Twitter | YouTubeLinkedIn | Articles