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


"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


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


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

April 2, 2017

Learning Serenity: The Screenplay Tutorial

We've covered a lot with Serenity BDD over the past few weeks!

This has all prepared us for John Ferguson Smart's tutorial on the Serenity BDD Screenplay Pattern. See http://serenity-bdd.info/docs/articles/screenplay-tutorial.html

Why Replace the Page Object Pattern with The Screenplay Pattern? 

Personally, I am trying to learn Serenity BDD and the Screenplay pattern because it is already the toolset and techniques we are already using where I am assigned as a contractor. I just started my career in automated testing two years ago.

Why does John Ferguson Smart and his group recommend this pattern they created? From Page Objects Refactored: SOLID steps to the Screenplay / Journey Pattern (2/11/2016):
"PageObjects have been the staple of automated web testing for over seven years. Simon Stewart wrote the original Selenium PageObject wiki entry in 2009. The concept was introduced to help test-developers reduce maintenance issues that, for many, resulted in flaky tests. Some mistook this as issues with Selenium, rather than with their own coding practices. While PageObjects can act as training wheels and be a good place to start, in this article we show you issues inherent to PageObjects and the benefits of refactoring them using SOLID OO principles. We then introduce the Screenplay Pattern, an alternative approach that could save you the trouble".
... I also heard that the Screenplay pattern has Appium built in as a way to kick off mobile automation. I'll be investigating that, next!

How to Get Started

Following the instructions on Writing automated acceptance tests using Serenity and the Screenplay Pattern:

"The easiest way to create a project skeleton for a Serenity Screenplay project is to use the Maven Archetype Plugin. To do this, run the mvn archetype:generate command (with a filter to reduce the number of artifacts Maven proposes) as shown here:"
$ mvn archetype:generate -Dfilter=screenplay
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: remote -> net.serenity-bdd:serenity-junit-screenplay-archetype (Serenity automated acceptance testing project using Screenplay, Selenium 2 and JUnit)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): :
"[...] You will then be prompted to enter a groupId, artifactId, and version for your project, and a root package for your classes [...]".

Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : 1
Define value for property 'groupId': : net.serenitybdd.tutorials
Define value for property 'artifactId': : todomvctests
Define value for property 'version':  1.0-SNAPSHOT: : 1.0.0-SNAPSHOT
Define value for property 'package':  net.serenitybdd.tutorials: :
Confirm properties configuration:
groupId: net.serenitybdd.tutorials
artifactId: todomvctests
version: 1.0.0-SNAPSHOT
package: net.serenitybdd.tutorials
 Y: : Y
"You will find your new project in the screenplay-tutorial directory".

$ cd screenplay-tutorial
$ mvn clean verify
... And the tests should run!

Explore the tutorial to learn more about all the moving parts as shown below:


And thank you for Learning Serenity with me! 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!"