So @joshuaoxj asked me yesterday about how I used TestFlight for [GA.TODAY](http://ryanbrink.com/ga-today), so I thought I’d answer with a blog post in case he isn’t the only one looking for a bit of guidance.
TestFlight was hugely helpful for me in a number of ways:
- I’m a solo developer with a QA team of one: myself. TestFlight helped me crowd source my product verification
- Running the campaign to get users to sign up for TestFlight access built some initial traction for my idea and helped with my landing page SEO *before* I launched
- My TestFlight testers have been my most engaged set of users, helping me iron out key UX issues before my actual release and–more importantly–plan the roadmap for GA.TODAY’s future
Crowd-sourced QA
I designed, developed and launched GA.TODAY by myself and in case you’ve never tried it you should know that it’s really hard to test something you built yourself. I know this. Instead of depending on my ~~incredibly amazing~~ average design and unit testing skills I decided to try crowd sourcing my testing.
This worked *very* well in my case. Before GA.TODAY was ever available on the App store I had **over 200 users** on my external testers list.
Besides helping me make sure GA.TODAY was ready for it’s initial release, this is a group of engaged users that are always running what I’m working on and helping me find bugs before it gets out into the public.
Unless you’re working on some sort of top-secret App, finding a group of people that are willing to go through the trouble of setting up TestFlight so they can get prerelease versions of your software can be incredibly valuable. Not only will they help you iron out bugs you won’t catch on your own, but they can also be a great source of feedback on your design in general: is it easy to use? Did it solve their problem? Would they give you a five-start review and if not, why? Getting early answers to these questions is *crucial*.
Okay, enough pitching. Let’s get started:
Getting Started with TestFlight
First things first, you’ll need access to Apple’s iOS Developer Program. This $99/year service gives you access to the Apple Developer Member Center and iTunes Connect.
The Member Center is where you configure things for development. You can get access to code signing certificates, create development and distribution profiles for your developers, and manage your App identifiers. The Member Center is for all things *development* and I’ll assume for this post that you’ve got things set up and humming along there.
iTunes Connect is where you configure things for release. Here you set up your financial and legal agreements with Apple, set up the App Store pages for your Apps and *manage your prerelease disitribution*. There is where we’ll be focusing today.
I like to break things down into a few steps:
1. Create Your App
I won’t go into detail here because it’s pretty straightforward, but first and foremost you need to create and configure your App on iTunes Connect. It’s a fairly straightforward process to match the application identifier, come up with a name and write a basic description for the App store. Sure there is lots to do to get this done *right* so your App will do well, but that’s outside the scope of this blog (although you may find helpful advice on App store optimization, or “ASO” [here](http://www.mobyaffiliates.com/blog/a-guide-to-app-store-optimisation-aso/)).
2. Get Your First Build Up
Beta testers aren’t very useful if there isn’t anything to test. Once you’ve created your App on iTunes Connect, use xCode or the Application Loader to push your first build up to Apple. These tools are responsible for building, packaging, signing and uploading your App and related files to Apple’s distribution servers. Again, this task is fairly straightforward and self explanatory. Apple’s guide is here.
3. Get it Approved
Yes, unfourtunitally even prerelease builds require approval from Apple. Lukily, only the *first build for a given version* requires a real approval and prerelease approvals typically happen much faster than your full release approval. My first build for a new version of GA.TODAY was typically approved for external testing within a day or so of submission, and all following builds for the version were approved instantly.
To submit your build for external testing approval go to your App and click prerelease -> builds. There should be a link under “External” in the row for your latest build to submit your App. The link will take you to a page where you fill out some basic information required before you can ask Apple for their blessing.
If this is *not* your first build for this version there should be a question on this form that asks if you’ve made significant changes in this build. If you haven’t, your build will likely be approved for external testing immediately, which is handy for small fixes and fast updates to major issues found during your beta testing.
Keep in mind that you can only submit 2 builds for approval per App per 24-hour period. If you’re making too many small changes you might end up having to wait it out for a more important one (not that this ever happened to me…)
4. Get Some Beta Testers
I thought I’d talk quickly about how I got *my* “external testers” for GA.TODAY, in case you’re in the same boat as me and trying to get something of reasonable quality out all by yourself.
To start with I created a basic landing page for GA.TODAY that described what I was building with some simple screenshots so users could get a sense of how it was going to work. I had a sign up on that site that allowed users to opt-in for “free forever” Beta access by giving me their Apple ID.
I then distributed links to this page on link sharing sites and social networks, pitching it as free access to an App that costs $1.99 (which it would be once it was released) in turn for beta testing. These links did fairly well on HackerNews, Reddit and Inbound. I also did some basic Twitter searches to find people already looking for a better Google Analytics App for iOS and replied directly to their tweets with this link. All in all this helped me gather over 200 email addresses of fairly engaged users ready to help me test my App.
I then simply added each Apple ID to my list of external testers for GA.TODAY 1.0. You get to your external testers list by clicking the App in iTunes Connect and going to Prerelease and then External Testers:
<img alt=”Finding your External Testers” src=”http://i.imgur.com/HupOKXJ.png” width=”100%” />
5. Get Your Build Out
Once you have a build approved for external testing and a list of external testers you’re ready to go. As soon as your build becomes approved the link under “External” becomes “Invite Testers”. Clicking this triggers a TestFlight email to everyone on your list with instructions on accessing a prerelease build via the TestFlight App. Once users have the first build, future builds will trigger a push notification and a simple upgrade process. It really does work great once you have things going.
Note: I occasionally ran into a user who signed up with an Apple ID but didn’t check the associated email inbox and therefore didn’t receive the TestFlight invitation! Make sure your users know that they will be invited via an *email to their Apple ID*. This isn’t always clear to iOS users.
6. Update
Updates are easy. You simply upload a new build via xCode or the Application Loader, submit it for review (which is usually instant if you haven’t made significant changes), and clikc the same invite link to allow your testers to upgrade.
7. Get Feedback
Besides getting feedback via submission from the TestFlight App (which isn’t exactly obvious for your external testers), I highly recommend integrating something like Fabric.io and Google Analytics to help you keep track of issues your users are running into. Fabric.io will give you great crash reports and Google Analytics tells you what your users are doing with your app and how often they are interacting with it.
Besides these two tools, I ran a few mail campaigns throughout the pre-release testing cycle for GA.TODAY asking users to fill out a form (like this one or this one) that asked a bit about their experience, what I should charge for the App once I released it, and what they would like to see next. Many users filled out these forms and helped me decide exactly what I would charge and where to focus my development for future features.
Summary
All in all, TestFlight works exceptionally well. You can get up to 1,000 people running your latest builds and finding bugs before your App reaches the world. Plus you can use these engaged users to help you refine what your building and how it works to ensure you have a good product when it goes GA.
Hopefully this way you’re getting helpful feedback from users that *know* they’re using a pre-release build instead of negative reviews everyone in the world will see.
How are you using TestFlight? Has it been as effective for you? Anything I missed? Join the conversation below: