Story by
Josip Virovac

t-matix IoT platform has several working components, one of which is a mobile app. Its main purpose is to enable IoT devices remote tracking and controlling.

In the early days of t-matix, there were only a couple of branded apps emerging from the same code base, so maintaining, testing and deploying was pretty easy. At that time, developers would build apps on their machines, and the built packages were then deployed manually in Store or TestFairy for further distribution. As the number of customers grew, we realized automation is a must, so we set our sights on App Center. In this blog post I will give an overview of App Center usage within the t-matix mobile app development team.

Used App Center integrated services:

  1.  Build
  2.  Test
  3.  Distribute
  4.  Diagnostics

1. Build

Connect to git

To start using this service it is necessary to connect to a source control system. App Center supports building apps in git repositories hosted on: Azure, Bitbucket, GitHub and GitLab. When we started using App Center, GitLab was not supported, so we mirrored our GitLab repository to Bitbucket (GitLab provides great documentation on how to do that).

Build configuration

The first thing to do before configuring app builds is defining apps by their names, OS and platform, maybe a nice icon as well just to keep them recognizable, as shown in figure 1.

The following diagram shows a small part of the system running on the Kubernetes cluster
Image 1.  App Center apps overview

Once the source control and App Center are synced and we have our apps defined, we start configuring builds.

Image 2.  t-matix GitLab, App Center organisation

t-matix mobile app repository is organized around a development branch, making it our main checkout point for new features development and release. Apart from the development branch, for each app we have defined two separate branches; one for internal/testing releases and the other for store release/publishing.
The development branch is configured in such a way that it builds the T-matix app on each push; this way we make sure new changes can be built in App Center.

Once we schedule the release date, the development branch is merged to release branches which are configured for building and deploying to testers or store.

Build configuration is easy when you see the build configuration form, and the only thing I would point out is the iOS build signing. Signing builds for store require an App Store provision profile, while those for internal distribution require an Ad Hoc provision profile.

2. Test

App Center provides great support for UI testing – at t-matix we use Xamarin.UITest framework to test our apps. Apart from the main solution which contains all apps, we have created another solution that contains test projects for each app.

Tests are written in C#, follow an arrange-act-assert pattern, and each test set is designated to a particular screen, for instance LoginScreen, AlarmsScreen and so on. Once the tests are started, the execution and the final result can be monitored in App Center.

Image 3.  Test runs overview

Each test step can be closely examined by looking at created screenshots and info in Test Failures, Test Logs and Device Logs.

Image 4.  Test run instance

3. User management and distribution

App Center organizations (e.g. t-matix solutions) organize people into three different interconnected groups, namely: collaborators, teams, and distribution groups.

t-matix collaborators are people related to mobile app development, testing or distribution, and they are divided in two teams:

Mobile – this team includes all developers, who are given developer privilege for all apps,

QA – this team consists of testers and designers, who are given viewer privilege for all apps.

Apart from developer and viewer privileges, there is also manager privilege, which is, for each app, assigned to a specific person instead of a team.

The distribution groups that we defined are the following:

Mobile Development Team – consists of developers,

QA – includes people from the QA team,

{AppName}-Internal – T-Matix staff who require app releases, e.g. sales, customer service, etc.,

{AppName}-External – usually client representatives.

Distribution

Before store release, apps are distributed to QA and App Internal Group, and if we are satisfied with the app, it gets released to store via App Center. The first version of the app has to be submitted using Google Play Console or iTunes Connect, but regardless of that

every new update is just a few clicks away using App Center.

4. Diagnostics

Using the Diagnostics service is a great way to monitor app health, especially after major releases and updates.

Image 5.  Diagnostics overview

In order to automate dealing with crashes, App Center enables JIRA integration, so after each crash a task is automatically created for a designated project and assigned to team lead.

Image 6. A task created by App Center Crash

Wrap up

We are still figuring out the best way to organize our development process using App Center, but this service is definitely the way of the future. Not only is building, testing and deploying just a few clicks away, but also the unnecessary manual communication among stakeholders is almost obsolete, since everyone has insight into mobile app development state. Simply put, App Center allows mobile app developers to focus on development only, and most of the other things are either automated or executed by non-developers.

Other blogs

PLATFORM
December 18, 2019
Continuosly building, testing, releasing and monitoring t-matix mobile apps

Story by
Josip Virovac

PLATFORM
November 5, 2019
Kubernetes-what is it? And how do we use it?


Story by
GORAN PIZENT

PLATFORM
September 25, 2019
Locust- a Hidden Gem in Load Testing


Story by
Igor Crnković

View all