August 16, 2017

Stories of Software Testing during the 1990s Dot.Com Boom

I've heard it said, by Gerald Weinberg, when forming  the first team dedicated to quality and testing for NASA’s Project Mercury in the late 1950s as Manager of Operating Systems Development, that every person on his quality team was a computer programmer. The software quality assurance engineer role as we now know it was never meant to be a non-coding one... Decades after, it just happened that way out of necessity.

Although it may be fitting, then, that the lines between development and QA are blurring together, as witnessed by developments at such companies as Microsoft, Google and Spotify, this provides little solace for us QA engineers who once again must navigate a new landscape that market forces have blown together, and confront the new job requirements.
The good thing is that this time around, Dev and QA work are working side-by-side and learning from each other. That wasn't always the case.


Dev and QA: Literally Worlds Apart in the 1990s


Back in 1996  I started out working as a contract consultant in the software industry to see how I might apply my computer science degree. It was the year after "dot coms" and the investors irrationally supporting them entered the fray. I instantly fell in love with software testing as a QA engineer. I loved carefully reading the requirements for the project I was on, and seeing if there were any gaps as I manipulated the web-based product through the browser. It was intriguing, seeing if I could figure out an unplanned path through the system, causing the program to act in unexpected ways or even crash.

Coding was not a job requirement.

Demand for coders had far surpassed the supply. It would have been quite expensive at the time to have teams of developers on standby to investigate how a web-based product operated in Netscape Navigator, Internet Explorer, Opera, and Safari for the Mac and PC. And new browser versions with new features were being released at a rapid pace as Netscape and Microsoft competed to see who would have their way of doing things recognized as the new standard.

To be a QA Engineer, you had to be technologically savvy, smart, diligent, and methodical. You didn't have to have a Computer Science degree. A candidate with an English degree or a history degree involving research did nicely. You had to examine the business requirements and turn them into test plans, sketching out what needed to be tested, test cases that could be reviewed, and then manual test scripts other junior level QA Engineers could execute.
Dev and QA operated quite differently than they do now.
  • DEV and QA didn't work side-by-side. Each discipline operated inside its own department, communicating mainly through the bug-tracking system. QA was a team apart. Months would go by and you might not see a developer. 
  • During this time, QA was a department without a history. Outside training and networking were for developers, not for QA. 
  • Most of DEV and QA were not privvy to the early discussions on what the software product was supposed to look like or how it was supposed to behave.
The main problem was that although projects grew smaller, the development process became too cumbersome. During each phase of the project — Requirements, Design, Implementation, Verification and Maintenance — artifacts and deliverables such as project plans, technical specs and database design documents would cascade down to the next phase of the project in a linear fashion, without the DEV or QA teams being able to give their input. This was dubbed the "Waterfall Method" of Software Development.

Waterfall introduced new problems for QA 


In the waterfall approach to development, business analysts in the requirements phase would draft documents detailing the requirements of the software product they would build, the purpose of the product, a software requirements specification detailing a checklist of business requirements, a high-level description of the system.

This would be handed off to the software architects who in the Design phase would write the blueprints for the product. Each software component would be sketched out, and the data structure of the database would be designed.

In the Implementation phase, the software developers would construct the software product.

Then, in the Verification phase, software testers would create test plans to describe a high-level approach on how to test. Once approved, test cases detailing more on what would be tested, and once those were approved testers would generate test scripts listing step-by-step how they would go about testing the product. Hopefully, by the time the product was ready for testing, the test plans, test cases, and test scripts would all be written.  

In the Maintenance phase, the software product would be released into the wild. The customers would use the product, and any questions, complaints, and other feedback would be gathered to help improve the next version of the product.

There were many problems Quality Assurance encountered with this method.
  • What if the reason a bug occurred was because the spec or the design of the software product was unclear? As a QA Engineer, you could try to independently read through all the previous stages deliverables on your own as they were released, to try to get a feel for the purpose of the software product ... but QA wasn't actively involved until the project was almost finished. 
  • What happens if all the preceding stages took longer than what was scoped out? It would always be easier for the time allotted for QA to be scaled back than to push back the release date. Sometimes the best you could do was to record all bugs found, triage them, and try to get them fixed in the next iteration of the product. 
  • What if there were last minute change orders? Are the test plans, test cases, and test scripts still valid when the official validation period starts? 
Development and Quality Assurance were not then integrated with one another, fostering in some places that I had worked as a consultant an "Us vs Them" mentality.

Agile: Bringing DEV and QA together


