Mobile Testing Sprout's iPhone App

“Testing is fun.” – Said no one. Ever.

I’m not sure that I could find a whole lot of developers who agree with this statement, but the iOS community has been given hope. Before I tell you about my reason for hope, let me enlighten you on the cluster@#^# painful process that used to be iOS testing.

The Pain

Feel free to skip this section if you only care about how to do it the cool way, but for the sake of drama, let me be verbose.

  1. Send an email to a prospective tester asking them to send me their UDID.
  2. Add the UDID to our iTunes Connect account. (Apple’s hub for regulating test devices)
  3. Generate and download an updated provisioning profile and build the app using an Ad Hoc configuration (with this provisioning profile).
  4. Send the app (an .ipa file) along with the provisioning profile (a .mobileprovision) file to the tester with ridiculously detailed instructions on how to twist the phone’s arm into running the app.
  5. The tester gets the email, gets confused by the instructions, messes up the process a few times, and finally drags the 2 files received from the developer into their iTunes Library on the computer they sync the device with, and then syncs the iOS device.

99% of iOS users don’t know what a UDID is, nor should they need to.  Folks, it’s the device’s ID number.  The process for finding this ID is in no way straight forward and often requires additional tester instruction.  Eventually the tester does find the ID and sends it to me.  Later, after I perform some magic to get the app ready to install, the same user receives a .zip file containing an .ipa and a .mobileprovision file.  Again, we have a confused tester.  They probably know how to sync their iPhone, but this whole drag and drop to install is frustrating and confusing.  It isn’t the normal process, nor is it as straightforward and easy.

Testers are hard to come by, and losing them because of technical misunderstanding is a sad story.

The Hope

When Apple released iOS 4.0 they dropped in an amazing feature for developers: Over the Air Distribution.  The biggest hurdle in Ad Hoc testing was getting testers to figure out how to install the app.  Now with 2 taps on an iPhone, a user is able to download my app OVER THE AIR.  No sending files, no syncing, no instructions, and no confusion.

So, I discovered OTA about 9 months ago when I read Jeffrey Sambells’ article outlining how to do it, but that was just the start.  Some suckers for simplicity decided that this wasn’t good enough.  They felt iOS developers’ pain and did something about it.

Icing on the Cake

Enter TestFlight.  Now, I’m doing my best to not make this sound like an advertisement, but I have found love.  As a developer, I created an account for Sprout Social and sent out a link (Step 1 from above) to perspective beta testers.  The testers signed up for the service (it was easy) and registered their iPhones from the comfort of their couches and Mobile Safari.  Unbeknownst to them, they were supplying me with everything I could ever ask for as a developer.  TestFlight harvested their UDIDs, their iOS versions, their hardware versions, and their email addresses, and all I did was send a single link.

Mobile Testing Sprout Social

I now have a list of testers with all their relevant info.  All I need to do is add the newly harvested UDIDs to our iTunes Connect account (Step 2), build the app with the new profile from ITC (Step 3), and then upload the app to TestFlight (replacement for step 4).

The tester then gets an email telling them that I have the app ready for them to test, with a link to click on to install the app over the air (übereplacement for step 5).

Apple, with some awesome help from TestFlight has made managing my testing efforts a breeze.  I can now recruit new testers with almost no effort, and publish updates to existing testers without having to worry about whether they’ll be able to figure out how to install the app.

The bottom line is that I get to write my code and distribute it without too much pain.  TestFlight saves me time and lets me get back to building the best possible mobile experience for our customers.  TestFlight saves our testers time and headaches, making them more likely to actually test the app (this is important) and give us feedback to make it better.

Testing may never be truly fun, but now I can at least get excited to push new updates to our testers.  And as a developer, that’s as good as it gets.

— @lavoy