बग रिपोर्ट कैसे लिखें
बग रिपोर्ट का एक ही काम है: जो वहाँ मौजूद नहीं था, वह समस्या को रिप्रोड्यूस कर सके, उसका असर समझ सके और आपसे एक भी सवाल पूछे बिना उसे ठीक कर सके। जो रिपोर्ट यह करती हैं वे ठीक होती हैं; जो नहीं करतीं उन्हें "cannot reproduce" का लेबल लगाकर बंद कर दिया जाता है। फ़र्क़ लेखन कौशल का नहीं है — सही तथ्य सही क्रम में शामिल करने का है।
यह गाइड ऐसी रिपोर्ट की बनावट देती है जिस पर काम होता है, Jira, GitHub Issues या किसी भी ट्रैकर के लिए टेम्पलेट, पूरा उदाहरण, और उन दो फ़ील्ड की साफ़ व्याख्या जिनमें लोग सबसे ज़्यादा उलझते हैं: severity और priority।
अच्छी बग रिपोर्ट में क्या होता है
- टाइटल — एक खास लाइन में लक्षण: "डिस्काउंट वाला आइटम कार्ट में होने पर Checkout 500 देता है" "Checkout टूटा है" से बेहतर है।
- एनवायरनमेंट — ऐप वर्ज़न या बिल्ड, ब्राउज़र/OS या डिवाइस, API एनवायरनमेंट (staging, production), इस्तेमाल किया अकाउंट या रोल।
- प्रीकंडीशन — स्टेप से पहले क्या सच होना चाहिए: कार्ट में आइटम वाला लॉग-इन यूज़र, कोई खास फ़ीचर फ़्लैग।
- रिप्रोड्यूस करने के स्टेप — नंबर वाले, न्यूनतम, सटीक। इस्तेमाल किया डेटा (या जनरेट किया समकक्ष) और API बग हो तो रिक्वेस्ट शामिल करें।
- अपेक्षित परिणाम — क्या होना चाहिए था, बेहतर हो तो requirement या डिज़ाइन के रेफ़रेंस के साथ।
- वास्तविक परिणाम — इसके बजाय क्या हुआ, हूबहू उद्धृत: मैसेज, स्टेटस कोड, गलत वैल्यू।
- सबूत — स्क्रीनशॉट या रिकॉर्डिंग, HTTP रिक्वेस्ट और रिस्पॉन्स, कंसोल या सर्वर लॉग लाइन, स्टैक ट्रेस।
- फ़्रीक्वेंसी — हमेशा, कभी-कभी (कितनी बार), सिर्फ़ पहले लोड पर।
- Severity और priority — यह कितना बुरा है और कितनी जल्दी ठीक होना चाहिए (नीचे देखें)।
बग रिपोर्ट टेम्पलेट
Title: Checkout returns 500 when the cart contains a discounted item
Environment: Web app 4.12.0 · Chrome 128 / Windows 11 · staging · customer role
Severity: Major Priority: High Frequency: Always
Preconditions:
- Logged in as a verified customer
- Cart contains one item with an active 20% discount (SKU A-100)
Steps to reproduce:
1. Open /checkout
2. Select "Card" as the payment method
3. Click "Place order"
Expected result:
Order is created (201), confirmation page shows the discounted total 199.20
Actual result:
Page shows "Something went wrong". POST /api/v1/orders returns 500:
{"error":{"code":"INTERNAL","requestId":"9f1c…"}}
Evidence:
- screenshot-checkout-500.png
- request/response captured (attached)
- server log: TypeError: cannot read "rate" of undefined (discount.ts:41)
Notes:
Works when the cart has no discounted item. Started after release 4.12.0.आज़माएँ: AI बग विवरण जनरेटर आज़माएँ: HTTP रिक्वेस्ट इंस्पेक्टर
Severity बनाम Priority
Severity सिस्टम या यूज़र पर असर मापती है: कितना टूटा है और किसके लिए। Priority बिज़नेस के लिए तात्कालिकता मापती है: दूसरे काम की तुलना में यह कितनी जल्दी ठीक होना चाहिए। इन्हें अलग-अलग लोग तय करते हैं और अक्सर ये मेल नहीं खातीं।
लॉगिन पेज पर कंपनी के नाम में टाइपो trivial severity लेकिन high priority है। तिमाही में एक बार चलने वाली एडमिन रिपोर्ट का क्रैश high severity लेकिन तिमाही ख़त्म होने तक low priority है। दोनों को अलग-अलग दर्ज करना ही टीम को ईमानदारी से प्लान करने देता है।
- Severity — Blocker (कोई वर्कअराउंड नहीं, कोर फ़्लो बेकार), Critical (डेटा लॉस, सिक्योरिटी, पेमेंट फ़ेल), Major (फ़ीचर टूटा, वर्कअराउंड मौजूद), Minor (कॉस्मेटिक या एज केस), Trivial।
- Priority — Highest / High (रिलीज़ से पहले या अभी ठीक करें), Medium (अगला स्प्रिंट), Low (बैकलॉग)।
आज़माएँ: AI बग गंभीरता सुझाव आज़माएँ: AI बग प्राथमिकता सुझाव
फ़ाइल करने से पहले: बग को अलग करें
- इसे दो बार रिप्रोड्यूस करें। एक बार हो तो intermittent लिखें और दर्ज करें क्या अलग था।
- स्टेप को उतने न्यूनतम करें जितने में यह अब भी ट्रिगर हो। जो नतीजा न बदले उसे हटा दें।
- एक बार में एक वेरिएबल बदलें — दूसरा ब्राउज़र, दूसरा अकाउंट, दूसरा डेटा — ट्रिगर खोजने के लिए।
- जाँचें कि पहले से रिपोर्ट तो नहीं: ट्रैकर में एरर मैसेज और एंडपॉइंट खोजें।
- सबूत तभी कैप्चर करें जब वह स्क्रीन पर हो: रिक्वेस्ट, रिस्पॉन्स, कंसोल, सटीक मैसेज।
आज़माएँ: AI एरर मैसेज एनालाइज़र आज़माएँ: API रिस्पॉन्स एनालाइज़र
वे गलतियाँ जिनसे रिपोर्ट वापस लौटती हैं
- कोई स्टेप नहीं, सिर्फ़ लक्षण का वर्णन।
- वास्तविक परिणाम में "काम नहीं करता", बिना मैसेज, कोड या स्क्रीनशॉट।
- एक रिपोर्ट में कई बग — हर बग को अपना लाइफ़साइकल चाहिए।
- टाइटल में राय ("यह बहुत बुरा है") लक्षण की जगह।
- रिपोर्ट में असली कस्टमर डेटा पेस्ट करना। वही शेप देने वाला जनरेट किया टेस्ट डेटा इस्तेमाल करें।
- एनवायरनमेंट गायब — जो बग सिर्फ़ iOS के Safari पर दिखता है, वह न बताने पर पूरा दिन बर्बाद करता है।
API बग रिपोर्ट करना
API डिफ़ेक्ट में रिप्रोडक्शन ही रिक्वेस्ट है। मेथड, URL, हेडर (टोकन हटाकर), बॉडी, और पूरा रिस्पॉन्स — स्टेटस, हेडर और बॉडी — शामिल करें, साथ में request id अगर API लौटाता है। cURL कमांड सबसे पोर्टेबल रूप है: डेवलपर उसे पेस्ट करके तुरंत फ़ेलियर देख सकता है।
अक्सर पूछे जाने वाले सवाल
severity और priority में क्या फ़र्क़ है?
Severity यह है कि बग सिस्टम या यूज़र को कितनी बुरी तरह प्रभावित करता है; priority यह है कि बिज़नेस उसे कितनी जल्दी ठीक चाहता है। होमपेज पर कॉस्मेटिक बग low severity और high priority हो सकता है।
बग रिपोर्ट में कितने स्टेप होने चाहिए?
उतने कम जितने में समस्या भरोसेमंद तरीके से रिप्रोड्यूस हो — आमतौर पर तीन से सात। हर स्टेप एक ऐसा एक्शन हो जिसे कोई अजनबी कर सके।
क्या स्क्रीनशॉट शामिल करना चाहिए?
हाँ, जब भी बग दिखाई देता हो। API बग के लिए इसकी जगह रिक्वेस्ट और रिस्पॉन्स शामिल करें; क्रैश के लिए स्टैक ट्रेस या लॉग लाइन।
अच्छा बग टाइटल क्या बनाता है?
लक्षण, जगह और शर्त एक लाइन में: "तीन बार गलत OTP डालने के बाद लॉगिन पेज खाली स्क्रीन दिखाता है"।
क्या AI बग रिपोर्ट लिख सकता है?
AI कच्चे नोट्स, एरर मैसेज या कैप्चर की गई रिक्वेस्ट को साफ़ टाइटल और सुझाई severity वाली सुव्यवस्थित रिपोर्ट में बदल सकता है। फ़ाइल करने से पहले टेस्टर फिर भी स्टेप और असर वेरिफ़ाई करता है।
अगर बग लगातार रिप्रोड्यूस न हो तो?
फिर भी फ़ाइल करें, intermittent मार्क करें, बताएँ कितनी बार होता है, और जिन बार हुआ उनके हर सबूत — लॉग, टाइमस्टैम्प, request id — अटैच करें। कई रिपोर्ट से पैटर्न उभरते हैं।
इस गाइड में बताए गए टूल्स
मोटे-मोटे नोट्स को पूरी बग रिपोर्ट में बदलें: reproduce करने के स्टेप, अपेक्षित बनाम वास्तविक, environment, गंभीरता और attachments चेकलिस्ट।
Mutqan AI से बिखरे हुए विवरण से स्पष्ट और खोजने में आसान बग टाइटल बनाएँ।
Mutqan AI से कारण सहित सुझाई गई गंभीरता (Blocker / Critical / Major / Minor / Trivial) पाएँ।
Mutqan AI से व्यावसायिक प्रभाव, प्रभावित यूज़र, समयसीमा और गंभीरता को देखते हुए सुझाई गई प्राथमिकता (P0–P4) पाएँ।
Mutqan AI से stack trace और एरर मैसेज समझें, संभावित मूल कारण पहचानें और डिबगिंग के अगले क़दम जानें।
देखें कि आपका क्लाइंट असल में क्या भेजता है: method, हेडर, query, बॉडी, IP और TLS जानकारी।
किसी API रिस्पॉन्स का विश्लेषण करें: संरचना, फ़ील्ड टाइप, null, डुप्लिकेट, साइज़ और संभावित डेटा-क्वालिटी समस्याएँ।
सिंथेटिक टेस्ट डेटा की एक ही जगह पर फ़ैक्टरी: users, customers, companies, पते, संख्याएँ, तारीख़ें और स्ट्रिंग — JSON, CSV, SQL या XML में।