Life became better for the QA Engineer under the Agile Software Development Methodology. The same system that was developed to empower software engineers helped empower QA Engineers.
  • Whether we are examining the size and scope of our two week sprints, examining each story we need to complete, or talking in our scrum about what we did yesterday, what we are planning on working on today, we are working side-by-side with developers. 
  • Working side-by-side, DEV and QA can appreciated each others skill sets, and learn from each other, seeing exactly what it takes to code, and what it takes to test. 
As I wrote in How to pass a coding interview as an automation developer, I have personally seen the bar being raised for QA positions. Perhaps we, DEV and QA, can help each other prepare for this future together.


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!"

August 15, 2017

Need your expert opinion for an article: Are unit tests and 100% code coverage enough?

Hello, Dear Reader! I need your expert opinion on a TechBeacon article I am working on... Mind if I quote you?

In business, there is always an urge to do more with less. Save money. Reduce headcount. Increase the bottom line. Improve quality. Trim bloated processes... And as with all businesses, so goes the software business. The problem is that here in Boston I worry that the "bloated process" is interpreted as the role of QA Engineer...

Back in March 2017 at a Ministry of Testing - Boston Meetup, I bumped into Andreas Grabner from Dynatrace, who mentioned something regarding Continuous Deployment that as a QA Engineer for twenty years sent shivers up my spine...

August 14, 2017

New Free SmartBear Webinar: "The State of Software Testing", Tuesday, August 22, 2017

A few months ago, a sponsor of the Ministry of Testing - Boston, SmartBear software, hosted a survey, "The State of Software Testing". Over five thousand people filled out the survey. The results are ready to be revealed!

"Did you know that 63% of testers are responsible for testing both the frontend and backend of their applications? Or that API tests are more likely to be automated than GUI tests?

"Discover what your peers are doing today in testing - the applications they’re building and the techniques they’re using. Learn more about modern test environments and how many teams are at the ‘tipping point’ of shifting left.

"SmartBear collected insights from thousands of developers, testers, and managers worldwide who are passionate about software testing. They openly shared their experiences, insights, and the challenges they face in their day-to-day roles.

"Join a panel of SmartBear experts as they walk through the 2017 ‘State of Testing Survey’ and divulge the key trends and observations we uncovered".

Go to https://smartbear.com/resources/webinars/state-of-testing-2017 and register today!

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!"

July 13, 2017

Notes on Angie Jones, Make Your Automation Behave: Extending Your Framework for BDD (June 28, 2017)

Notes, Make Your Automation Behave: Extending Your Framework for BDD
Given by Angie Jones, held on Jun 28, 2017  
Recording: A Software Test Professionals Webinar (STP)

"When done properly, Behavior-Driven Development (BDD) can drastically improve the communication and understanding of requirements. An additional benefit is being able to utilize the domain-specific language of the requirements to drive test automation. However, like any other automation initiative, when done poorly, this too can fail.
"In this webinar, Angie Jones provides a hands-on technical look into how to:
  • "utilize Gherkin-written scenarios for test automation
  • "write scenarios in a way that promote maintainability and reusability
  • "take advantage of advanced Gherkin functionality such as data tables and objects
  • "tie the scenarios to automation code
  • "incorporate this approach into existing automation frameworks that use the page object model design pattern
  • "share state across multiple steps within a scenario
"Upon completion of this webinar, you’ll have a better understanding of how to:
  • "Enhance your BDD initiative with test automation
  • "Cleanly extend an automation framework to support executable requirement specifications
  • "Support advanced techniques such as data tables and objects within specifications, as well as sharing state through dependency injection".

The Speaker:

Angie Jones"Angie Jones is a Senior Software Engineer in Test at Twitter who has developed automation strategies and frameworks for countless software products. As a Master Inventor, she is known for her innovative and out-of-the-box thinking style which has resulted in more than 20 patented inventions in the US and China. Angie shares her wealth of knowledge by speaking and teaching at software conferences all over the world".

Speaker Contact Details:

Angie Jones – Senior Software Engineer in Test, Twitter
Twitter: @techgirl1908
LinkedIn: Angie Jones
Website: AngieJones.tech

July 12, 2017

Q & A with Angie Jones @ Ministry of Testing - Boston, Tuesday, July 11, 2017

Have you ever been to a film festival where after a film screening the director comes out for a Q & A session? Imagine if we did that with someone from the automated testing lecture circuit? 

Last night, members of the Ministry of Testing - Boston gathered together at Cengage Learning to watch a lecture of automated testing, followed by a live Q & A session by the lecturer.  The lecture for the evening? "The Build that Cried Broken". 

The Speaker:

