Enter TestFlight, a very interesting project with a simple goal: to make distributing and installing beta versions of apps as simple as tapping a button. In short, and to coin a phrase that is often synonymous with Apple products in general, "it just works." TestFlight is one of those rare utilities that is able to evoke a feeling of magic when you first use it. This feeling is not just because it does exactly what it advertises, or because the process is so simple, but because it does all of this just by loading a simple web page from your device.
Sound interesting? Read on to find out how TestFlight is making the testing process better for everyone.
Before we dive in any further here, let's put in some perspective. Let's say I'm developing a game, and I'd like you to try it out for me and provide some feedback. Well, in order to try the game out, you'd have to be able to install it, right? You might ask how you're going to do that if it's not available on the App Store yet, and that's a very good question. Part of the way the App Store works is by validating that each app downloaded is signed with a digital certificate, which is issued to each developer when they apply to Apple's iOS Developer Program.
This allows the device to be sure that the app being installed actually came from the App Store, and that it is authorized to be installed on the device. In order to allow developers to distribute builds of their apps for testing purposes, Apple allows the developer to send the app's "package" directly to a limited number of people, along with a special file called a Provisioning Profile, which provides information about the app, the developer, and also contains a list of specific devices that the package may be installed on. To build this profile, the developer must obtain a unique identifier code, called a UDID, for each device that is going to be used in testing, which usually requires the tester to follow instructions or download an app to locate this information. Once the tester receives the package, they must then drag both the package and the profile into iTunes, and then connect their device and sync it. Any updates to the app require this process to be repeated, and there are often errors and other problems that cause headaches for both the tester and the developer.
So, how does TestFlight solve this, you ask? First, it starts by helping the developer to get organized. When logged in to the TestFlight dashboard, the developer is immediately presented with the ability to build up "teams" of testers and developers, as well as distribution lists to control access to different builds of the app.
Devices are automatically shown for each tester
From there, I can easily take that information and put it into the profile, and I can be confident that it's correct since it's coming directly from the device -- no chance of copy and paste errors or getting the wrong ID for the wrong device, since the device type, OS version and ID are all kept together. Even better, though, is the next step: sending you the app. The days of dragging builds into iTunes and syncing are over -- I just upload the build, confirm which testers I want to receive it, and TestFlight will take care of notifying you that the build is ready, along with letting you download and install it with just a single tap. The process feels so simple and streamlined, it seems like it's how Apple should have developed it to begin with.
Ironically, TestFlight itself is also in beta right now, though it's hard to tell. The website is very nicely done, with a lot of attention to detail and plenty of images and hints to help you along -- it looks very well polished. Installation goes off without a hitch and even drops a nice little TestFlight icon on your home screen so that you can quickly access your builds. The site is also smart enough to let you know when there is a problem with an upload or anything else that might cause headaches down the road. Overall, it's a very promising service, and it's free for iOS developers who are distributing on the App Store.