Verifying an Android application.
WHAT LEVELS EXIST
Unit tests, running on a development machine Instrumented tests, running on a device or emulator Interface tests, driving the application
WHAT TO KEEP AS UNIT TESTS
Business logic and view models, with platform dependencies substituted.
WHY
They run in seconds, not minutes.
WHAT TO TEST ON A DEVICE
Anything depending on the platform: database, navigation, the interface.
WHAT TO AVOID
Tests depending on timing Tests depending on network availability Tests depending on each other's order
WHY
Intermittent failures get ignored, which defeats the purpose.
WHAT TO TEST SPECIFICALLY ON MOBILE
Rotation mid-task Backgrounding and returning Permission refusal No network Slow network Upgrade from the previous version
WHY THAT LAST ONE
It is the most commonly skipped and most commonly damaging.
WHAT TO AUTOMATE
The suite, on every change.
WHAT TO TEST MANUALLY
On a modest physical device, before every release.