Angie Jones"Angie Jones is a Senior Software Engineer in Test at Twitter who has developed automation strategies and frameworks for countless software products. As a Master Inventor, she is known for her innovative and out-of-the-box thinking style which has resulted in more than 20 patented inventions in the US and China. Angie shares her wealth of knowledge by speaking and teaching at software conferences all over the world".

Speaker Contact Details:

Angie Jones – Senior Software Engineer in Test, Twitter
Twitter: @techgirl1908
LinkedIn: Angie Jones
Website: AngieJones.tech


Care to read about Angie Jones' recent job search? Read her latest TechBeacon article,
Recruiting diverse engineering candidates: What tech companies still get wrong
at 

July 11, 2017

New MoT-Boston Meetup with Angie Jones tonight!

Right now, I am heading to another Ministry of Testing - Boston meetup. Tonight's special guest will be Angie Jones! 

Like a director hosting a Q & A session at a film festival after a movie has been screened, after watching her April 2017 "The Build That Cried Broken" http://youtu.be/VotJqV4n8ig Angie Jones, newly employed at Twitter, will be giving a talk via webconference. 

We have 20 people signed up. I hope at least 15 show! 

I swear, we have four hundred new members since January 2017 (700 total) and only ten might show on average. I wonder if it is the location, if iZotope or Cengage Learning are too out of the way? 

I have an enormous bag of swag to give away. SmartBear hoodies, pens and stickers. Sauce Labs T-Shirts and bike reflectors. Ministry of Testing stickers and pins. I just have more swag than attendees!

It was a good day today. I gave an hour presentation and demo on this Summer's Appiuum projects. I think it went well!

Here's hoping!

-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!"

July 3, 2017

30 Days of Performance Testing, sponsored by the Ministry of Testing!

From the Ministry of Testing UK Dojo: https://dojo.ministryoftesting.com/lessons/30-days-of-performance-testing

"30 Days of Testing is back! The theme is Performance Testing and this challenge has been kindly sponsored by PerfGuild.

"Below is a list of 30 challenges and a bonus challenge, one for each day of the month. Save it somewhere. Print it out. Stick it on your wall. Let’s do this!"

"The goal is to tick off as many of the challenges as you can. You can do this in your own timeframe, or you can join us in our joint community effort. We will be encouraging others to share their progress from the 1st of July 2017.

"You may have an image to share, a blog post, a video, status update, whatever it is! Come and participate!

"Here is how you can share your progress:




... Would you like to participate? Are you part of the Ministry of Testing - Boston? Use the hashtag #MOTB to signify you are from the Ministry of Testing - Boston.

Thank you so much Joe Colantonio of TestTalks.com and Mark from Ministry of Testing - Philly and all the rest for coming up with this original event!

Go to https://dojo.ministryoftesting.com/lessons/30-days-of-performance-testing and print out the image found, post it on your company's bulletin board. See how many your QA team at work can do!



-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!"

June 26, 2017

Notes from Zero to Continuous Delivery with Jenkins Pipeline and Blue Ocean

On-Demand Webinar: Zero to Continuous Delivery with Jenkins Pipeline and Blue Ocean
Register to watch it online here! https://pages.cloudbees.com/0621-webinar-zero-to-cd-with-blue-ocean-registration

"Jenkins has long been the hub of continuous delivery. Jenkins Pipeline, however, now brings a whole new world of possibilities. This video shows get started with Jenkins Pipeline and implement a complete, practical continuous delivery process from start to finish.

"This webinar shows you how to:
  • "Create a Declarative Pipeline for a Java and Node.js Project with the Blue Ocean Editor
  • "Safely iterate on a Jenkins Pipeline to add Build, Test, Analyze, and Deploy stages
  • "Launch different Docker agents for each stage
  • "Run stages in Parallel to improve Pipeline throughput
  • "Manually control promotion using the "input" step

June 20, 2017

Are you a software tester? Take the State of Testing Survey 2017, by SmartBear!

Tonight was wonderful! The Ministry of Testing - Boston gathered together in Assembly Square, Somerville, MA at the headquarters of SmartBear, maker of automated testing toolsets such as  SoapUI, SwaggerHub, and TestComplete.

SmartBear walked us through their entire testing process... They gave us so much information, it is going to take a few days for me to compile my notes!

In the meantime, drop what you are doing and fill out their survey at https://www.surveymonkey.com/r/smartbear-state-of-testing-survey-social



























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!"

June 18, 2017

My fifth article was published on TechBeacon! "How QA can build quality into your software pipeline"

I forgot to mention... Back on May 30th, my fifth article from TechBeacon was published: "How QA can build quality into the software pipeline"!

