बग रिपोर्ट कैसे लिखें

बग रिपोर्ट का एक ही काम है: जो वहाँ मौजूद नहीं था, वह समस्या को रिप्रोड्यूस कर सके, उसका असर समझ सके और आपसे एक भी सवाल पूछे बिना उसे ठीक कर सके। जो रिपोर्ट यह करती हैं वे ठीक होती हैं; जो नहीं करतीं उन्हें "cannot reproduce" का लेबल लगाकर बंद कर दिया जाता है। फ़र्क़ लेखन कौशल का नहीं है — सही तथ्य सही क्रम में शामिल करने का है।

यह गाइड ऐसी रिपोर्ट की बनावट देती है जिस पर काम होता है, Jira, GitHub Issues या किसी भी ट्रैकर के लिए टेम्पलेट, पूरा उदाहरण, और उन दो फ़ील्ड की साफ़ व्याख्या जिनमें लोग सबसे ज़्यादा उलझते हैं: severity और priority।

अच्छी बग रिपोर्ट में क्या होता है

  • टाइटल — एक खास लाइन में लक्षण: "डिस्काउंट वाला आइटम कार्ट में होने पर Checkout 500 देता है" "Checkout टूटा है" से बेहतर है।
  • एनवायरनमेंट — ऐप वर्ज़न या बिल्ड, ब्राउज़र/OS या डिवाइस, API एनवायरनमेंट (staging, production), इस्तेमाल किया अकाउंट या रोल।
  • प्रीकंडीशन — स्टेप से पहले क्या सच होना चाहिए: कार्ट में आइटम वाला लॉग-इन यूज़र, कोई खास फ़ीचर फ़्लैग।
  • रिप्रोड्यूस करने के स्टेप — नंबर वाले, न्यूनतम, सटीक। इस्तेमाल किया डेटा (या जनरेट किया समकक्ष) और API बग हो तो रिक्वेस्ट शामिल करें।
  • अपेक्षित परिणाम — क्या होना चाहिए था, बेहतर हो तो requirement या डिज़ाइन के रेफ़रेंस के साथ।
  • वास्तविक परिणाम — इसके बजाय क्या हुआ, हूबहू उद्धृत: मैसेज, स्टेटस कोड, गलत वैल्यू।
  • सबूत — स्क्रीनशॉट या रिकॉर्डिंग, HTTP रिक्वेस्ट और रिस्पॉन्स, कंसोल या सर्वर लॉग लाइन, स्टैक ट्रेस।
  • फ़्रीक्वेंसी — हमेशा, कभी-कभी (कितनी बार), सिर्फ़ पहले लोड पर।
  • Severity और priority — यह कितना बुरा है और कितनी जल्दी ठीक होना चाहिए (नीचे देखें)।

आज़माएँ: AI बग विवरण जनरेटर आज़माएँ: AI बग टाइटल जनरेटर

बग रिपोर्ट टेम्पलेट

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 कमांड सबसे पोर्टेबल रूप है: डेवलपर उसे पेस्ट करके तुरंत फ़ेलियर देख सकता है।

आज़माएँ: HTTP रिक्वेस्ट इंस्पेक्टर आज़माएँ: cURL जनरेटर

अक्सर पूछे जाने वाले सवाल

severity और priority में क्या फ़र्क़ है?

Severity यह है कि बग सिस्टम या यूज़र को कितनी बुरी तरह प्रभावित करता है; priority यह है कि बिज़नेस उसे कितनी जल्दी ठीक चाहता है। होमपेज पर कॉस्मेटिक बग low severity और high priority हो सकता है।

बग रिपोर्ट में कितने स्टेप होने चाहिए?

उतने कम जितने में समस्या भरोसेमंद तरीके से रिप्रोड्यूस हो — आमतौर पर तीन से सात। हर स्टेप एक ऐसा एक्शन हो जिसे कोई अजनबी कर सके।

क्या स्क्रीनशॉट शामिल करना चाहिए?

हाँ, जब भी बग दिखाई देता हो। API बग के लिए इसकी जगह रिक्वेस्ट और रिस्पॉन्स शामिल करें; क्रैश के लिए स्टैक ट्रेस या लॉग लाइन।

