Testers must rely heavily on an application's functional specification, as well as any user interface documentation, to determine whether features and functionality have been properly implemented. The application features and workflow must be thoroughly documented at the screen level and then validated by testing. In larger teams, it is not uncommon for interpretive differences to exist between the functional specification, the developer's implementation, and the tester's resulting experience. These differences must be resolved as part of the defect-resolution process.
Testers of Android applications have a variety of tools at their fingertips. While some manual testing is essential, there are now numerous opportunities for automated testing to be incorporated into testing plans.
Test plans need to cover a variety of areas, including the following:
► Functional testing—This testing ensures that the features and functions of the application work correctly, as detailed in the application's functional specification.
► Integration testing—This testing ensures that the software integrates well with other core device features. For example, an application must suspend and resume properly, and it must gracefully handle interruptions from the operating system (for example, incoming messages, calls, powering off).
► Client/server testing—Networked mobile applications often have greater testing requirements than stand-alone applications. This is because you must verify the server-side functionality in addition to the mobile client.
► Upgrade testing—Android phones receive frequent firmware updates, necessitating application upgrades. When possible, perform application upgrade testing of both the client and the server to ensure that any upgrades go smoothly for users.
► Internationalization testing—This testing ensures internationalization support—especially language support—early in the development process. If an application is supporting multiple languages, you're likely to run into some problems in this area related to screen real estate as well as issues such as date formatting.
► Usability testing—This testing identifies any areas of the application that lack visual appeal or are difficult to navigate or use. It verifies that the application's resource consumption model matches the target audience. For example, gamers might accept shorter battery life for graphic-intensive games, but productivity applications should not drain the battery unnecessarily.
► Performance testing—This testing uses the debugging utilities of the Android SDK to monitor memory and resource usage; it also identifies performance bottlenecks as well as dangerous memory leaks and fixes them.
► Conformance testing—This testing reviews any policies, license agreements, and terms that an application must conform to and verifies that the application complies.
► Edge-case testing—An application must be robust enough to handle random and unexpected events. We've all forgotten to lock our phones on occasion, only to find that the phone has received random key presses, launched random apps, or made unnecessary phone calls from the comfort of our pocket. An application must handle these types of events gracefully. That is to say, it shouldn't crash. You can use the Exerciser Monkey tool that comes with the Android SDK to stress-test an application.
Was this article helpful?