TechBeacon always finds the cutest opening graphics for my articles!








... I do prefer my original title, which referred to the changing definition of quality as you moved from being a manual tester to an automation developer.

I can't believe it was a year ago that Rob Mitchell, Managing Editor of TechBeacon gave me a call February of 2016 after I inquired about writing for HPE's online magazine... but I had never written professionally before. What the heck do I write about?

June 17, 2017

Notes from Eran Kinsbruner talk, The Digital Quality Handbook: Guidefor Achieving Continuous Quality in a DevOps Reality (June 13, 2017)

When the Ministry of Testing - Boston met up on Tuesday, June 13th, 2017, that evening's guest was Eran Kinsbruner, Mobile Technical Evangelist at Perfecto Mobile, talk about his book, The Digital Quality Handbook: Guide for Achieving Continuous Quality in a DevOps Reality, just released on April 28, 2017!

Perfecto sponsored the Ministry of Testing - Boston event. Thank you so much for setting up the event, along with the the refreshments, Lindsay!



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:

June 5, 2017

What happens behind the scenes as Appium installs and launches an Android app? Examining and footnoting a log file.

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

Have you ever wondered what is happening behind-the-scenes as Appium launches an app? Well, there is one way to find out...

Today, we will be taking a look at the log files captured in the Appium console, generated after I launch the APIDemos-debug.apk Android app, with the help of Appium, onto an Android emulator.

... Actually, this blog article wasn't written in a day. It took more than a few weekends to thoroughly research everything... and I do mean everything!

There are possible errors or questions on the inner workings on Appium, with insightful statements such as ... "Huh? What's this?" ... They are highlighted in red.

Is there anything I am wrong about? Please let me know! I am a complete novice when it comes to Appium (although, I have been hideously busy).  I only started learning it in March of 2017. The reason I am blogging about this is because I actually want you to comment if I am completely off-base, or if I am error about the inner workings of Appium or the world of Android development.

June 4, 2017

Notes: Automation, Selenium WebDriver, and PageObjects with AndrewBoyer (5/31/2017)

Have you ever wanted to learn about Automated Testing but wasn't sure where to start?

Members of the Ministry of Testing - Boston met last week to listen and bring questions to Andrew Boyer, a Software Developer in Test who has worked at both Google and Amazon. Andrew talked with us Wednesday, May 31st, 2017 about Functional Web Automation using Selenium WebDriver. 

Andrew Boyer, SDET

About the Speaker:

Andrew Boyer has worked in the software industry for more than twenty years, for companies as small as ten people, and as large as Google and Amazon. Working at times as a developer, tester, or even a sales engineer, he focuses now on process improvements and creating automation frameworks. He believes good automation is accessible to all job roles, and improves not just the quality of the shipping product, but also the velocity of the engineering organization.

LinkedIn: https://www.linkedin.com/in/andrew-boyer-4a00685/

June 1, 2017

Moshe Milman, COO of Applitools, speaks to the Ministry of Testing - Boston (5/23/2017)

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

Moshe Milman, COO and co-creator of Applitools gave a talk to the Ministry of Testing - Boston called "Advanced Test Automation Techniques For Responsive Apps And Sites". The event was sponsored by Cengage Learning, a twelve minute walk from South Station in Boston, MA, at 20 Channel Center Street, Boston, MA.

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 'Smoketest.java' 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 Mvnrepository.com 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)". - Developer.Android.com, 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 http://hamcrest.org/ )
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, EvilTester.com
  • Dave Haeffner, ElementalSelenium.com
  • Bas Dijkstra, author of the blog OnTestAutomation.com and a free open-source workshop on REST Assured.
  • Brendan Connolly, author of the blog AssertThis!
  • Angie Jones, from AngieJones.Tech.
  • Jim Holmes, from FrazzledDad.com.
Enjoy!

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!


April 25, 2017

Learning Appium Desktop: Inspecting an app with Appium Desktop

This is Part 6 of 6. Care to go back to the beginning?

So far we have:
  • Learned how to install Appium Desktop which bundles Appium with an inspector we can use to inspect our applications. 
  • Studied how to connect an Android device via USB through the Android Command Line tool adb.
  • Connected to the device via WiFi. 
  • Learned how to set up an emulated Android device.

With this blog post we are going to:
  • Inspect an app with Appium Desktop 
  • Before we need to do that, we need to find an app's Desired Capabilities!

April 21, 2017

Ministry of Testing - Atlanta and Llewellyn Falco crash a MoT-Boston Lean Coffee!

