Skip to main content


OpenSTF + Jenkins = Scalable In-House Device Sharing

I first learned about OpenSTF from a tweet by Square's Jake Wharton. It's frickin' awesome. I believe I've posted about this before but seriously go check it out if you're an Android developer or tester who has a pool of shared test devices to work with. It's FOSS and boss. Go check it out.

At the time of Jake's tweet, there was no integration between the awesome little project and my cluster of devices configured to host test automation in Jenkins. Because of the open source natures of both OpenSTF and Jenkins, and the robust plugin system on Jenkins, it seemed inevitable to me that a plugin would be written eventually to marry the two. I even speculated that I might write one if I got the chance.

Luckily for everyone that wasn't going to be necessary.

It's actually really straightforward to set up and easy to use but here are a couple of issues with work-arounds you might want to consider:

Issue -The API key from OpenSTF for the plugin's global…
Recent posts

Testing Your Android App's Readiness for International Audiences Without Translation

Google are serious about the global reach of Android. They place translation services front and center in the dev console for Android app publishing. They provide lint checks for localizability and internationalization issues. And they even have a single-line trick for enabling testing your app for localization:

pseudoLocalesEnabled trueBack in November of 2014, this setting was added under BuildType to tell aapt to inject pseudolocalized text into your build for the following two automatically generated fake locales: en-XA and ar-XB. This is documented in the Android Gradle plugin's DSL here. As you can see, the documentation is a little... "sparse". When I tried it out, it didn't look like it worked at first and I went so far as to open a bug because I couldn't find any directories where the new localized strings files were stored in my project and my app didn't appear to show any of the expected updated strings. It turns out I was wrong in my assumption abo…

Updating My Favorite Script

Since the last time I updated my blog, I've changed jobs and titles. While I still technically work in my new company's QA organization, my work is devoted more to app delivery than app testing. This doesn't mean I am not a tester anymore but that it consumes less of my time. It's no surprise therefore that I'm only NOW getting around to posting an update to my favorite script which I first shared 3 years ago here in this post.

3 years later and at least 3 years lazier, the ways I've modified the script are all designed to simplify it, make it more generic, and have it do more of the work for you. Instead of supplying a lot of configuration, it only concerns itself with the URL to the last successful build artifact of your build job. In this regard, I highly recommend NOT configuring your builds to name the files with dynamic data such as date, build number, git hash, etc. The filename is not something I'd consider a trustworthy source of build trivia even …

The Economics of Device Clouds in Continuous Integration

The rent is too damn high.
Okay, let's look at the topic of device clouds. Microsoft's recent purchase of Xamarin means that now Google, Amazon, and Microsoft (3 major cloud computing service providers) all have their own device clouds which they also lease time on to the public (well, Google's purchase of Appurify hasn't resulted in that yet but it's coming soon and is currently in Beta). That makes 3 major cloud players who also build mobile apps buying their own device clouds and renting their overhead to the public.

To me that's purely confirmation that if you intend to use real devices and you're a developer or a company that does a lot of development and testing of mobile apps, particularly on Android, you had better have your own cloud. If it were cheaper to rent than to own, why would those three major cloud providers buy existing device cloud as a service platforms? In reality, Google Ventures was the primary early investor in the Y-combinator-bas…

A marshmallow shaped problem in my screenshot empire

"Never without my permission" ~ Leeloo (translated)


As a tester, you probably have a favorite app, maybe a favorite feature, possibly even a favorite bug. But you probably don't have a favorite permission.

I've been taking advantage of it for years to do things like gather code coverage on non-rooted devices, logcat output from an entire test run, and probably my favorite usage is screenshots triggered when tests fail. Yep, that little permission has been a big pal of mine for a while. So it should be no surprise that I felt a little betrayed when I recently discovered a problem with it on devices running Android 6.0 aka "Marshmallow".

Among the many changes brought about by the 6.0 release was a long-overdue overhaul to Android's permission scheme, notably, from an all-or-nothing approval of permissions at install-time model from Android 1.0-5.1.1 to the more nuanced permissions requested when required during …

Tester GIF roll pt 4 (Young Frankenstein Edition)

When you talk to the platform tech lead for your project about how to coordinate what gets automated with what is tested manually and you're pretty sure he's convinced the manual testers treat each new build all like...
When you haven't participated in the sprint demo phase of your team's bi-monthly review ritual and they suddenly ask for a demo of the test automation project and you're all like...
When the senior manager suggests contrary to your professional advice that the right approach is to just get something running on this new project, even if you know it is broken, because you'll magically have time to refactor it later and do it right, so that you can just show some pretty graphs and you're all like...
When your new project is so stuffed full of libraries for the sake of libraries that your debug build is failing on the dex limit, forcing you to ask the developers to make adjustments and they come back with a solution that you just KNOW is going …

Why Developers Shouldn't Perform Software Testing - A Rebuttal

Take a minute and read the following 2-pager entitled "Guest View: Why developers shouldn’t perform software testing".

Man, I tried to like this article because the author, Martin Mudge, clearly knows that businesses who undervalue quality by trying to eliminate testing through simply shuffling the traditional testing task to developers are making a huge mistake. Unfortunately he begins by making an assertion that testing overburdens a developer which at face value is complete nonsense. If you feel overburdened, it is a timeline issue and that is true no matter WHAT the nature of the tasking is.  So his assertion of “one the most important” contributing factors being overburdening the developers is massively flawed. It gets immediately worse from there because his second point is about time constraints. 
Mr Mudge just gets so much wrong. What he really should be shooting down is the idea that testing, as a cost-center not as a task, can be eliminated by having your product cen…