Distributing apps to testers

A guide for app producers (and their clients)

Have you ever had a headache trying to get a test app out to beta testers and stakeholders? The process is often misunderstood, causing confusion, delays and reams of frustrated emails between developers, producers and clients.

If your app is for Android, close this article and go enjoy some sunshine. Android makes it easy to distribute to unlimited devices via email, google drive, HockeyApp or Google’s Beta program.

For iOS app producers, please remain seated as I try to explain in non-techy language how the test distribution thing works.

Before we start, you should understand this:

Only Apple can really allow an Apple device to run an app

Apple has created a highly secure ecosystem to stop malware and viruses entering their products. Google doesn’t have the same security restrictions and this is one of the reasons why you can inadvertently (or intentionally, if you’re that way inclined) install malware with an Android app.

Apple ensures confidence in the identity of the app provider by issuing certificates and linking them to devices. If an app and device don’t have a matching certificate, the app will not install. This rule applies for test apps as well as published apps.

Just tell me how to get the app installed already

Getting a test app onto devices should be as simple as :

  1. Register (organization)
    Register for an Apple Developer Account and choose a distribution service for your app.
  2. Gather emails (producer/PM)
    Gather all the email addresses linked to test devices and send them to your developer.
  3. Add emails (anyone with account access)
    Add the emails to the team account.
  4. Build (developer)
    Your developer creates a new build provisioned for the test devices.
  5. Receive notification (testers)
    All testers are notified via email when the build is ready to install. Testers without a HockeyApp or Testflight account will receive an email instructing them how to register for the (free) service.
  6. Install app (testers)
    Testers follow the links in the notification email to install the app.

Easy, right?

If you’re new to this, you may have more questions. What is a developer program? What if you have dozens or hundreds of stakeholders and testers who need builds? What are the differences between the different distribution methods? What the hell is a UDID and who needs them?

Let’s look at those steps in more detail.

1. Register

Register for an Apple Developer Account and choose a distribution service for your app.

If you’re embarking on your first app, you need to register your organization with an Apple Developer Program and choose a distribution program.

Developer Programs

These programs allow developers to issue Provisioning Profiles for their apps. A Provisioning Profile is kind of like a passport, issued to your app by Apple, and it permits an app to be installed on particular devices. Each ‘passport’ contains the app’s distribution certificate, a list of UDIDs and a bunch of less interesting techy stuff.

Usually a client gives their developer login and password access to their Developer Program. This ensures all apps are kept within the organization instead of with different software vendors. The two programs are:

Apple Developer Program — Standard

The iOS Developer Program allows developers to provision apps for development and testing and allows you to submit to the AppStore. The standard program currently costs $99 per year per developer account.

The Developer Program limits the number of devices per developer account to 100. Devices can only be removed (freeing up device slots) once per membership year.

Apple Developer Program — Enterprise

The Apple Enterprise Program is for developers who create proprietary in-house iOS apps. It allows developers to provision apps for unlimited devices in an organization but doesn’t allow you to submit to the App Store (you can be enrolled in both Standard and Enterprise programs if necessary). The Enterprise program currently costs $299 per year.

To register for Apple Developer Programs, every company needs a D-U-N-S number. DUNS (Data Universal Numbering System) numbers are a worldwide standard for business identification, assigned and maintained by a bloated American company called Dun and Bradstreet. A DUNS number is free to obtain unless you need one expedited. It takes at least 7 working days between applying for your free DUNS and Apple receiving it, so don’t leave this task until the last minute.

iTunes Connect

iTunes Connect is one of the tools offered by the Developer Program to help developers do what they gotta do. As described by Apple, it’s a “suite of web-based tools that allows developers with the Team Agent role (the original enrollee accepted into the iOS Developer Program) to submit and manage apps for distribution on the App Store, check the status of contracts, set up tax and banking information, obtain sales and finance reports, and manage iTunes Connect users.”

Distribution programs

Distribution is how the app, now armed with its passport, gets to its destination: the device. The most popular distribution programs for sending test apps are HockeyApp and Testflight.

HockeyApp (free)

HockeyApp is the most popular tool for managing distribution of apps to testers. To use it, you have to be registered to Apple’s Standard or Enterprise Developer Programs. If you’re using the Standard Program you’re still limited to Apple’s 100 device slots per membership year.

Apple TestFlight (free)