I really didn't expect many people to show up for this month's Lean Coffee at John Harvard's Brewery in Harvard Square. We've been getting around five to ten people showing up since I held the first one back in February. Six people signed up for the Meetup event, so I expected maybe it would be four people in attendance? Me plus three? This time, though, I was in for a surprise!

I've been reaching out to other Ministry of Testing chapters here in the United States. Philly. Portland, Oregon. Atlanta. Likewise, Claire Moss, co-organizer of MoT-Atlanta, while she was attending a Boston area Agile conference, has been looking to connect to other MoT groups. Her motto on her business card? "Using my evil powers for good!"

MoT-Boston meets MoT-Atlanta. It's T.J. and Claire!

April 20, 2017

Learning Appium Desktop: Find the Desired Capabilities: appPackage and appActivity. Bug in AAPT if giving just appName

This is Part 5 of 6. Care to go back to the beginning? Come back in a few days to see the next part!

When I tried running Appium Desktop, I came across some problems. I decided on using as a sample Android app, a pre-compiled one referred to me by an Introduction to Appium using Ruby by Dave Haeffner. https://github.com/appium/ruby_lib/blob/master/android_tests/api.apk
First, I started an emulator using Android Studio. Then, I started Appium Desktop.
Then I pressed: Select Start Server v1.6.4-beta -> Select Start New Session

For Desired Capabilities:
Appium can interact with a mobile app in a few ways:
  • Is the app already on the emulator or actual device? You need to find the package name and the activity name of the app you want to run, and pass that into the DesiredCapabilities.
  • You can pass the .apk into the app field of the DesiredCapabilities, and Appium will install the app itself. You won't have to:  adb -s emulator-5554 install myapp.apk
That didn't work. I noticed a few errors when looking at the Appium Server.

April 19, 2017

Learning Appium Desktop: Setting up Android Emulators with Android Virtual Device Manager, choosing Android operating system version

This is Part 4 of 6. Care to go back to the beginning? Tune in tomorrow to see the next part!

Ever since April 2009, when version 1.5 of the Android mobile operating system was released, the operating systems have been code-named some type of dessert.

Android supports, at the time of this blog post, Android 6.0 (Marshmallow, API Level 23, Released October 5, 2015), Android 7.0 (Nougat, API Level 24, Released August 22, 2016), and Android 7.1.1 (Nougat, API Level 25, October 4, 2016).

We'll be setting up using Android Virtual Device Manager two virtual Android devices.

April 18, 2017

Learning Appium Desktop: Setting up remote devices through WiFi

This is Part 3 of 6. Care to go back to the beginning? Tune in tomorrow to see the next part!

Yesterday, we talked all about connecting Android devices to your computer through a USB cable. What we didn’t cover was that you can also do this through WiFi!

Why is this important?

Imagine that you are an automation developer who wants to test on real devices. Instead of being forced to have each and every device attached to your computer with a tangle of USB cables, you can have all devices locked down in a lab.

With an automation test you can:
  • Install an Android app on a remote device.
  • Start up the Android app
  • Run your test.
  • Uninstall the app.

… All while connected to the WiFi!

April 17, 2017

Learning Appium Desktop: How to Connect To Your Android Device Using the Android SDK, the Android Command Line Tools, and the Android Debug Bridge (adb)

This is Part 2 of 6. Care to go back to the beginning? Tune in tomorrow to see the next part!

Last blog post, we went over how to get the Appium Server running on a Macbook, through the new Appium Desktop product.

With this post, we are going to cover:
  • Installing the Android SDK (Software Development Kit) on our Macbook through installing Android Studio
  • How to use some command line tools such as adb 
  • How to connect your Android devices wirelessly to your system

What is the Android SDK?

From Webotopia: "A software development kit that enables developers to create applications for the Android platform. The Android SDK includes sample projects with source code, development tools, an emulator, and required libraries to build Android applications. Applications are written using the Java programming language and run on Dalvik, a custom virtual machine designed for embedded use which runs on top of a Linux kernel".

April 12, 2017

SeConf2017: Microsoft is automating Windows, Intuit automating Mac Apps, all with Appium!

Star-Driver: Appium for the Future with Dan Cuellar
Joe Colantonio, Test Talks

https://youtu.be/aWo6aOWbCsc

"Apr 7, 2017 - It was an honor to finally meet one of my open-source heroes Dan Cuellar the creator of Appium. We had a quick chat at Selenium Conference 2017 in Austin and Dan was cool enough to let me interview him on camera. Dan shared his vision for Appium to be able to automate all things not just mobile apps".

April 11, 2017

