May 31, 2017

Build a Basic Appium Framework: Download the tests and run them on your own MacBook!

This is part five of of a seven-part blog series. Care to go back to the beginning?

Now that we have set up a rudimentary framework, now it's time for you to download the framework we have created onto your own local machine. We will be using IntelliJ's built in feature... But you could easily use GitHub Desktop or could even use Git.

... Do you have a GitHub account? Get one! Then go through the tutorials they show you. They can teach you more than this blog ever could.

May 30, 2017

Build a Basic Appium Framework: Set up the Page Objects, Page Factories and Tests

This is part four of of a seven-part blog series. Care to go back to the beginning?

Now, let's wrap things up by setting up a few Page Objects, add the Page Factory pattern to these building blocks we are creating, and then compose the test we designed all the way in Part Two.

BeforeSuite and AfterSuite Annotations

First things first... Remember how we made in the last chapter installing and launching the app itself the test?

Let's change that, placing it in a @BeforeSuite annotation from TestNG.

May 20, 2017

Build a Basic Appium Framework: Install and Launch an App Using Desired Capabilities

This is part three of of a seven-part blog series. Care to go back to the beginning?

INTERLUDE: Overheard at my workplace... 

"Now, type on the next line, Capital-D, DesiredCapabilities, one word! Then space, the word 'caps', space, equals sign, the word 'new', Capital-D DesiredCapabilities, one word! Open-parentheses, then close-parentheses, semi-colon.

"... On the right side of the equation, we just declared a new instance of the class DesiredCapabilities, part of the Selenium WebDriver library. To the left of the equation, we are placing that value in a variable we are calling "caps", and declaring that also to be of type DesiredCapabilities...

"... Why is the word DesiredCapabilities underlined in red in our editor? We haven't imported the library into our '' class. On the MacBook, it is CTRL+Enter to import. Press those keys at the same time right after you see the DesiredCapability IntelliJ tooltip. That is IntelliJ IDEA's 'Intellisense' feature..."

So far, I have spent two half-hour pair-programming sessions attempting to train a manual tester on my team how to do automation development. It's not exactly the blind-leading-the-blind, but it is pretty darned close.

I've only been doing automation development for the past two years, hopping around from Selenium WebDriver + Java at Fitbit, Nightwatch Js + JavaScript + NodeJs for a few months at Good Start Genetics. And I only have been teaching myself Appium since March since I signed up for this six month contract at Stop & Shop's parent company, where we are designing the next generation of mobile apps for Stop & Shop, Giant Food, and Martin's.

