In addition to general functional testings there are a number of quality of services requirements and cross cutting concerns that are specific to mobile. Here is a short list of some of the additional areas of a mobile application that should be considered when testing. Whenever possible, testing should be performed on physical devices.
- Orientation layout changes
- Transitions and animations
- Support for slideover & multi-tasking on the iPad
Ensure applications behaves as expected in response to different lifecycle events. The application state often needs in these scenarios. This is rarely exercised thoroughly during typical build & debug sessions.
- Enter/exit background
- Enter/exit active
- Clean install
- Upgrade
- Memory warnings
- Restart from force quit
- Appropriate keyboard type presented for input field
- Return key perfroms expected action
- Auto completion is appropriate for the form field
- Field only allows valid characters (field validation)
- Copy & paste does not allow invalid text to be pasted into the field
- View adjusts to support keyboard (e.g. adjusts scrollview appropriately)
- Support external keyboards
Performance testings should be performed on a wide range of physical devices with different pixel densities, chipsets, memory, etc. On iOS, use Instruments to measure performance.
- Battery
- Memory allocations and leaks
- CPU
- Simulate low memory warnings
- Hardware capability
(e.g. iPad doesn't support vibrate alerts)
On Mac and iOS, use the Network Link Conditioner to simulate different network conditions.
- Reachability
(e.g. Good Connection, but behind firewall) - No connectivity
(test with Airplane Mode) - Poor connectivity
(Use link conditioner to simulate poor connectivity scenarios on device or Mac) - Environments
- Ensure app is pointing to the correct environments for all endpoints
(dev,staging,beta,prod) - Bluetooth, Airplay, etc.
(if app supports connecting to external devices verify on physical hardware)
Localizing an app can help reach more markets. Even if an app isn't translated to multiple languages initially, it is recommended that apps at a minimum externalize text strings from the start.
- Strings are localized
- Validate layout can accommodate longer strings
- Left to right language support for languages such as Arabic
- Numbers, dates and currencies
- Location services and mapping
(simulate test locations with Xcode) - Permissions/privacy settings
(e.g. locations, contacts, photos, etc.)
On iOS go to the Settings apps and select General > Reset > Reset Location & Privacy to resent permissions - App interoperability
(e.g. Twitter, Facebook, etc.)