Deliver (feature and) regular test builds through the Google Play Store
By: Alessandro Mautone
Tags: Android App Development, Android, Play Store, AndroidDev, Release Management

Photo by Dmitrii Vaccinium on Unsplash

Today we are going to explore how to deliver both feature and regular test builds through the Google Play Store.

It is true there are many tools available for this purpose: Firebase App distribution, Visual Studio App Center, etc. but here we want to focus on the Google Play Store.

The main advantages are:

You are probably already distributing your app through that store, therefore you don’t need to introduce an extra tool

Automatic updates for testers (like it happens with usual production builds)

Is easily integrable with most CIs, especially in combination with the Gradle Play Publisher plugin

Is free

The main downsides are:

Google Play Console UI/UX could be difficult to grasp (especially at the beginning)

Setting up testers for different feature builds might be confusing (more on that later)

There is no real way to easily choose which feature build you want to download (unless you leave the current track and (re)join the desired)

Let’s first take a look at how to set up testers and tester groups.

Setup testers and tester groups 🤓

Starting from the side menu, let’s go to the internal app sharing option under the Setup option.

Clicking there we will have a screen like the following one, let’s select the Email lists tab

As you can see from the description, those are the accounts who will be able to access our test builds. I usually create groups for every role (Android devs, QA testers, company testers, etc). I even create groups for specific features I want to test, which will come handy when (and if) you are going to deliver feature builds as well.

Delivering test builds 🌀

Let’s move to the side menu again and let's go to the internal testing option.

Let’s select the Testers tab: we will be presented with the group of users (testers) we created previously in the internal app sharing menu. Let’s enable the ones for which we want to start delivering internal builds.

They can also join through a link provided through an option at the bottom of the page

And we are done! ✅

Now you can start submitting builds for internal testing selecting the Releases tab, and the groups we enabled for those will start getting those builds automatically as if they were regular Play Store app updates 🚀

One particular advantage of the internal testing builds is that they don’t care about version codes/names, meaning you can put whatever you want there, even lower values than the current ones submitted! Also, the review process is quite very fast (available within a few hours in the worst case).

Feature test builds 🎯

Now let’s imagine we are a team of a few Android developers, and the team is working on 2 different features at the same time and they would like to deliver separated builds to the testers without impacting/modifying the regular release train. Let’s see how we can achieve that with the Closed testing on the Play Store Console.

Let’s move once again to the side menu and choose the Closed testing option.

Closed testing is like the open one, but available only to a selected group of users. That means that, even if you share the join link with someone, only users enabled in the testers group for that specific track will be able to see versions of the app distributed through that track.

After clicking on the Closed testing option we will see something like this:

Let’s click on Create track and give a name to that track (we usually use something that reflects the feature we want to test). I will call mine SSO.

After creating it, we will see the track in the tracks’ list. Let’s click on Manage track and select the Testers tab:

Here we can enable the groups for which we want to make those builds available.

Here, as a sample for this article, I have Android devs, but as I said previously, I usually create a specific group for the feature. That means I would have a SSO group with all the testers inside.

The last step is to ask testers to join the test through one of the available links

And we are done! ✅

We can now go to the releases tab, upload our apk/bundle and our selected testers will be able to get those builds and their future updates 🚀

One thing to keep in mind is that, unlike for internal testing, builds submitted to a track need to have version codes that are higher than the current ones published. About the review process: is not entirely clear to me if they go through a regular review process or not, but it is usually quite fast.

Notes 💭

Remember when I said

There is no real way to easily choose which feature build you want to download (unless you leave the current track and (re)join the desired)

and

Setting up testers for different feature builds might be confusing (more on that later)

Well, here we go 😄

If you put the same user in the internal testing and in a track (or in multiple ones) the lastest available release is going to be the one the tester will get on their device, not giving them an option to choose which one to use. Separate accounts are a way to fix this.

Another issue to keep in mind is that if you, like me, have multiple Gmail accounts on your device, and those Gmail accounts are each one assigned to a different track (or a track and internal testing), again the latest build is the only one we are going to get on our devices, even if you switch accounts in the Play store. the only way to work around this at the moment is to be logged in only with one account in the Play Store.