Because it’s owned by Apple, TestFlight distributes via the app store and handles the security of allowing the right people to install the app. It makes things a lot easier for developers as there’s no provisioning profiles to worry about — all you need is the user’s email address. However there are a few limitations to be aware of:

  • Builds expire 30 days after invitations are sent
  • Testflight only supports iPhone, iPad and iPod touch devices running iOS8 or later
  • Each developer account can be enabled for max 10 apps at a time
  • Each tester account is limited to max 10 installed apps at a time
  • You can send the app to up to 25 internal and 1000 external testers

Internal testers usually work in your organization. They must be members of your iTunes Connect team with the Admin, Legal, or Technical role. Builds sent to Internal Testers don’t need to be reviewed by Apple.

External testers don’t need to be in your organization, you just need their email address. Before you can invite external testers, the build must be approved by Apple via a process called ‘Beta App Review’. The review can take several days and builds will always expire 30 days after invitations are sent.

Manually installing apps

It is possible to install builds manually using Xcode. However the build still needs to be provisioned for the device receiving the build, and the device needs to be physically connected to the machine running Xcode. For remote distribution, or to distribute to more than a few people, manual installation isn’t a realistic option unless you have hours to spare and a dark penchant for using the postal service.

2. Gather emails

Gather all the email addresses linked to test devices and send them to your developer.

If your project is setup correctly and all the team invested with one of the distribution services, you’ll simply send your developer each tester’s email address. For external testers, it may also be handy to get their first and last names. The developer will then add these addresses to the team account.

A Testflight user can use the same email address to test an app on up to 10 devices and test many apps simultaneously for multiple developers.

But… I’ve been asked for a UDID?

Above is the ideal scenario. In practice though, developers may have to gather at least some UDIDs. If that’s the case, here’s how to find your UDID.

Each iPad or iPhone has a Unique Device Identifier (UDID) which is a sequence of 40 letters and numbers specific to your device. It’s like the device’s digital serial number but much harder to find than a regular serial number. In fact, there are whole websites dedicated to explaining how you find it. For future easiness you can also install a UDID finder app to your device, like this one. It’s a handy way to quickly email your UDID to anyone. To save you the click:

  1. Connect your device to iTunes
  2. Click on your device
  3. Click on the summary tab
  4. Click on the Serial Number and the UDID will be revealed
  5. Press ⌘+C to copy it

3. Add emails

Add the emails to the team account.

The PM or developer now takes the list of emails and adds them to the Testflight or HockeyApp distribution team account. Programs like HockeyApp automatically extract device UDIDs while Testflight doesn’t need UDIDs.

4. Build

Developer creates a new build provisioned for the test devices.

If using HockeyApp, the developer adds all the test devices to the provisioning profile and creates a new build.

If using Testflight, the app distributes via the app store and developers don’t have to worry about provisioning profiles at all. The tradeoff is that Testflight apps require the Beta App Review (don’t forget, this can take several days) and must comply with the full App Store Review Guidelines. A review is also required for new versions of your app that contain significant changes.

For either program, once the new build is finally uploaded, the testers will receive a notification email.

5. Receive Notification

All testers are notified via email when the build is ready to install

With any of the distribution services, if a tester already has an account, they’ll simply receive an email invitation to test the app.

Testers without a HockeyApp or Testflight account will receive an email instructing them how to create a free account and install the app. This invitation should be opened, and instructions followed, on the test device.

Sometimes clients have trouble following the links in the invitation email. In that case, here are guides for the two most popular distribution programs:

Hockey App
Testflight

After the 30-day period expires, your developer can upload another build. Testers automatically receive an notification email when the new build is available.

6. Install App

Testers follow the links in the notification email to install the app.

The tester’s notification email will contain easy to follow directions to install the app. Make sure to delete the previous version if the developer asks you before installing a new version.

When the tester finally presses ‘install’, the app presents its passport, or Provisioning Profile, to the device. The device checks the passport is good by ensuring the device UDID matches the UDID in the provisioning profile. If the UDID matches, the app is installed. If it doesn’t match or isn’t listed, the app won’t install and you’ll go back to step 2.


I hope this article gives you a better insight into how distributing apps to testers works so that the process can be a painless step in your schedule. Now forget about work for a while and go enjoy the sunshine with your Android friends.


Marino design and engineer software for enterprise, education, communications and media. Follow us on twitter @marinosoftware