Sample deliverable

QA Sprint Report — "QuickList" (fictional demo app)

This is a fabricated example, built to show the format, depth, and evidence standard of a real $22 QA Sprint report — not a report on any real product. Names, screenshots, and logs below are illustrative placeholders standing in for the real screen captures a paid pass includes.

1. Summary

App under test: QuickList v0.9.2 (Android APK, AI-generated via a no-code app builder)
Tester: Indie App QA Sprint
Test window: 2026-09-11 14:00–2026-09-13 09:00 UTC
Devices: Pixel 6 (Android 14, physical device), Galaxy A13 (Android 12, physical device), Pixel 4a emulator (Android 11, 5.8" screen)
Scope: Onboarding, account creation, core list-management flow, data persistence, settings, logout/session handling

Headline result: 1 critical bug blocks core usage for any list item with a long title. 1 high-severity bug allows account creation with an empty password, which is a real security exposure once this ships past a demo. 3 medium/low issues affect polish, not function. Full detail below.

2. Bug list

IDSeveritySummaryRepro rate
QL-01CriticalApp crashes on save when list title > 80 characters10/10 attempts, both physical devices
QL-02HighSign-up succeeds with an empty password field5/5 attempts, all devices
QL-03MediumPull-to-refresh resets manual item order to creation order3/5 attempts
QL-04MediumLogout does not clear cached list data — old data briefly visible on next login as a different user4/6 attempts
QL-05LowSettings gear icon misaligned ~4px on screens ≥768px wideVisual, consistent

3. Detail & repro steps

QL-01 — Critical — Crash on long list title

Steps to reproduce:

  1. Open QuickList, tap "New List"
  2. Enter a title longer than 80 characters (e.g. a pasted sentence)
  3. Tap "Save"

Expected: Either the input is capped at a sane length client-side, or the save succeeds with the full title.

Actual: App crashes immediately with an unhandled exception. Logcat shows a null pointer inside TitleValidator.truncate() — the validator assumes a maximum length that isn't enforced on the input field, so it indexes past the string bounds.

[evidence: screen recording quicklist-crash-QL01.mp4, 0:08, shows crash from tap to error dialog]
[evidence: logcat-QL01.txt, stack trace attached in full report]

Why it matters: Any user pasting a title from another app (common — people paste from Notes/Reminders) hits this immediately. This is a first-session crash risk, not an edge case.

QL-02 — High — Empty password accepted at sign-up

Steps to reproduce:

  1. Open sign-up screen
  2. Enter a valid email, leave password field blank
  3. Tap "Create account"

Expected: Client and/or server validation rejects an empty password with an inline error.

Actual: Account is created successfully with no password set. The account can subsequently be logged into by entering the email and leaving the password field blank.

[evidence: screen recording quicklist-signup-QL02.mp4]
[evidence: screenshot of successful login with blank password, login-QL02.png]

Why it matters: This isn't cosmetic — it's an authentication bypass in the generated auth scaffold. If this ships, any account is accessible to anyone who knows or guesses the email address.

QL-03 — Medium — Sort order reset on refresh

Manually reordering list items (drag-to-reorder) and then pulling down to refresh resets the list to creation-date order, discarding the user's manual sort. Reproduced 3 of 5 attempts — intermittent, likely a race between the local reorder write and the refresh fetch overwriting it before the write commits.

QL-04 — Medium — Stale data visible across accounts on shared device

Logging out of Account A and immediately into Account B briefly shows Account A's list data before the UI refreshes with Account B's data (roughly 1–2 seconds). On a shared or demo device this is a real privacy leak, not just a flicker.

QL-05 — Low — Settings icon misalignment

Cosmetic only. The settings gear in the bottom nav sits ~4px off-center on screens 768px and wider (tablets, foldables unfolded). Does not affect function.

4. UX friction log (non-bugs worth fixing)

5. What held up (tested, not broken)

Core create/read/update/delete on list items functioned correctly outside the two bugs above. Session persistence across app restarts worked correctly on all three devices. Offline item creation queued and synced correctly once connectivity returned.

6. Fix-this-first summary

  1. QL-01 — cap title length client-side and fix the validator bounds check. Ships-blocking.
  2. QL-02 — enforce non-empty password server-side, not just client-side. Security-blocking.
  3. QL-03 and QL-04 — worth fixing before a public beta, not before an internal one.
  4. QL-05 — cosmetic, fix whenever convenient.

This sample is illustrative. A real report includes actual screen recordings and screenshots as file attachments alongside the written document, plus device/OS build numbers and exact app version tested.

Get your app tested — $22 →