A developer who receives your bug report has never seen what you saw. If the report is unclear, the bug gets rejected as "Cannot Reproduce", bounces back and forth, or is fixed incorrectly. A great bug report lets anyone reproduce the problem in under five minutes. In this lesson you will learn what to include, how to write titles that get attention, and how to work inside Jira, the most widely used defect tracking tool in Indian IT companies.
Fields of a Bug Report
| Field | What to write |
|---|---|
| Bug ID | Generated automatically by the tool, e.g. SHOP-2187 |
| Title / Summary | Where + what + condition, in one line |
| Environment | Build number, environment (QA/Staging), OS, device, browser and version |
| Preconditions | Account type, data or settings needed before the steps |
| Steps to Reproduce | Numbered, minimal, exact steps with test data |
| Expected Result | What should happen, ideally quoting the requirement |
| Actual Result | What actually happened, including exact error text |
| Severity and Priority | Impact and suggested urgency |
| Reproducibility | Always, Intermittent (e.g. 3 out of 5 attempts), Once |
| Attachments | Screenshots, screen recording, logs, API response |
| Linked items | User story, test case ID, related bugs |
A Sample Bug Report
| Field | Value |
|---|---|
| Title | Checkout: order total ignores coupon discount when payment method is changed from card to UPI |
| Environment | QA env, build 3.8.2, Android 14, mid-range test device |
| Preconditions | Logged-in user with one item of Rs 1,000 in cart; coupon SAVE100 is active |
| Steps | 1) Open Cart and apply coupon SAVE100. 2) Tap Proceed to Pay. 3) Select Credit Card; note total Rs 900. 4) Switch payment method to UPI. |
| Expected | Total remains Rs 900 with coupon applied (REQ-CHK-14) |
| Actual | Total changes to Rs 1,000; coupon line disappears; UPI request is raised for Rs 1,000 |
| Severity / Priority | Major / P1 (customers overcharged) |
| Reproducibility | Always (5/5) |
| Attachments | Screen recording, screenshot of both totals, network log of the price API response |
Good vs Bad Bug Titles
The title is often the only thing a lead reads during triage. A good title answers where, what and under which condition.
| Bad title | Good title |
|---|---|
| Login not working | Login: "Invalid OTP" shown for correct OTP when entered after 50 seconds |
| App crash | Profile: app crashes when uploading a JPG photo larger than 5 MB |
| Wrong amount | Cart: GST calculated on MRP instead of discounted price |
| Search issue!!! | Train search: no results for valid station codes typed in lowercase |
Evidence That Speeds Up Fixes
- Screenshots with the problem area highlighted.
- Screen recordings for multi-step or intermittent issues; keep them short.
- Browser console and network logs from developer tools, including the failing API request and response.
- Device logs for mobile crashes (for example,
adb logcatoutput on Android). - Test data used: user ID, order ID or transaction reference so developers can trace it in logs and the database.
Never paste real customer passwords, full card numbers, Aadhaar or PAN details into a bug report. Mask them, or use test accounts only.
Jira Essentials
Issue Types
- Epic: a large body of work, e.g. "UPI AutoPay".
- Story: a user-facing requirement within an epic.
- Task: technical or non-user work, e.g. "Set up test environment".
- Bug: a defect in the product.
- Sub-task: a smaller piece of a story or task, e.g. "Write test cases for story SHOP-310".
Boards and Workflow
A Scrum board shows the work committed for the current sprint. A Kanban board shows a continuous flow of work with limits on work in progress. Both display columns that represent workflow states. A typical bug workflow is: To Do, In Progress, In Review, Ready for QA, QA In Progress, Done, with a path back to Reopened. Your company may name these differently, so learn your project's workflow in your first week.
JQL Basics
JQL (Jira Query Language) lets you search issues with SQL-like conditions. Save useful queries as filters and add them to your dashboard.
project = SHOP AND issuetype = Bug AND status = Open
project = SHOP AND issuetype = Bug AND status = "Ready for QA" AND reporter = currentUser()
project = SHOP AND issuetype = Bug AND priority in (Highest, High) AND created >= -7d
fixVersion = "3.8.2" AND resolution = Unresolved ORDER BY created DESC
project = SHOP AND issuetype = Bug AND text ~ "coupon"Line by line, these queries return:
- All open bugs in the SHOP project.
- Bugs you reported that are now waiting for you to retest.
- High-priority bugs created in the last 7 days.
- Unresolved issues planned for release 3.8.2, newest first.
- Bugs mentioning "coupon" in their text, useful for finding duplicates.
Running a quick text search like the last query above before creating a bug prevents duplicates and shows reviewers that you are thorough.