I have been working really hard to prove my worth over the past three months as a contractor:
  • Checking to see if we can used a favored automation tool used at this company, SerenityBDD, for mobile apps. (Answer? There really isn't that much documentation or support on it). 
  • Exploring Appium Desktop, using that as a teaching tool to explain setting up an Appium environment
  • Putting together the basic Appium framework 

My latest pet project is seeing if through one-on-one training I can get a manual testers to be able to design their first automated test, then add it to my basic test framework in a pull request... all in just ten half-hour sessions.

One roadblock, besides the fact I only started teaching myself Appium + Java in March when I was hired for this contract position? I can't shake this cold I caught two weeks ago, and I keep on losing my voice. My voice is a bullfrog croak and end up shouting in my trainee's ear too loudly as I try to excitedly improvise a lesson for my first test subject, a former SysAdmin who now is a manual tester on our project. He has some tinkering in Java, but not much.

"Okay -- brace yourself! This next code block will contain a lot of typing..."

Rule Number One: Trainees have to type everything out. Every semi-colon. Every statement. Every code block.

Rule Number Two: No wizards except the first one to set up the initial project. I walked him through creating a new Gradle + Java project with IntelliJ IDEA with the New Project Wizard. How to create a new directory off of the root directory called "src". How to create a sub-directory called "test". And another one called "java".

Rule Number Three: Trainees have to do their own searching. Do we need to import a new Java library into our project? I tell the trainee to Google the word "Maven Repository". I describe to him how to go to and search the site for a third party dependency for Appium's Java-Client library. I tell him to copy-and-paste the code from the "Gradle" tab and back into our build.gradle file, in the 'Dependencies' code block.

Rule Number Four: I saw on Twitter recently this question by a beginning programmer:

  • Is it okay to copy-and-paste code? 
  • To copy? Yes. To paste? No.
... I am trying to have the trainee follow this dictum.

... Okay, enough about work. Let's get back to learning about DesiredCapabilities, where we match the Appium Server that is running with the Android emulator that is running. Three questions though...

May 18, 2017

New published article! "Coding is key to a test automation career: Are you prepared?"

I just published my fourth article for TechBeacon!

Coding is key to a test automation career: Are you prepared?

Want to know all the resources I have used to study automation development? Give it a read!

As Always .... Happy Testing!
-T.J. Maher
Twitter | LinkedIn | GitHub

// Sr. QA Engineer, Software Engineer in Test, Software Tester since 1996.
// Contributing Writer for TechBeacon.
// "Looking to move away from manual QA? Follow Adventures in Automation on Facebook!"

May 17, 2017

How to create and launch an Android emulator from Android Studio

Today, let's walk through how to create and launch an Android emulator with Android Studio.

What does an Android Emulator Consist Of?

"The Android Emulator runs a full Android system stack, down to the kernel level, that includes a set of preinstalled apps (such as the dialer) that you can access from your apps. You can choose which version of the Android system you want to run in the emulator when creating AVDs.

"The Android system images available through the AVD Manager contain code for the Android Linux kernel, the native libraries, the VM, and the various Android packages (such as the Android framework and preinstalled apps)". -, Run Apps on the Android Emulator

Do You Have Android Studio Downloaded?

First things first! Do you have Android Studio downloaded and installed?

May 16, 2017

Build a Basic Appium Framework: Design a Basic Test, Examining Mobile Elements

This is part two of of a seven-part blog series. Care to go back to the beginning

Last blog post, we reviewed installation and setup. For this one, let's write a simple mobile automation test, for this app, then investigate all mobile elements involved, with Appium Desktop.

The app we will be testing, ApiDemos-debug.apk

Our Basic Test:
  • Fire up the app, make sure the title on the first screen says “API Demos”
  • Select the “Text” button. Make sure that “LogTextBox” appears as an option.
  • Select “LogTextBox”. Make sure that the “Text/LogTextBox” header appears.
  • Select the ADD button.
  • Assert that the words “This is a test” appears in the panel.

May 15, 2017

Build a Basic Appium Framework: Review How to Inspect Mobile Apps with Appium Desktop

For this next blog series, we will be building a basic Appium Framework built on top of the information gathered in the Learning Appium Desktop series. This basic mobile automation test framework we will be constructing will consist of:

  • Appium Desktop: To investigate the app we will be writing automated tests for, and to start up an Appium server on our local machine. ( Official GitHub site
  • An Android Emulator: Created by Android Studio and the Android Virtual Machine (AVM) Manager, connected to your local computer with the Android Debug Bridge ("adb"). ( Official Developer.Android.Com site on emulators )
  • The code will be written in the Java Client version of Appium using a MacBook and IntelliJ as an Integrated Development Environment (IDE). Although Android Studio, IntelliJ, and Android .apk files run on both Windows and Macs, the next version of this project will consist of emulated iPhones, iPads and Apple .ipa files use XCode, which (as far as I know) doesn't work on Windows machines. ( Official Github for appium/java-client )
  • Tests will be kicked off using TestNG. I like the annotations and the built in ability to have parallel tests running. We won't explore it in this particular series, but we will later. ( See the official TestNG site ).  
  • It will use Hamcrest, a Java matcher program in order to create very readable tests. (Official site for )
I will be attempting to finish code walkthrough over the next two weeks on a Monday / Wednesday / Friday publishing schedule.

May 14, 2017

Building a Basic Appium Mobile Testing Framework

This weekend, I finally wrote my first Appium framework! I've been wanting to do that for a while! It uses Appium + Java + TestNG + Hamcrest + the Page Object Pattern + Page Factories.

ApiDemos-debug.apk is the application under test. Check out the framework at my GitHub site!

I am halfway finished through a code walkthrough I can place on my blog, a series in five parts. It should be ready in a few weeks. The goal is to give manual testers a glimpse in how an Appium framework could be created. It'll have instructions on how to download and run the tests.

Happy Testing!

-T.J. Maher
Twitter | LinkedIn | GitHub

// Sr. QA Engineer, Software Engineer in Test, Software Tester since 1996.
// Contributing Writer for TechBeacon.
// "Looking to move away from manual QA? Follow Adventures in Automation on Facebook!"

May 12, 2017

Tues, June 13th: Book Talk: Eran Kinsbruner, The Digital Quality Handbook: Guide for Achieving Continuous Quality in a DevOps Reality, in Cambridge, MA

Come hear Eran Kinsbruner, Mobile Technical Evangelist at Perfecto Mobile, talk about his just released book, The Digital Quality Handbook: Guide for Achieving Continuous Quality in a DevOps Reality, just released on April 28, 2017!

Perfecto Mobile will be sponsoring this Ministry of Testing - Boston event. Pizza and soda will be served.

About the The Digital Quality Handbook:

According to Amazon:
"As mobile and web technologies continue to expand and basically drives large organizational business in virtually every vertical or industry, it is critical to understand how to take existing release practices for mobile and web apps to the next level, including software development life cycle (SDLC), tools, quality, etc. Organizations which are already enjoying the power of digital are still struggling with various challenges that can be related to many factors, such as:

May 9, 2017

Tues. May 23rd: Moshe Milman, COO of Applitools will be giving a talk to Ministry of Testing - Boston:

We have a special guest on Tuesday, May 23rd coming to speak to the Ministry of Testing - Boston!

Moshe Milman, COO and co-creator of Applitools will be giving a talk to the Ministry of Testing - Boston about the Best Practices for Responsive Web Design. This event will be sponsored by Cengage Learning. Please RSVP only if you are planning to attend so we can get an accurate headcount when it comes to refreshments.

Where to Meet:

Cengage Learning is a twelve minute walk from South Station. It is at 20 Channel Center Street, Boston, MA.

May 7, 2017

What happens when you ask the Twitterverse: "How Can a Manual Tester Switch To Automation?"

So, I asked the Twitterverse a question... How Can Manual Testers Switch to Automation? ... Here are the responses I received from:
  • Rosie Sherry and Richard Bradshaw, Ministry of Testing UK
  • Jason Huggins, creator of the first version of Selenium, founder of Sauce Labs and Tapster.
  • Alan Richardson,
  • Dave Haeffner,
  • Bas Dijkstra, author of the blog and a free open-source workshop on REST Assured.
  • Brendan Connolly, author of the blog AssertThis!
  • Angie Jones, from AngieJones.Tech.
  • Jim Holmes, from

May 4, 2017

Brian Jordan, Automated Testing for the Non (and FUTURE!) Coder: Notes from his talk with the Ministry of Testing - Boston

Do you have a cool software testing technique that you would like to share with an appreciative audience? Have you been working with a new automation tool, and want to share your thoughts about it? Come give a talk to the Ministry of Testing - Boston! We meet twice a month all around Cambridge and Boston, Massachusetts.

How can you become a speaker for our group? Just ask!

On Tuesday, May 2nd, Brian Jordan, formerly from Code.Org talked about techniques used to test the lesson plans he was generating to allow kids from Kindergarten to Sixth Grade to learn how to code.

Thank you, Moshe Milman, the COO of Applitools for sponsoring that night's food and beverage! I still need to confirm the location for your talk to us in two weeks.

And thank you so much, Tomer from iZotope for letting our group crash at your place once again! If it wasn't for you, we wouldn't have a Meetup!