Modern QA2026The Bug Report Template
Log inJoin
2 / 3 · Book 18 · The Art of the Bug Report · drill: interview Q&A← prev⊞ allnext →Get the book →

1.3The Bug Report Template

Here is a production-ready template. Every field serves a purpose.

Title: Checkout fails with 500 error when applying expired coupon code

Priority: High
Severity: Critical
Component: Checkout / Payments
Environment: Staging (v2.4.1), Chrome 120, macOS 14
Sprint: Sprint 23

Steps to Reproduce:
1. Add any item to cart
2. Proceed to checkout
3. Enter expired coupon code "SAVE20-2024"
4. Click "Apply"

Expected: Error message "This coupon has expired" displayed inline
Actual: Page returns HTTP 500, user sees generic error page

Additional Context:
- Valid coupon codes work correctly
- Bug introduced after commit abc123f (coupon validation refactor)
- Server logs show NullPointerException in CouponService.validate()
- Affects all users, not environment-specific

Attachments: screenshot.png, server-error-log.txt, HAR file

What Makes This Template Effective

  • Title is specific: "Checkout fails with 500 error when applying expired coupon" is searchable and unambiguous. Compare with "checkout broken" which tells you nothing. A developer scanning a list of fifty bugs can immediately understand what this one is about.
  • Steps are numbered and precise: A developer can reproduce in under a minute. There is no ambiguity about what "proceed to checkout" means because the preceding step establishes the cart state.
  • Expected vs Actual is clear: No guessing about what should happen. The expected behavior references a specific UI element ("displayed inline"), not a vague "should work."
  • Additional context narrows the investigation: The commit reference and server log save hours of debugging. The note that valid coupons work correctly rules out an entire class of causes.
  • Attachments prove the issue: Screenshots and logs are evidence, not anecdote. A HAR file lets the developer replay the exact network interaction.

Pro Tip: Always include the environment details. A bug that only appears on staging might be a configuration issue, not a code bug. A bug that appears everywhere is a code bug. This distinction changes the investigation approach entirely.