Adventures in Automation: Two hundred posts!

Wow, this is the 200th post I have written here on Adventures in Automation.

This blog started a bit over two years ago. As I was trying to do one last big push to try to (somehow) make the shift from manual to automated testing, my wife suggested that instead of the many research notes I was compiling stay on my computer, why not share them in a blog?

It was a fabulous suggestion! Not only did I have a code portfolio on GitHub that employers could view, they also received a walkthrough of the code with my blog from automating a simple site covering basic concepts, to building a test framework for more complex sites and testing more complex APIs.

SeConf2017: Security Testing, Dockerizing Tests using Appium, Notes

Security Test Driven Development (STDD) Using Selenium / Appium
Surendran Ethiraj

https://youtu.be/3k922FTnGb8

Although many people think security testing is important, there aren’t many people implementing it sprint-by-sprint. To really help, security tests need to be easy to run, and they should be automated. Security should be in the DEV cycle, not waiting until the product is done.

Slides: https://www.slideshare.net/ATASlides/atagtr2017-security-test-driven-development-stdd

Surendran is using OWASP ZAP (the Zed Attack Proxy Project ) , FindBugs, and TestNG to set up security tests in the video.

April 10, 2017

SeConf2017: Rethinking Appium’s Code Base, Notes

Even though I have been a QA Engineer for quite some time, I am rather new to automation development. Lately, I've been trying to figure out how to use the open-source tool, Appium, to automate the mobile test suites that I have been writing for my current position.

Luckily for me, the Selenium Conference 2017 has just posted videos of its lectures online, with many of them providing good background information about Appium.

Rethinking Appium’s Code Base
Moiz Virani – Software Engineer, Sauce Labs

https://youtu.be/epine_rT4yE

Moiz Virani ( @moizjv ), a Software Engineer at Saucelabs and contributor on the Appium project talked a bit about how the Appium project was re-written and restructured. They took a monolithic project and converted it into smaller microservices.

More that iOS and Android, they now have drivers for Windows and UIDriver, helping you automate your TV apps. It still uses the JSON Wire protocol, still iis open source and always will be open source.

April 8, 2017

Couldn't attend last week's Selenium Conference? No problems: The videos are now online!

Couldn't attend the Selenium Conference Talks in Austin, Texas on April 3rd through the 5th of 2017?

No problem! The videos are now online! https://www.youtube.com/user/seleniumconf/videos .

Thank you, Angie Jones for letting me know!
































April 7, 2017

Things are heating up at the Ministry of Testing - Boston!

Things are heating up at the Ministry of Testing - Boston! Are you a Software Tester, QA Engineer, Manual Tester, Automation Developer, Software Engineer in Test, SDET, SET, QA Manager, or a Directory of Quality? Come check us out! Our calendar is jam packed!


April 2017


NASA International Space Apps Challenge 2017 Info Session! 
Brooklyn Boulders Somerville
Saturday, April 8, 2017
3:00 PM to 5:00 PM
  • Anne Fraysse says, "Are you fascinated by the hidden mysteries of the universe? Intrigued by NASA? Love to build and design? Want to be a part of the largest hackathon in the world? Come join me this Saturday at Brooklyn Boulders Somerville, where the International Space Apps Challenge, lead by NASA, is hosting a info session dedicated to their upcoming hackathon - the NASA International Space Apps Challenge (ISAC) 2017 - where teams across the world compete over a 48-hour period to design new and relevant technology!" 
  • Sign up here!

James Venetsanakos talks about Performance Testing @ iZotope, Cambridge
iZotope, 60 Hampshire St, Cambridge, MA
Wednesday, April 12, 2017
6:00 PM to 8:30 PM
  • James Venetsanakos ( LinkedIn ), a seasoned performance engineer will be giving a talk about Performance Testing. Come bring any questions you may have!
  • Sign up here!

Software Testing Lean Coffee @ Harvard Square, Cambridge, MA
John Harvard's Brew House
Tuesday, April 18, 2017
6:30 PM
  • A dinner-and-discussion group run like an end-of-sprint Agile retrosprective to break the ice. What QA related topic do you want to discuss tonight?
  • Sign up here!

April 6, 2017

Learning Appium Desktop: What is Appium Server and How Do You Start It Through Appium Desktop?

I've been asking myself the same question for the past two years, ever since I first became an automation developer: I wonder if I can figure out how to create a mobile automation framework? We already started covering the basic building blocks:

