Bug report template
A practical bug report template that survives triage. Includes severity vs priority, repro steps, expected vs actual, environment, and the attachments a developer actually needs.
A bug report is what survives the gap between you finding a defect and a developer fixing it. The shorter and clearer it is, the faster it gets fixed. Vague bug reports get punted at triage; specific ones get worked on.
Every QA engineer, every day. Also developers reporting their own bugs found in code review or staging.
The template
**Title**: {{One-line summary. Verb + object + condition. Not "doesn't work".}}
**Severity**: Critical / High / Medium / Low
**Priority**: P0 / P1 / P2 / P3
## Environment
- **Build / version**: {{e.g. 2.6.3, build #1842}}
- **Browser / device**: {{Chrome 131 on macOS 15.5 / Samsung Galaxy A15 Android 14}}
- **Environment**: {{prod / pre-prod / staging / dev}}
- **User account**: {{role + factory id, never a real customer email}}
- **Date / time first observed**: {{ISO 8601 with timezone}}
## Steps to reproduce
1. {{Specific action}}
2. {{Specific action}}
3. {{Specific action}}
## Expected result
{{What should happen, with the source: spec section, design comp, business rule.}}
## Actual result
{{What actually happened, with the specific error text or screenshot.}}
## Reproducibility
- Reproducible every time / sometimes / once
- Frequency: {{1/1, 3/10, etc.}}
## Attachments
- Screenshot: {{filename or URL}}
- Video: {{URL}}
- Network HAR: {{filename}}
- Console log: {{filename}}
- Server log link: {{URL with timestamp filter}}
- Test data used: {{factory call or JSON}}
## Workaround (if any)
{{What lets the user proceed in the meantime}}
## Suspected scope
{{Which user segments are affected. Do not guess; cite data.}}
Placeholders like {{...}} mark fields you replace. Everything else is structure you keep.
Worked example
**Title**: Coupon FRESH50 applies on non-eligible category "personal care" reducing total by 50% **Severity**: High **Priority**: P0 ## Environment - **Build / version**: 4.7.2, build #2941 - **Browser / device**: Chrome 131.0.6778.85 on Android 14, OnePlus Nord CE 3 - **Environment**: pre-prod (https://pp.swiggy-clone.local) - **User account**: [email protected] (role: regular, KYC verified) - **Date / time first observed**: 2026-06-19 14:32 IST ## Steps to reproduce 1. Open the app, login as the user above 2. Search for "Dettol soap" (category: personal care) 3. Add 1 unit to cart (subtotal: ₹ 200) 4. Apply coupon code FRESH50 5. Observe the cart total ## Expected result Per the coupon engine spec (Confluence / pricing-rules-v3 §2.4), FRESH50 is restricted to category=fresh-fruits-and-vegetables. The apply call should return error_code=COUPON_NOT_VALID_FOR_ITEMS with HTTP 400. The cart total should remain ₹ 200. ## Actual result The apply call returns HTTP 200 with the coupon attached. Cart total drops to ₹ 100. Discount line shows "-₹ 100 FRESH50 (50% off)". ## Reproducibility Reproducible every time. 5/5 on three test accounts. ## Attachments - Screenshot: bug-COUPON-422-cart.png (attached) - Video: drive.upcode.in/bugs/422-coupon-bypass.mp4 - Network HAR: bug-422.har (attached, see POST /v1/cart/coupons/apply) - Server log link: kibana.upcode.in/?query=trace=8f3d2a1c&from=2026-06-19T14:30 - Test data used: factory.make_cart(items=[{"sku":"DET-001","cat":"personal-care"}]) ## Workaround (if any) None. The discount is applied silently; merchant pays out. ## Suspected scope All personal-care SKUs (~2800 items). Based on a sample of 20 random personal-care SKUs run through the same test, all 20 accept FRESH50. Estimated GMV at risk per day: ₹ 1.2 lakh.
Common mistakes
- ›Title is verb + object + condition. Not "broken", not "doesn't work", not "issue".
- ›Severity is impact on the system. Priority is urgency of fix. Decoupling them is the point of having two fields.
- ›Repro steps are numbered, one action per step. No assertions inside steps.
- ›Attach a video for any UI bug. Screenshots lose temporal context.
- ›If you cannot reproduce after three attempts, file it as intermittent and bracket the trigger you have.
Other QA templates
Want to learn how to use these on real projects? The Pro Software Testing program covers test plans, test cases, and bug reporting in Phases 3-6 with peer review on every submission.