Android testing is normally made up of some or all of the following parts:
Test automation - for any Android app with some degree of complexity, inevitably, you will have to write scripted tests and automate their running. There are two main types of automated tests: end-to-end tests and unit tests.
UI automation / system tests - in this type of full system test, a real user is simulated. The test checks how all components of the system work together. This form of testing involves launching the app on real device, then automating interaction with the user interface to perform certain user actions (such as touching, swiping), and then checking the test result. For example, you can run an end-to-end test that 1) logs into the app and 2) tries to upgrade from a free to paid subscription. This process is a highly sensitive operation, and one that must be tested from end-to-end. Because system tests are “costly” in terms of computing resources and also more complex to run, you always need to prioritize and test only the most important workflows in your application. Another challenge is that system tests run differently on different Android configurations (for example, on an iPad vs. on an iPhone). That means you have to run each test several times – once for each configuration you intend to support
Selenium UI automation – the open-source Selenium project has already become the de-facto standard for scripting and running end-to-end tests in the non-mobile automated testing world. Testdroid strongly believes in leveraging this standardization effort to include mobile testing, too. Our mobile testing offering supports Selenium and provides a painless ramp-up for existing Selenium users.
Manual testing - you do this by running a Bitbar Testing's remote manual access (on Android), or by installing and testing the app on a real iPhone or iPad. Testdroid can help you perform manual testing on multiple Android configurations without having to set up the complex device lab yourself.
We see two basic scenarios for running end-to-end tests:
Running UI automation yourself - you can use your own real devices o run scripted end-to-end tests. But the number of tests you can possibly run, and the different iOS configurations you are able to test will be limited by the number of machines and mobile devices you actually own. In addition, you must install and manage the infrastructure on your own.
Running UI automation in the cloud - Testdroid provides the most versatile selection of different Android devices in the cloud and allows you to run end-to-end tests on the provider’s servers in the cloud — you need only supply your app and a test script. The number of servers at the cloud provider far exceeds the number any one tester can set up. Also, Testdroid has already set up hundreds of Android version-device combinations, so you cover more options and run more tests more quickly. But there’s a price to all this versatility- you’ll need to pay the cloud provider, usually based on the number of tests you perform and in accordance with test complexity.
Unit testing - a unit test involves coding to test a single component of an app, taken in isolation. The test typically passes to the component a series of variables, and checks that the component returns the correct values. Running unit tests is faster and far less “costly” than running full system tests, because you don’t have to initiate a full instance of Android for each test. Instead, you can run a large number of tests together on a local machine. Apple’s XCode development environment lets you create and run unit tests for Android apps. It is often used together with Kiwi, an Objective-C unit testing framework, which aims to improve the readability of tests and make test running and error reporting more seamless.