Learning Serenity BDD:
  • Serenity BDD with Cucumber, formats tests to be in an easy-to-read Given / Then / When format for feature files, which then can be broken down into step definitions. This is what is already being used in my current position.
  • Serenity BDD gives us easy-to-read reports. Picture the Given / Then / When as a summary report where you can drill down in the report to see the individual steps, how they were carried out, and which individual step passed or failed.
This section will cover Learning Appium Desktop:
  • Appium Desktop is a web based product used to inspect iOS and Android apps so I can determine a locator strategy for my eventual mobile automation test framework I will be building.
  • Appium Desktop comes with Appium 1.6.4-beta as the server. We will be covering basic concepts of Appium, and doing a deep-dive on many of the Android Command Line Tools used.
  • Although Appium allows both OS and Android, I was going to focus just on Android first, configuring both physical and virtual devices. 
  • I will be setting everything up on my Macbook. Why? I really like the Mac Terminal as a Command Line Interface. 

If you need more of an introduction to what is Appiun, Appium Docker, and what Appium can do, view:

 

What is Appium?

From Appium History: http://appium.io/history.html

"Dan Cuellar was the Test Manager at Zoosk in 2011, when he encountered a problem. The length of the test passes on the iOS product was getting out of hand. Less testing was an option, but would come with additional risk, especially with it taking several days to get patches through the iOS App Store Review process. He thought back to his days working on websites and realized automation was the answer.

"Dan surveyed the existing landscape of tools, only to find that all of them hand major drawbacks. The tool supplied by Apple, UIAutomation, required tests to be written in JavaScript, and did not allow for real time debugging or interpretation. It also had to be executed inside the Xcode profiling tool, Instruments. Other 3rd-party tools used private APIs and required SDKs and HTTP Servers to be embedded into the application. This seemed highly undesirable.

April 5, 2017

Become an Event Organizer for the Ministry of Testing - Boston Meetup!


Going to an Event or Conference?


Planning to go to a software testing conference? Do you dislike flying solo? Don't wait for someone else to put it on the calendar. Become an event organizer and gather together a ragtag group of Ministry of Testing - Boston members to sign up to the event with you!

Want to Host a Lean Coffee?


Do you wish there were more Ministry of Testing - Boston Lean Coffees in your area? Become an Event Organizer, find a spot to meet, and host your own! (Note, for this event, it is best to cap attendance at 15 people, or the discussion may be unwieldy).

Want to Host an Event at Your Company?


Are you a QA Manager or know someone who is? Do you have a new automated toolset to demo? Want to host a roundtable discussion on testing tools and techniques? Become an Event Organizer and host your very own Ministry of Testing - Boston Meetup event at your workplace! It's a great way to get the word out about open job reqs, testing tools you are creating, or simply a way donate your wisdom to the testing community.

Write to Conrad Holloman or T.J. Maher to become an Event Organizer for the Ministry of Testing - Boston group.

Once you become an Event Organizer, you will have access to the Ministry of Testing - Boston calendar. Create a new event!
- T.J. Maher, @tjmaher1­, Co-Organizer, Ministry of Testing - Boston

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!"

April 3, 2017

Webinar Notes: An Introduction to Appium Desktop by Johnathan Lipps

About the Webinar


From Sauce Labs: An Introduction to Appium Desktop (3/29/2017):

"Appium Desktop is a new graphical interface for starting an Appium server and inspecting your app's structure via Appium. It's recently been developed by the Appium contributors at Sauce Labs and is currently in open beta. In this webinar we will take you on a tour of Appium Desktop and show how it can be used with the goal of making it easier to write tests for your apps.

"Join Jonathan Lipps, Appium project lead committer and Director of Open Source for Sauce Labs, as he covers the following topics:
  • "Finding, downloading, and installing Appium Desktop for your platform
  • "Starting an Appium server with both simple and advanced options
  • "Interpreting Appium server log output
  • "Starting an inspector session using just Appium Desktop's server
  • "Starting an inspector session using Sauce Labs or TestObject
  • "Troubleshooting and where to go for help
  • "Appium Desktop's roadmap"
Video: An Introduction to Appium Desktop (55 minutes) https://youtu.be/IOSUBda2-g4

Slides: Introducing Appium Desktop:



Who is Johnathan Lipps?

According to his LinkedIn profile, as Director of Open Source at Sauce Labs: "I lead open source strategy, developer advocacy, and technological evangelism for the world's largest test cloud. In addition to ensuring the open source testing ecosystem is healthy, I lead development of Appium, the mobile automation framework, enabling a whole new level of automated testing for mobile devices and beyond".

...also according to LinkedIn: "I'm a software developer, a passionate leader, a linguist, a philosopher, a writer, a musician, a rock climber, and a runner".

