Skip to main content

How do I test a native Mobile App?

Upload an APK or IPA, create a Mobile Test Case, record against a live device, and watch a Mobile Run.

Written by Ines

Thunders runs Test Cases against native iOS and Android apps on real devices and emulators, in the same editor you use for web tests. You upload a build as an APK or IPA file, point a Test Project at it, then write steps in plain language exactly as you would for a browser. The differences are the Mobile App build, the devices the test runs on, and a set of Mobile Run settings that only apply to a phone.

Before you start

  • A build of your app, as an .apk file for Android or an .ipa file for iOS.

  • A Test Project. You can create a Mobile Project, or add a Mobile App to a Test Project that already tests a web front end.

  • A Device Pool, which decides what hardware your tests run on. Every Test Project starts with a default Device Pool, so you only need to set one up when you want specific devices.

Add your Mobile App

  1. Open your Test Project and select Configure, then Apps.

  2. Select Add app and choose Mobile App.

  3. Upload the build. The uploader accepts APK or IPA, and you can drag the file in or browse for it.

  4. Save the app.

A Test Project can hold several Apps. A single Mobile Run targets one Mobile App on one Device Pool, so an iOS build and an Android build are two runs rather than one.

Create a Mobile Test Case

  1. Open the Test Cases list.

  2. Select New Mobile Test Case from the platform group.

  3. Choose the Mobile App the Test Case should run against. The editor asks for this before it lets you run, and shows "Select a mobile app to run this test" until you do.

  4. Write the steps in plain language, the same way as a web test.

Web and Mobile Test Cases cannot be mixed. A reusable Test Case cannot be shared across the two, and the editor explains "You can't reuse test cases across web and mobile" when you try.

Record instead of writing

The Recorder works against a live device. Open it and you drive a real phone in the browser: tap, swipe, scroll and type on the device screen, and Thunders turns what you did into steps.

The device controls give you Back, Home, Hide keyboard and Rotate device. Pause is not available for mobile recordings, so record the flow in one pass and trim the steps afterwards.

If the stream does not appear, your gestures still reach the device. The Recorder says so rather than failing, and you can use Reload stream to bring the picture back.

Watch a Mobile Run

A Mobile Run shows a live device view while it executes, in Portrait or Landscape. Switch Preview mode between Live and Screenshots if the stream is unreliable on your connection, and use Reload stream if the view freezes or goes blank.

Afterwards, the run report is the same one you already know.

Frequently asked questions

How do I cover both iOS and Android?

Run each platform as its own Mobile Run, then group them in a Test Set so a single action launches both. A run targets one Mobile App on one Device Pool, which keeps each platform's results separate and easy to read.

How do I organise web and mobile coverage?

Keep them as separate Test Cases, since each platform has its own steps and its own run settings. Group both in one Test Set when you want a single action to cover the whole product.

Do my tests run on real devices or emulators?

Both are available. The Device Catalog marks each device Physical or Emulator, and you choose which ones your pool contains.

How do I control app state between runs?

With the App reset setting: keep the app's data, wipe and reinstall it, or uninstall and install fresh from the build.

How quickly does a Mobile Run start?

Often immediately. Thunders keeps real devices warm with your Mobile App already installed and open, so a run attaches to one rather than waiting for a handset to be found and booted. The Device picker shows a Warm badge when one is ready.

Do Mobile Runs cost the same as web runs?

Mobile Runs consume credits like any other Test Run.

Did this answer your question?