अच्छा बग टाइटल क्या बनाता है?

लक्षण, जगह और शर्त एक लाइन में: "तीन बार गलत OTP डालने के बाद लॉगिन पेज खाली स्क्रीन दिखाता है"।

क्या AI बग रिपोर्ट लिख सकता है?

AI कच्चे नोट्स, एरर मैसेज या कैप्चर की गई रिक्वेस्ट को साफ़ टाइटल और सुझाई severity वाली सुव्यवस्थित रिपोर्ट में बदल सकता है। फ़ाइल करने से पहले टेस्टर फिर भी स्टेप और असर वेरिफ़ाई करता है।

अगर बग लगातार रिप्रोड्यूस न हो तो?

फिर भी फ़ाइल करें, intermittent मार्क करें, बताएँ कितनी बार होता है, और जिन बार हुआ उनके हर सबूत — लॉग, टाइमस्टैम्प, request id — अटैच करें। कई रिपोर्ट से पैटर्न उभरते हैं।

इस गाइड में बताए गए टूल्स

मोटे-मोटे नोट्स को पूरी बग रिपोर्ट में बदलें: reproduce करने के स्टेप, अपेक्षित बनाम वास्तविक, environment, गंभीरता और attachments चेकलिस्ट।

बग विश्लेषण AI टूल खोलें

सिंथेटिक टेस्ट डेटा की एक ही जगह पर फ़ैक्टरी: users, customers, companies, पते, संख्याएँ, तारीख़ें और स्ट्रिंग — JSON, CSV, SQL या XML में।

टेस्ट डेटा नया टूल खोलें

और गाइड

और गाइड →
JSON और डेटा

JSON क्या है?

JSON आसान भाषा में: यह क्या है, छह वैल्यू टाइप, वे सिंटैक्स नियम जिनमें लोग अटकते हैं, इसे फ़ॉर्मेट और वैलिडेट कैसे करें, और XML व YAML से इसकी तुलना।

5 मिनट पढ़ने का समय
API टेस्टिंग

API टेस्टिंग क्या है? REST API कैसे टेस्ट करें

API टेस्टिंग समझें: यह क्या है, हर रिक्वेस्ट और रिस्पॉन्स में क्या जाँचें, REST API टेस्ट करने का स्टेप-बाय-स्टेप तरीका, आम गलतियाँ और मुफ़्त टूल्स।

7 मिनट पढ़ने का समय
टेस्ट डिज़ाइन

टेस्ट केस कैसे लिखें

भरोसेमंद टेस्ट केस कैसे लिखें: हर केस के ज़रूरी फ़ील्ड, कॉपी-रेडी टेम्पलेट, लॉगिन का उदाहरण, और वे तकनीकें जो असली बग पकड़ती हैं।

5 मिनट पढ़ने का समय
सुरक्षा

JWT क्या है? JSON Web Token समझें

JWT आसान भाषा में: JSON Web Token के तीन हिस्से, exp और sub जैसे क्लेम, डिकोड और वेरिफ़ाई कैसे करें, डिकोड करना वेरिफ़ाई क्यों नहीं, और सिक्योरिटी।

5 मिनट पढ़ने का समय
एन्कोडिंग

Base64 क्या है? एन्कोडिंग समझें

Base64 समझें: यह क्या है और क्या नहीं, एन्कोडिंग कैसे काम करती है, आउटपुट एक-तिहाई क्यों बढ़ता है, Base64 बनाम Base64URL, = पैडिंग, और एन्कोड-डिकोड।

4 मिनट पढ़ने का समय
यूटिलिटीज़

UUID क्या है? v4 बनाम v7, UUID बनाम GUID और ULID

UUID समझें: 128-बिट फ़ॉर्मेट, v4 बनाम v7, डेटाबेस key के लिए v7 बेहतर क्यों, UUID बनाम GUID बनाम ULID, कॉलिज़न की संभावना, और जनरेट-वैलिडेट कैसे करें।

5 मिनट पढ़ने का समय