Android App Performance Testing: What to Measure and How

The signals that matter in Android performance testing, from cold start and frame rendering to memory, network use, and ANRs, plus the tools that measure each one.

Reviewed August 24, 2026Moderate change risk — verify before applying4 min read2 official sources

Written & maintained by AppsTestLabAbout AppsTestLabHow we research

An illustration of performance graphs and issue reports for an Android app
An illustration of performance graphs and issue reports for an Android app
On this page
  1. What to measure
  2. How to run the test pass
  3. ANRs deserve their own attention
  4. Frequently asked questions

A feature-complete app can still fail if it stutters while scrolling, takes too long to open, or freezes and triggers an Application Not Responding (ANR) dialog. Performance testing is the practice of measuring those behaviors on real builds and real devices, before your users experience them. This guide covers what to measure, the tools for each signal, and how to fold the results into your release process.

What to measure

Performance is not one number. Break it into signals you can measure independently, because each one has a different cause and a different fix.

Common Android performance signals and where to see them
SignalWhat it tells youWhere to measure
Cold start timeHow long the app takes from launch icon to first interactive frameadb shell am start -W, Macrobenchmark
Frame renderingWhether UI work finishes in time or stutters while scrollingJankStats, Macrobenchmark, GPU rendering bars
ANRsThe main thread blocked so long the system shows App Not RespondingPlay Console Android vitals, logcat ANR traces
Memory growthObjects retained after you leave a screen, a classic leak signAndroid Studio Memory Profiler
Network transferBytes and requests each screen makes on launch and refreshNetwork Inspector in Android Studio
Battery and wakeupsBackground work that drains battery or wakes the device too oftenBatterystats, Android vitals
Common Android performance signals and where to see them

How to run the test pass

  1. Measure a baseline on the release build

    Performance numbers from a debug build are misleading because debugging adds overhead. Profile the same signed release build you plan to upload, on a device that matches your users.

  1. Capture cold start and warm start

    Launch the app from a forced stop and record the reported total time with adb shell am start -W. Repeat several times and keep the device in a consistent state between runs so the numbers are comparable.

  1. Exercise the heavy screens

    Scroll long lists, open image-heavy detail pages, and run the flows that touch the network. Watch frame timing in Android Studio and note any screen where work lands on the main thread.

  1. Loop for memory leaks

    Open and close the same screen repeatedly while watching the Memory Profiler. Heap usage that keeps climbing instead of settling down usually means a reference is being held after the screen is gone.

  1. Test under real conditions

    Repeat the pass with a weak network profile, battery saver enabled, and the app returning from the background. Slow conditions expose problems that a fast office network hides completely.

ANRs deserve their own attention

An ANR happens when the main thread is blocked long enough for the system to declare the app unresponsive, commonly while handling a touch event or running a long broadcast. Android's documentation explains the triggers, and Play Console's Android vitals reports how often production users hit them. When you see an ANR, the stack trace in the trace file points at whatever the main thread was doing at that moment.

Once the pass is done, the work is not finished. Android vitals keeps watching crashes and ANRs for every production release, which is how you learn whether a performance fix actually held. Teams that want this measured on a device matrix without building it in house can hand the pass to AppsTestLab as part of a wider Android App Testing engagement.

Frequently asked questions

Frequently asked questions

Do I need physical devices for performance testing?

Emulators are useful for repeatable Macrobenchmark runs, but CPU, thermal, and storage behavior varies on hardware. Use at least one real low-end device, because that is where jank and long startups show up first.

How is performance testing different from functional testing?

Functional testing asks whether the feature works. Performance testing asks whether it works fast and smoothly enough to keep using. A checkout can be functionally correct and still fail users if each screen takes several seconds to render.

Sources & references

Official Google documentation

These links open Google's official Play Console Help pages used to verify this guide. AppsTestLab guidance is independent and not affiliated with Google.

Get help doing this

AppsTestLab can run your testing for you

Ready to test?

5,000+ apps tested. A 99% historical approval rate. And a 100% money-back guarantee.

Tell us about your app and we'll confirm the right testing approach. One WhatsApp message to start, no complicated setup.

Guarantee applies to eligible app testing orders · Google makes the final approval decision

Chat on WhatsApp