Skip to main content

How to install a test app onto your mobile device


In this post I'll describe how to actually get test versions of the app onto a device. But first let's discuss whether you should test on an actual device or on an emulator. An emulator is a desktop application that mimics the hardware and OS of a mobile device. The developers will generally do their app development on an emulator and you can use them for early stage testing but when it comes to meaningful end to end testing, a device is a must have. There is no other way to get a feel for the performance of the app and how users will use it real life.

Of course you will probably need to test on multiple devices as they vary not only by OS (iOS and Android) but also OS version, device make (e.g. Samsung or Motorola), and screen size. We also now have a new OS for iPads called iPadOS. In a future blog post I'll look at device fragmentation and how to handle it.

For now let's assume you are only testing on one iOS device and one Android device. Your developers have developed the first version of the app and you want to try it out. How do you get it onto your test device? Native mobile apps are delivered as .apk files for Android and .ipa files for iOS. There are ways to install these file directly onto your device but generally you would use a third party app that links in with your CI pipeline and allows you to download new versions of the app directly onto your device.

I use TestFlight for iOS and App Center for Android apps. You can install the TestFlight app directly from the App Store onto your test device. You will probably find it easier to create a separate Apple ID for testing rather than use your personal Apple ID. Before you can actually use TestFlight to install an app, you need to be subscribed to a specific app channel. You will receive an email invite that contains a Redeem Code. In the TestFlight app, you enter the Redeem Code and you will be subscribed to the channel for that app. You will receive a notification once a new build is available. You can then install or update your current build via the TestFlight app. It forces developers to create proper version numbers for their apps and I find TestFlight very useful for installing and keeping track of app versions.





For Android I use App Center which is a web based tool for installing apps. It is a Microsoft product and is now part of Visual Studio. Again you will need to be setup on App Center and subsribed to the app channel that you intend to test. Once this is synced with your CI system, you will get an email from App Center every time a new build is available. The simplest way to install the Android app, is to forward the email to your device. I usually setup a Gmail account on the Android device specifically for testing. On the device I open the email and select the Install button. This will prompt a download of the .apk file which you can then install.

Here is an example of an App Center email for one of the apps that I test (with references to any confidential information blacked out):




You now have the test versions of the app on your device and you can start testing. When new builds come through you can either update the existing app or uninstall the app and then install the new build.

Comments

Post a Comment

Popular posts from this blog

Let’s stop writing automated end to end tests through the GUI

What’s the problem? I have not been a fan of Selenium WebDriver since I wrote a set of automated end-to-end tests for a product that had an admittedly complicated user interface. It was quite difficult to write meaningful end-to-end tests and the suite we ended up with was non-deterministic i.e. it failed randomly. Selenium Webdriver may be useful in very simple eCommerce type websites but for most real world products it’s just not up to scratch. This is because it’s prone to race conditions in which Selenium believes that the UI has updated when, in fact, it has not. If this happens, the automated check will fail randomly. While there are techniques for reducing these race conditions, in my experience it is difficult to eradicate them completely. This means that automated checks written with Selenium are inherently flaky or non-deterministic. Maintenance of these automated checks becomes a full time job as it is very time consuming to determine whether a failing check is actuall

How I got rid of step by step test cases

In my last blog post I told you what I think is wrong with step by step test cases. In this blog post I’ll tell you how I got rid of step by step test cases at the company I work for. When I joined Yambay about 18 months ago, the company was following a fairly traditional waterfall style development approach. They had an offshore test team who wrote step by step test cases in an ALM tool called Test Track. Over the past 18 months we have moved to an agile way of developing our products and have gradually got rid of step by step test cases. User Stories and how I use them to test Getting rid of step by step test cases didn’t happen overnight. Initially we replaced regression test cases and test cases for new features with user stories that have acceptance criteria. The key to using a user story to cover both requirements and testing is to make sure that the acceptance criteria cover all test scenarios. Often product owners and/or business analysts only cover typical scenarios. It

Automating Regression Testing

In my last blog post I described how we have got rid of step by step test cases but didn’t have any automated regression tests. Since then we have embarked on a test automation journey and we are building up a suite of automated regression tests. In some of my older posts on unit and integration testing I talked about “valuable” automated tests. In summary, a valuable automated test is one which: Has a high chance of catching a regression error Has a low chance of producing a false positive Provides fast feedback Has low maintenance cost The more code that is covered, the more chance there is of catching a regression error. End to End (E2E) tests are good for this but feedback is often too slow. So how do we make E2E automated tests more valuable? They already have a high chance of catching a regression error and a low chance of producing a false positive but they tend to be slow and have a high maintenance cost. How can we improve those two aspects? A good way to do this i