Embedded apps for Android are easy to develop, with some of the simpler ones completed in a few short hours - some claim minutes. Android is a dynamically configured software environment, but application software is isolated from lower level Android hardware platform functionality by virtue of the Java language definition and the use of predefined APIs and libraries. Android uses XML as part of the language environment and relies on logical and physical isolation between applications. The built-in virtualization is required to permit Android to manage the wide array of unique apps that are available. For example, there are an overwhelming 27,000 apps from which to choose – each of which must operate correctly.
All of this software has to operate in concert with other applications that are loaded into the Android-appliance. With thousands of apps available for Android-based platforms, how do you ensure correct operation of your applications? Part of the answer lies with the architecture of the Android platform itself. By limiting software span of control though well-defined APIs, the environment provides a first defense against faulty software. But commercial apps developers want to provide reliable software that provides the intended function. Providing that the app is targeted to a well behaved and correct Android system, the problem is fairly straightforward. The testing and validation problem becomes more significant when the totality of the Android environment is considered. Low level modifications and additions, other middle ware, and the Android software platform itself must work as the Androidstandard specifies. And, so the application must work as intended in the Android environment.
The bigger picture of Android testing is daunting: the Android environment includes thousands of validation tests that must be passed to begin the process of ensuring correct app operation, BSP-specific tests must likewise verify that the hardware is operating as designed, hardware test sequences also verify correct component function, and user interface interactions must be tested.
Software unit test, application validation, Linux kernel operation verification, and correct device operation validation are absoluterequirements. Wind River goes a long way towards providing the tools necessary to automatically control and manage the application of test sequences to Android-based hardware and the software environment.
Wind River Systems (1) Framework for Automated Software Testing (FAST) aids developers to determine software compliance, measure performance, and assess stability of mobile devices running the Android environment. The test tool accepts the results of a build, can execute a selection of Wind River–authored tests, invoke existing open source scripts including scripts that validate many third party software such as the Java runtime environment, and archive the relevant results. FAST can then provide the results in a single report. All of the operations of FAST can be managed in a completely automated way once appropriate test, scripts, and configurations are selected for FAST.
Using FAST reportedly can save up to 25% of the project development time. Much of the time savings comes from the systematic integration of existing Android test suites, which number in the hundreds and perhaps thousands, with specific tests developed by Wind River as part of the Android FAST environment. FAST incorporates:
- Android Compatibility Test Suite (CTS)
- MeeGo Core Test Suite (MCTS)
- Android Monkey
- Java instrumentation
- Wind River Android Device Characterization Suite (ADCS)
- Hardware Abstraction Layer (HAL)
Other facilities of FAST include integration of tests run under other test frameworks such as:
- Linux Test Project (LTP)
FAST can be augmented by test code created by development teams to test unique hardware, specific application functionality, and quality/reliability issues such as the use of root kits.
Wind River also offers the UX Test Development Kit that can be used to write additional Android-specific tests of the User Interface. While FAST already includes some tests developed by the company using the UX kit, developers can create additional tests using the kit. Engineers can simulate clicking widgets in the user interface, dragging graphical elements, reading the contents of the User Interface elements, and typing entries on a physical or virtual keyboard. Automating this aspect of testing can save considerable time and effort.
Gaining the most utility from the FAST tool requires flexibility in the tool’s user interface. Wind River FAST provides test engineers two different interfaces for controlling automated test execution. One of the methods is based on a web user interface, while the second relies on a command-line interface. Regardless of the interface method selected, test engineers can determine which tests to run and which results to view. The command line interface provides greater flexibility for engineers who wish to integrate FAST’s results with other development tools, including Eclipse-based tools. Tests are easy to configure and run using FAST. Test engineers can create a control file through the command line interface that specifies all aspects of the tests, including the test targets, user running the tests, which tests to run, and test run priority. The tool also provides a regression test report through the web interface. Many of the tests and test results can be scheduled to run at specific times and the results emailed to recipients defined in the control file.
In the next installment on Android, we’ll talk about Android solutions for Intel Architectures and some specific Intel-based hardware platforms using Android.
1. Wind River Systems is an Associate member of the Intel Embedded Alliance
Roving Reporter (Intel Contractor)
Intel® Embedded Alliance