This document helps you assess basic aspects of quality in your app through a
compact set of core app quality criteria and associated tests. All Android
apps should meet these criteria.

Before publishing your apps, test them against these criteria to ensure that
they function well on many devices, meets Android standards for navigation
and design, and are prepared for promotional opportunities in the Google Play
store. Your testing will go well beyond what's described here—the purpose of
this document is to specify the essential quality characteristics all apps
should display, so that you can cover them in your test plans.

If you're creating apps for tablets and or Google Play for Education there
are additional quality criteria you should consider, which are defined in the
Tablet App
Quality guidelines and Education
Guidelines.

Visual Design and User Interaction

These criteria ensure that your app provides standard Android visual design
and interaction patterns where appropriate, for a consistent and intuitive
user experience.

App does not request permissions to access sensitive data (such as
Contacts or the System Log) or services that can cost the user money
(such as the Dialer or SMS), unless related to a core capability of the
app.

Supporting installation to SD card is recommended for most large apps
(10MB+). See the App Install
Location developer guide for information about which types of apps
should support installation to SD card.

App preserves user or app state when leaving the foreground and
prevents accidental data loss due to back-navigation and other state
changes. When returning to the foreground, the app must restore the
preserved state and any significant stateful transaction that was
pending, such as changes to editable fields, game progress, menus,
videos, and other sections of the app or game.

When the app is resumed from the Recents app switcher, the app
returns the user to the exact state in which it was last used.

When the app is resumed after the device wakes from sleep (locked)
state, the app returns the user to the exact state in which it was last
used.

When the app is relaunched from Home or All Apps, the app restores
the app state as closely as possible to the previous state.

On Back keypresses, the app gives the user the option of saving any
app or user state that would otherwise be lost on back-navigation.

With StrictMode enabled (see StrictMode
Testing, below), no red flashes (performance warnings from
StrictMode) are visible when exercising the app, including during game
play, animations and UI transitions, and any other part of the app.

App screenshots or videos do not represent the content and experience of
your app in a misleading way.

User Support

GP-X1

Common user-reported bugs in the Reviews tab of the Google Play page are
addressed if they are reproducible and occur on many different devices.
If a bug occurs on only a few devices, you should still address it if
those devices are particularly popular or new.

Related resources

Setting Up a Test Environment

To assess the quality of your app, you need to set up a suitable hardware or
emulator environment for testing.

The ideal test environment would include a small number of actual hardware
devices that represent key form factors and hardware/software combinations
currently available to consumers. It's not necessary to test on
every device that's on the market — rather, you should focus
on a small number of representative devices, even using one or two devices
per form factor.

If you are not able to obtain actual hardware devices for testing, you should
set up emulated devices
(AVDs) to represent the most common form factors and hardware/software
combinations.

To go beyond basic testing, you can add more devices, more form factors, or
new hardware/software combinations to your test environment. You can also
increase the number or complexity of tests and quality criteria.

Test Procedures

These test procedures help you discover various types of quality issues in
your app. You can combine the tests or integrate groups of tests together in
your own test plans. See the sections above for references that associate
specific criteria with specific tests.

Type

Test

Description

Core Suite

CR-0

Navigate to all parts of the app — all screens, dialogs,
settings, and all user flows.

If the application allows for editing or content creation, game
play, or media playback, make sure to enter those flows to create or
modify content.

While exercising the app, introduce transient changes in network
connectivity, battery function, GPS or location availability, system
load, and so on.

CR-1

From each app screen, press the device's Home key, then re-launch the app
from the All Apps screen.

CR-2

From each app screen, switch to another running app and then return to
the app under test using the Recents app switcher.

CR-3

From each app screen (and dialogs), press the Back button.

CR-5

From each app screen, rotate the device between landscape and portrait
orientation at least three times.

CR-6

Switch to another app to send the test app into the background. Go to
Settings and check whether the test app has any services running while in
the background. In Android 4.0 and higher, go to the Apps screen and find
the app in the "Running" tab. In earlier versions, use "Manage
Applications" to check for running services.

CR-7

Press the power button to put the device to sleep, then press the power
button again to awaken the screen.

CR-8

Set the device to lock when the power button is pressed. Press the power
button to put the device to sleep, then press the power button again to
awaken the screen, then unlock the device.

CR-9

For devices that have slide-out keyboards, slide the keyboard in and out
at least once. For devices that have keyboard docks, attach the device to
the keyboard dock.

CR-10

For devices that have an external display port, plug-in the external
display.

CR-11

Trigger and observe in the notications drawer all types of notifications
that the app can display. Expand notifications where applicable (Android
4.1 and higher), and tap all actions offered.

CR-12

Examine the permissions requested by the app by going to Settings >
App Info.

Download your feature graphic and screenshots and scale them down to
match the display sizes on the devices and form factors you are
targeting.

GP-3

Review all graphical assets, media, text, code libraries, and other
content packaged in the app or expansion file download.

Payments

GP-4

Navigate to all screens of your app and enter all in-app purchase flows.

Testing with StrictMode

For performance testing, we recommend enabling StrictMode
in your app and using it to catch operations on the main thread and other
threads that could affect performance, network accesses, file reads/writes,
and so on.