Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?

Mobile Testing

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.

Layout

  • Orientation layout changes
  • Transitions and animations
  • Support for slideover & multi-tasking on the iPad

Lifecycle Events

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

Forms

  • 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

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)

Connectivity

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)

Internationalization & Localization

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

General

  • 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.)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment