Skip to content
99tests Blog
How 99tests works

What a 99tests report looks like, section by section

A walk through a real-format 99tests report: the summary, the case-by-device coverage table, verified findings with recordings, the verification record and the not-run list.

Hand-drawn sketch of a report page with a grid of ticks and crosses, beside a phone playing a recording and a tick stamp, titled What a 99tests Report Looks Like
In this article
  1. 1. The summary: read this first
  2. 2. The coverage table: every case on every device
  3. 3. Findings: what broke, where, and how to see it
  4. 4. The verification record: what was accepted, merged and rejected
  5. 5. Devices and sessions: who tested what, when, on which network
  6. 6. Not run: nothing quietly passed
  7. 7. Re-run after the fix
  8. What to look for in any test report
  9. See it yourself

Before you pay for any testing service, look at what you get back. A report decides whether your developers can fix things the same day or spend the morning asking "which phone was this on?"

This post walks through the 99tests sample report section by section. It is the exact format every job delivers, for a made-up shop app called ShopEasy: a Standard job on build 4.12.0 checkout, delivered on 17 September 2026.

1. The summary: read this first

The top of the report is five numbers and one paragraph.

Cases run47
Pass on all devices39
Fail on at least one device6
Blocked1
Not run11

Under the numbers sits a plain-language verdict, written for whoever decides whether the release goes out:

Two S1 findings, cart loss on UPI app switch (Galaxy A15) and a blocked address editor on Safari (macOS), block release on those targets. Everything else is S2 or below.

A product manager can stop reading here and make the call. Everyone else keeps going.

2. The coverage table: every case on every device

The coverage table is a grid: test cases down the side, devices across the top. In the sample the devices are a Redmi 12 (Android 13), a Galaxy A15 (Android 14), Chrome 128 on Windows 11 and Safari 17 on macOS 15. Each cell is pass, fail, blocked or not run, and every fail links to its finding.

A few rows from the sample:

Test caseRedmi 12Galaxy A15Chrome, WindowsSafari, macOS
TC-001 Login with OTP (P1)PassPassPassPass
TC-004 Add to cart, offline (P2)FailPassFailPass
TC-009 UPI payment, app switch (P1)PassFailPassBlocked
TC-015 Change address mid-checkout (P1)PassPassPassFail
TC-021 Saved card payment (P1)PassPassFailPass

This is the part automation reports don't give you. TC-009 passed on the Redmi 12 and failed on the Galaxy A15, so the bug is in how the app handles one phone's behaviour, not in the payment flow itself. That one row tells a developer where to start.

3. Findings: what broke, where, and how to see it

Each finding is written so a developer can reproduce it without asking anyone. Here is the first S1 from the sample:

S1 · TC-009 · Galaxy A15: cart empties when returning from the UPI app

  • Device: Samsung Galaxy A15, One UI 6, Android 14, Jio 4G
  • Steps: add 2 items and go to checkout; choose UPI and let the UPI app open; press back before completing the payment
  • Expected: cart intact, payment marked pending
  • Actual: cart shows 0 items; order not created; no error shown. Reproduced 3 of 3 attempts.
  • Evidence: a 41-second screen recording and two screenshots
  • Verified: complete, unique, severity confirmed (confidence 0.94)

Every finding carries the same fields: device, OS build, network, steps, expected, actual, how often it reproduced, the recording, and the session it came from. Laptop findings add the browser version and viewport. The sample's Chrome bug, for instance, only happens at 1366 px wide and works at 1440 px and above.

Severity runs from S1, which blocks the release, down to S4; in the sample, S4 is dark-grey text on a dark receipt card. In the sample, one finding was moved from S2 to S3 during verification because a workaround exists, and the report says so.

4. The verification record: what was accepted, merged and rejected

Testers find things; a separate reviewer decides what reaches you. The sample's verification record reads:

Accepted7
Merged as duplicates2
Rejected (incomplete)1

Each finding was checked for complete reproduction steps and media, compared against the other findings on the job, and graded against the published severity rubric. One report that said only "payment slow" was rejected for lacking steps.

That's the difference between a crowd and a report. Without this step you get every tester's notes, duplicates included, and your team does the sorting.

5. Devices and sessions: who tested what, when, on which network

The session log lists all ten sessions: the device, the OS and browser, the network, the cases covered, when it started and how many findings it produced. In the sample, the Redmi 12 sessions ran on Jio 4G and Airtel 4G, the Galaxy A15 on Vi 4G, Jio 4G and Jio 5G, and the laptops on home broadband and fibre.

If a bug shows up only on one network, you can see it here.

6. Not run: nothing quietly passed

The last section lists what wasn't tested and why. In the sample, 11 cases (TC-048 to TC-058, wishlist and profile edits, all P3) were outside the package. One case on Chrome wasn't run because the tester's session ran out of time.

A report that leaves this out lets you assume coverage you didn't get. Here the fix is stated plainly: add five sessions to cover the rest on the same build.

7. Re-run after the fix

At the bottom is one button: re-run the same cases on the same devices against the new build. The two S1 bugs get checked on the Galaxy A15 and the Mac they failed on, not on whichever phones happen to be free.

The report comes as a hosted page and a PDF, so you can attach it to a Jira ticket or forward it to a client.

What to look for in any test report

Whether you buy from us or someone else, ask for a sample and check that it has:

  1. A verdict a non-engineer can act on
  2. Every case against every device, not just a bug list
  3. Device, OS build and network on every finding
  4. A recording for anything serious
  5. A record of what was merged and rejected
  6. A list of what was not run

See it yourself

Open the full sample report, with all 47 cases and 7 findings. When you're ready for one on your own app, pick a package: Starter is ₹9,999 + GST for up to ~25 cases on 2 devices, with this report in 3 business days.