Skip to content
All posts
February 8, 20263 min read

Writing Bug Reports That Get Bugs Fixed Faster

A poor bug report wastes everyone's time. Developers can't reproduce it, spend hours asking clarifying questions, or fix the wrong thing. Here's how to write bug reports that lead directly to fixes.

TestingBug ReportsEngineeringBest Practices
Share:

A well-written bug report is worth five hours of debugging time. A poorly written one wastes that time.

Here's what separates actionable bug reports from noise.


The Elements of a Good Bug Report

1. A specific, descriptive title

Bad: "App crashes" Good: "App crashes when completing a task with a title longer than 100 characters"

The title should let a developer know immediately whether they've seen this bug before and how to start investigating.

2. Steps to reproduce

Numbered, explicit, minimal:

code
1. Create a task with a title of exactly 101 characters
2. Tap the task to open its detail screen
3. Tap the "Complete" button
4. App crashes

"Minimal" is key. Remove any steps not necessary to trigger the bug. The fewer steps, the faster it's reproduced and fixed.

3. Expected vs actual behavior

Expected: The task is marked as completed and remains visible with strikethrough styling. Actual: The app crashes with a NullPointerException.

This distinction tells the developer both what the right behavior is AND what went wrong.

4. Environment details

  • Device model and OS version (Samsung Galaxy S23, Android 14)
  • App version (2.3.1, build 156)
  • Network condition if relevant (offline, on mobile data)
  • Any account state if relevant (free tier, specific data in the account)

A bug that only occurs on Android 14 + Samsung is different from one that occurs everywhere.

5. Crash logs or error messages

Attach logcat output, stack traces, or error messages. "The app crashes" with a stack trace is 10x more actionable than "the app crashes" without one.


When You Can't Reproduce It Consistently

Intermittent bugs are harder but still reportable. Include:

  • Frequency: "Happens about 1 in 5 times"
  • Pattern: "Seems to occur after using the app for 20+ minutes"
  • Context: "I noticed it happens more often when switching between tasks quickly"

Even imperfect information narrows the search significantly.


Severity vs Priority

These are different:

Severity: How bad is the impact when the bug occurs?

  • Critical: Data loss, security breach, app unusable
  • Major: Core feature broken, no workaround
  • Minor: Non-critical feature affected, workaround exists
  • Trivial: Cosmetic issue, typo

Priority: How urgently should it be fixed?

  • P1: Fix immediately (production emergency)
  • P2: Fix in next release
  • P3: Fix when capacity allows
  • P4: Fix someday / maybe won't fix

A critical severity bug might be low priority if it affects 0.1% of users in a rarely-used flow. A minor severity bug might be high priority if it's in the main flow affecting every user.


Common Bug Report Mistakes

Vague titles that describe symptoms: "UI doesn't work" → "Task list doesn't scroll past item 50 on Android 13"

Missing reproduction steps: "Sometimes the app loses my data" with no steps is unresolvable.

Combining multiple bugs in one report: Report one bug per ticket. It's cleaner to track and assign.

Not including version information: Bugs are often version-specific. Without the version, the developer can't know if it's already fixed.

Not attaching logs: "It crashed" is opaque. A stack trace is a map to the fix.


Bug Report Template

markdown
**Title:** [Screen/Feature] - [What goes wrong] - [When/Condition]

**Steps to Reproduce:**
1. 
2. 
3. 

**Expected Behavior:**
[What should happen]

**Actual Behavior:**
[What actually happens]

**Environment:**
- Device: [Model, OS version]
- App version: [Version number, build number]
- Account state: [Free/Premium, any relevant data]
- Network: [WiFi/Mobile/Offline]

**Severity:** [Critical/Major/Minor/Trivial]

**Frequency:** [Always/Sometimes/Rarely]

**Attachments:** [Screenshot, video, log file]

**Additional Notes:**
[Any relevant context, workarounds, similar issues]

Takeaways

  • Specific title > vague title — developers need to know immediately if they've seen this
  • Minimal reproduction steps — remove anything not necessary to trigger the bug
  • Expected vs actual — states both what's right and what's wrong
  • Severity and priority are separate — distinguish them in the report
  • Always include version information and logs — "the app crashed" without a stack trace is noise
Share:
S

Sudarshan Chaudhari

AI Systems Builder / Product Engineer

Bangkok, Thailand

Solo Android developer with 13+ years in QA, building Android apps, AI automation systems, and developer tools at SudarshanTechLabs.

Stay updated

Get new posts on Android, Kotlin, and solo dev straight to your inbox.

Newsletter preferences

Building something? Available for Android dev and QA consulting.

Work with me

Comments — powered by Giscus