Project Lead for the Appium project.


Johnathan Lipps metioned that Appium is Sauce Labs' biggest project, and have been working on it for quite some time. "Appium is the cross-platform solution for native, web, and hybrid mobile automation." With it, you can automate tests the apps you care about.

The main product in the Appium toolset is the Appium server, an invisible piece of software, installed by the Node Package Manager (npm) that sits on top of Node.JS.

The Appium server runs as a server on your machine, remotely, or in the cloud, such as with Sauce Labs, "enabling you to send requests for sessions, and within those sessions to send automation commands to [...] tell your device to do things".

The Appium Desktop (new!) is a point-and-click interface for using appium and inspecting your app's structure. The inspector helps you find web elements such as a button so you can then make an assertion. It is basicallt a wrapper for Appium.

Launch the desktop app, which provides a GUI for the exact same messages you would see in the command line. There used to be appium.app and appium.exe where you could also use Appium with a point-and-click interface. They were good applications that fell by the wayside. Appium Desktop is a "spiritual successor".


Differences Between Appium Command Line Interface (CLI) and Appium Desktop:


From Introducing Appium Desktop

Download and Install Appium Desktop

Appium Desktop is at https://github.com/appium/appium-desktop/releases

You can choose to adjust the port or the host if you need, and you start a simple server.
You can also select "Advanced" and play around with various options.

Make sure to read the documentation, since this will change how Appium behaves.

You can run from:

  • Automatic Server
  • Custom Servers
  • Sauce Labs
  • Test Object


You can also set Desired Capabilities such as platformName : iOS.

What are Desired Capabilities?


"Desired capabilities are a set of keys and values (i.e., a map or hash) sent to the Appium server to tell the server what kind of automation session we’re interested in starting up. There are also various capabilities which can modify the behavior of the server during automation. For example, we might set the platformName capability to iOS to tell Appium that we want an iOS session, rather than an Android or Windows one. Or we might set the safariAllowPopups capability to true in order to ensure that, during a Safari automation session, we’re allowed to use JavaScript to open up new windows". - Appium API Reference

If you have a huge set of Desired Capabilities you can edit in the GUI of Appium Desktop and see it in the JSON object that the Appium will interpret.

Appium server capabilities

automationNameWhich automation engine to useAppium (default) or Selendroid
platformNameWhich mobile OS platform to useiOSAndroid, or FirefoxOS
platformVersionMobile OS versione.g., 7.14.4
deviceNameThe kind of mobile device or emulator to useiPhone SimulatoriPad SimulatoriPhone Retina 4-inchAndroid EmulatorGalaxy S4, etc…. On iOS, this should be one of the valid devices returned by instruments with instruments -s devices. On Android this capability is currently ignored, though it remains required.
appThe absolute local path or remote http URL to an .ipa or .apk file, or a .zip containing one of these. Appium will attempt to install this app binary on the appropriate device first. Note that this capability is not required for Android if you specify appPackage and appActivity capabilities (see below). Incompatible with browserName./abs/path/to/my.apk or http://myapp.com/app.ipa
browserNameName of mobile web browser to automate. Should be an empty string if automating an app instead.'Safari’ for iOS and 'Chrome’, 'Chromium’, or 'Browser’ for Android
newCommandTimeoutHow long (in seconds) Appium will wait for a new command from the client before assuming the client quit and ending the sessione.g. 60
language(Sim/Emu-only) Language to set for the simulator / emulatore.g. fr
locale(Sim/Emu-only) Locale to set for the simulator / emulatore.g. fr_CA
udidUnique device identifier of the connected physical devicee.g. 1ae203187fc012g
orientation(Sim/Emu-only) start in a certain orientationLANDSCAPE or PORTRAIT
autoWebviewMove directly into Webview context. Default falsetruefalse
Go to https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md to see more Android and iOS specific Desired Capabilities!

How to Use The Inspector:


Start the Session. You need to install Android SDKs of emulators on your local machine. After seeing the simulator, you can see the inspector window. What is going on with different elements?

You can navigate the XML source, the response tree. This is how you can find the id or CSS Selector that you then can call.

... It is like the Firefox plugin, Firebug and Firepath used to determine strategies to find locators.

You can perform actions directly from Appium Desktop, such as sending keys to a textbox.

Note, if you input your Sauce Labs credentials you can use their virtual emulators of Android or IOS devices.

See any issues? Are the issues with:

  • Appium? https://github.com/appium/appium/issues
  • Appium Desktop? https://github.com/appium/appium-desktop/issues


Want to See More Webinars from Sauce L?




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!"