स्मोक, सैनिटी और रिग्रेशन टेस्टिंग में अंतर
Smoke, sanity और regression टेस्टिंग बदलाव के बाद उठने वाले तीन अलग सवालों के तीन जवाब हैं। Smoke testing पूछती है कि क्या build इतना स्थिर है कि उसे टेस्ट किया भी जा सके। Sanity testing, अपने सबसे आम अर्थ में, पूछती है कि क्या कोई ख़ास बदलाव या fix सही दिखता है, इससे पहले कि व्यापक टेस्टिंग में समय लगाया जाए। Regression testing पूछती है कि क्या बदलाव ने कुछ ऐसा तोड़ा जो पहले काम करता था। इन्हें मिलाने से या तो मेहनत बर्बाद होती है — ऐसे build पर दो घंटे का regression run जिसमें लॉगिन ही नहीं होता — या झूठा भरोसा बनता है — पाँच मिनट के smoke run को रिलीज़ की मंज़ूरी मान लेना।
यह गाइड तीनों की साथ-साथ तुलना करती है, ईमानदारी से बताती है कि इंडस्ट्री में "sanity testing" शब्द असंगत ढंग से इस्तेमाल होता है, समझाती है कि किसी बदलाव के लिए कौन-से regression टेस्ट चलाएँ, और दिखाती है कि CI/CD pipeline में हर एक कहाँ बैठता है — एक हल किए गए रिलीज़ उदाहरण के साथ।
Smoke, sanity और regression एक नज़र में
- सवाल — Smoke: क्या हम यह build टेस्ट कर सकते हैं? Sanity: क्या यह बदलाव सही दिखता है? Regression: क्या इस बदलाव ने कुछ और तोड़ा?
- दायरा — Smoke: चौड़ा और उथला, पूरे प्रोडक्ट के अहम रास्ते। Sanity: संकरा और गहरा, सिर्फ़ बदला हुआ हिस्सा। Regression: चौड़ा और गहरा, जो कुछ भी बदलाव से प्रभावित हो सकता है, पूरे सूट तक।
- कब — Smoke: हर build या डिप्लॉयमेंट के तुरंत बाद। Sanity: fix या छोटे बदलाव के बाद, व्यापक टेस्टिंग से पहले। Regression: किसी भी बदलाव के बाद, रिलीज़ से पहले, और शेड्यूल पर।
- अवधि — Smoke: मिनट। Sanity: मिनटों से एक घंटे तक। Regression: मिनटों (चुना हुआ उपसमूह) से घंटों (पूरा सूट) तक।
- Scripted या नहीं — Smoke: scripted और आदर्श रूप से पूरी तरह ऑटोमेटेड। Sanity: अक्सर आंशिक रूप से unscripted, बदलाव से निर्देशित। Regression: scripted, और ऑटोमेशन का मुख्य लक्ष्य।
- फ़ेल होने का नतीजा — Smoke: build अस्वीकार, आगे टेस्टिंग नहीं। Sanity: बदलाव वापस, व्यापक टेस्टिंग स्थगित। Regression: दोष दर्ज; गेट कहे तो रिलीज़ रुकी।
Smoke
क्या हम यह build टेस्ट कर सकते हैं?
- दायरा:
- चौड़ा और उथला: पूरे प्रोडक्ट के अहम रास्ते
- कब:
- हर build या डिप्लॉयमेंट के तुरंत बाद
- अवधि:
- मिनट
- Scripted या नहीं:
- Scripted, आदर्श रूप से पूरी तरह ऑटोमेटेड
- फ़ेल होने का नतीजा:
- Build अस्वीकार, आगे टेस्टिंग नहीं
Sanityसबसे आम अर्थ
क्या यह बदलाव सही दिखता है?
- दायरा:
- संकरा और गहरा: सिर्फ़ बदला हुआ हिस्सा
- कब:
- Fix या छोटे बदलाव के बाद, व्यापक टेस्टिंग से पहले
- अवधि:
- मिनटों से एक घंटे तक
- Scripted या नहीं:
- अक्सर आंशिक रूप से unscripted, बदलाव से निर्देशित
- फ़ेल होने का नतीजा:
- बदलाव वापस, व्यापक टेस्टिंग स्थगित
Regression
क्या इस बदलाव ने कुछ और तोड़ा?
- दायरा:
- चौड़ा और गहरा: जो कुछ भी बदलाव से प्रभावित हो सकता है, पूरे सूट तक
- कब:
- किसी भी बदलाव के बाद, रिलीज़ से पहले, और शेड्यूल पर
- अवधि:
- मिनटों (चुना हुआ उपसमूह) से घंटों (पूरा सूट) तक
- Scripted या नहीं:
- Scripted, और ऑटोमेशन का मुख्य लक्ष्य
- फ़ेल होने का नतीजा:
- दोष दर्ज; गेट कहे तो रिलीज़ रुकी
दायरे की आकृतियाँ सांकेतिक हैं: चौड़ाई यानी प्रोडक्ट का कितना हिस्सा कवर हुआ, ऊँचाई यानी कितनी गहराई तक। Sanity यहाँ अपने सबसे आम अर्थ में है; कुछ टीमें इसे smoke testing का दूसरा नाम मानती हैं।
Smoke testing: क्या build टेस्ट करने लायक है?
Smoke टेस्ट जाँचों का एक छोटा सेट है जो सिस्टम के सबसे अहम फ़ंक्शन को शुरू से अंत तक कवर करता है, हर नए build या डिप्लॉयमेंट पर चलता है, और तय करता है कि build आगे की टेस्टिंग के लिए पर्याप्त स्थिर है या नहीं। नाम हार्डवेयर से आया है: डिवाइस चालू करो और देखो कि धुआँ निकलता है या नहीं। सॉफ़्टवेयर में smoke फ़ेलियर का मतलब है कि कुछ बुनियादी ग़लत है — एप्लिकेशन शुरू नहीं होता, कोई सर्विस अपने डेटाबेस तक नहीं पहुँचती, लॉगिन टूटा है, कोई कॉन्फ़िगरेशन वैल्यू ग़ायब है — और हर बाद का टेस्ट इसी कारण फ़ेल होगा।
अच्छा smoke सूट छोटा, स्थिर और सिर्फ़ critical-path वाला होता है। यह हर बड़े component को एक बार छूता है, बारीक दोष खोजने की कोशिश नहीं करता, और कभी उस डेटा पर निर्भर नहीं होता जिसे दूसरे टेस्ट बदलते हैं। चूँकि यह बहुत बार चलता है, flaky smoke टेस्ट ख़ास तौर पर नुक़सानदेह है; उसे तुरंत ठीक करें या हटाएँ। रिलीज़ के बाद प्रोडक्शन पर चलाया गया यही सूट post-deployment वेरिफ़िकेशन का केंद्र है।
Smoke suite: web shop, build under test on staging (example)
[ ] GET /health returns 200 for web, orders, pricing, payments services
[ ] Home page loads; no console errors; main navigation renders
[ ] Log in with the smoke test account (smoke.user@example.com)
[ ] Search returns results for a known product
[ ] Add a known product to the cart; cart total is shown
[ ] POST /api/v1/orders with a fixed payload returns 201
[ ] Payment sandbox call returns an authorised result
[ ] Invoice endpoint returns 200 with Content-Type application/pdf
Rule: any failure -> build rejected, deeper testing does not start.
Budget: under 5 minutes, fully automated, runs on every deployment.Sanity testing: एक से ज़्यादा अर्थों वाला शब्द
तीनों में sanity testing की परिभाषा सबसे कम सुसंगत है, और इसके उलट दिखावा करने के बजाय यह साफ़ कह देना बेहतर है। सबसे आम इस्तेमाल में इसका मतलब है नए build पर किसी ख़ास बदलाव — बग fix, छोटा फ़ीचर, कॉन्फ़िगरेशन बदलाव — की तेज़, केंद्रित जाँच, ताकि टीम व्यापक टेस्टिंग में समय लगाने से पहले पुष्टि कर सके कि बदलाव समझदारी से व्यवहार करता है। इस अर्थ में यह संकरी और गहरी है जहाँ smoke testing चौड़ी और उथली है, और इसमें अक्सर ठीक हुए दोष का confirmation टेस्ट शामिल होता है।
दूसरी टीमें और कुछ पुरानी glossaries "sanity test" को smoke test का पर्याय मानती हैं। कुछ और लोग इसे किसी भी तेज़ plausibility जाँच के लिए अनौपचारिक रूप से इस्तेमाल करते हैं, जैसे यह देखना कि किसी रिपोर्ट का कुल विश्वसनीय दायरे में है। इनमें से कोई भी अपने संदर्भ में ग़लत नहीं, पर एक ही टीम में इन्हें मिलाने से असली समस्याएँ होती हैं: मैनेजर "sanity पास हुई" सुनकर मान लेता है कि जितना जाँचा गया उससे ज़्यादा जाँचा गया। व्यावहारिक हल है अपनी test strategy या test plan में शब्द को परिभाषित करना — यह क्या कवर करता है, कौन चलाता है, कितना समय लगता है — और उसे सुसंगत रूप से इस्तेमाल करना। अगर शब्द उलझन पैदा करे तो उसकी जगह वर्णनात्मक नाम इस्तेमाल करें, जैसे "fix verification"।
- आम अर्थ: नए build पर बदले हिस्से की केंद्रित जाँच, व्यापक टेस्टिंग से पहले।
- वैकल्पिक अर्थ: smoke testing का दूसरा नाम।
- अनौपचारिक अर्थ: किसी आउटपुट की तेज़ plausibility जाँच।
- सुझाव: अपनी टीम की परिभाषा लिखें और उस पर टिके रहें।
Regression testing: क्या बदलाव ने कुछ और तोड़ा?
Regression testing बदलाव के बाद मौजूदा टेस्ट दोबारा चलाती है ताकि पता चले कि सॉफ़्टवेयर के उन हिस्सों में दोष आए या उजागर हुए जिन्हें बदलना नहीं था। ISTQB फ़ाउंडेशन सिलेबस इसे confirmation testing से अलग करता है: confirmation testing जाँचती है कि रिपोर्ट किया गया दोष सचमुच ठीक हुआ; regression testing जाँचती है कि fix, या कोई और बदलाव, कोई बुरा असर नहीं डाल गया — न बदले गए component में, न दूसरे components में, न जुड़े हुए systems में। हर fix के बाद दोनों ज़रूरी हैं।
Regression testing को ट्रिगर करने वाले बदलावों में नए फ़ीचर, बग fix, refactoring, dependency और framework अपग्रेड, कॉन्फ़िगरेशन बदलाव, इन्फ़्रास्ट्रक्चर और डेटाबेस migrations शामिल हैं। चूँकि regression टेस्ट कई बार दोहराए जाते हैं और उनके अपेक्षित नतीजे ज्ञात होते हैं, वे ऑटोमेशन के स्वाभाविक उम्मीदवार हैं, और ज़्यादातर regression सूट CI pipeline में रहते हैं। किस स्तर पर — यूनिट, API या UI — क्या ऑटोमेट हो, यह test pyramid के अनुसार है और manual बनाम automated testing गाइड में कवर है।
- Confirmation टेस्ट (re-test) — मूल दोष के स्टेप अब पास होते हैं।
- Regression टेस्ट — बदलाव के आसपास और उससे आगे के टेस्ट अब भी पास होते हैं।
- Regression सूट प्रोडक्ट के साथ बढ़ता है; रखरखाव के बिना यह धीमा, दोहराव वाला और flaky हो जाता है।
Regression चयन: क्या चलाएँ
हर बदलाव पर हर टेस्ट चलाना सबसे सुरक्षित विकल्प है और छोटे सूट के लिए सही भी। जब सूट pipeline स्टेज के समय-बजट से बड़ा हो जाता है, टीम को चुनना पड़ता है। चयन जोखिम का फ़ैसला है, इसलिए यह स्पष्ट और समीक्षा-योग्य हो, टेस्टर की इस याद पर आधारित नहीं कि "आमतौर पर क्या टूटता है"।
- Retest all — पूरा सूट चलाएँ। सबसे ज़्यादा भरोसा, सबसे ज़्यादा लागत; nightly runs और release candidates के लिए आम विकल्प।
- Impact-आधारित चयन — जो बदला (फ़ाइलें, modules, APIs, डेटाबेस टेबल, कॉन्फ़िगरेशन) वहाँ से शुरू करें और उन हिस्सों और उनकी सीधी निर्भरताओं को चलाने वाले टेस्ट शामिल करें। Test impact analysis टूल टेस्ट को कोड से जोड़कर, आमतौर पर कवरेज डेटा से, इसे ऑटोमेट करते हैं।
- जोखिम-आधारित चयन — ऊँचे बिज़नेस प्रभाव या दोषों के इतिहास वाले हिस्सों के टेस्ट जोड़ें, भले बदलाव उनसे असंबंधित लगे: पेमेंट, ऑथेंटिकेशन, डेटा एक्सपोर्ट।
- Prioritisation — चुने गए टेस्ट ऐसे क्रम में रखें कि सबसे मूल्यवान पहले चलें: हाल में फ़ेल हुए टेस्ट, बदले कोड के टेस्ट, अहम यात्राएँ। तब फ़ेलियर जल्दी सामने आता है।
- हमेशा शामिल कोर — smoke जाँचें और कुछ अहम end-to-end यात्राएँ चयन से स्वतंत्र हर बदलाव पर चलती हैं।
- सुरक्षा-जाल — हर बदलाव का चयन जो छोड़ता है, उसे scheduled पूरा run कवर करता है, ताकि चयन की ग़लती रिलीज़ पर नहीं, एक दिन के भीतर पकड़ी जाए।
आज़माएँ: रिग्रेशन सिनेरियो जनरेटर आज़माएँ: AI रिग्रेशन टेस्ट जनरेटर आज़माएँ: रिस्क-बेस्ड टेस्ट जनरेटर
CI/CD pipeline में हर एक कहाँ चलता है
Pipeline में ये तीनों अलग-अलग लोगों द्वारा किए जाने वाले अलग चरण नहीं हैं; ये अलग-अलग triggers से जुड़े सूट हैं। नीचे का ढाँचा आम है और ज़्यादातर वेब प्रोडक्ट्स के लिए काम करता है।
- Pull request — commit-stage जाँचें और यूनिट व API स्तर पर चुना हुआ regression उपसमूह (impact और जोखिम आधारित); अहम E2E यात्राएँ।
- Main में merge — पूरे यूनिट और API regression सूट; E2E सूट पैरलल shards में।
- टेस्ट एनवायरनमेंट में हर डिप्लॉयमेंट — पहले smoke सूट; उसके पास होने तक और कुछ शुरू नहीं होता।
- Fix डिप्लॉय होने के बाद — दोष रिपोर्ट करने वाले टेस्टर द्वारा sanity (fix verification), confirmation टेस्ट समेत।
- Nightly — सभी स्तरों पर पूरा regression सूट, और लंबे non-functional runs।
- Release candidate — पूरा regression हरा, फिर रिलीज़ के तुरंत बाद प्रोडक्शन पर smoke।
हल किया गया उदाहरण: VAT rounding fix
उदाहरण के लिए, एक ग्राहक रिपोर्ट करता है कि डिस्काउंट वाले इनवॉइस में VAT एक हलाला ग़लत दिखता है। डेवलपर pricing सर्विस में rounding ठीक करते हैं; यह fix VAT गणना को छूता है, जिसका इस्तेमाल refunds, credit notes और order history भी करते हैं। नीचे का प्लान दिखाता है कि build 5.8.1 पर तीनों तरह की टेस्टिंग काम कैसे बाँटती है।
- Smoke (ऑटोमेटेड, लगभग 3 मिनट): क्या यह build टेस्ट भी किया जा सकता है? web, pricing और invoice सर्विसों का /health 200 लौटाता है; टेस्ट ग्राहक से लॉगिन करके item जोड़ना और checkout तक पहुँचना; API से ऑर्डर बनाने पर 201; invoice PDF endpoint 200 और application/pdf लौटाता है।
- Sanity (केंद्रित, लगभग 20 मिनट): क्या fix ख़ुद सही है? 100.00 SAR पर 10% डिस्काउंट से subtotal 90.00, 15% VAT 13.50 और total 103.50; 3 × 33.33 SAR पर 5% डिस्काउंट के totals spec के rounding नियम के अनुसार; invoice PDF में वही VAT जो order API के response में है; मूल बग रिपोर्ट के स्टेप अब दोष नहीं दोहराते (confirmation टेस्ट)।
- Regression (चुना हुआ): क्या कुछ और टूटा? ज़रूरी: pricing के सभी यूनिट और API सूट, invoice API सूट, checkout की E2E यात्राएँ। चलाने चाहिए: refunds और credit notes, promo codes, order history के totals, क्योंकि ये सब VAT इस्तेमाल करते हैं। छोड़ें: profile, notifications और search, जो pricing पर निर्भर नहीं। बाद में: हर रात की तरह nightly run में पूरा regression सूट।
Change: fix VAT rounding on invoices that have a discount (pricing service, invoice PDF)
Build: 5.8.1 on staging
1. SMOKE (automated, about 3 min): can this build be tested at all?
[x] /health 200 for web, pricing and invoice services
[x] log in with the test customer, add an item, reach checkout
[x] create order via API -> 201
[x] invoice PDF endpoint -> 200, application/pdf
2. SANITY (focused, about 20 min): is the fix itself right?
[x] 100.00 SAR, 10% discount -> subtotal 90.00, VAT 15% 13.50, total 103.50
[x] 3 x 33.33 SAR, 5% discount -> totals follow the rounding rule in the spec
[x] invoice PDF shows the same VAT as the order API response
[x] steps of the original bug report no longer reproduce (confirmation test)
3. REGRESSION (selected): did anything else break?
must pricing unit + API suites (all), invoice API suite, checkout E2E journeys
should refunds and credit notes, promo codes, order-history totals (all use VAT)
skip profile, notifications, search (no dependency on pricing)
later full regression suite in the nightly run, as every nightआम गलतियाँ
- हरे smoke run को रिलीज़ की मंज़ूरी मान लेना। Smoke बताता है कि build टेस्ट करने लायक है, यह नहीं कि वह सही है।
- Smoke सूट को आधे घंटे तक बढ़ने देना; तब वह हर डिप्लॉयमेंट पर चलना बंद हो जाता है।
- क्या जाँचा यह बताए बिना "sanity पास" रिपोर्ट करना।
- सिर्फ़ confirmation टेस्ट के बाद दोष बंद करना, fix के आसपास कोई regression किए बिना।
- बदलाव और लिखी हुई जोखिम-सूची के बजाय याद से regression टेस्ट चुनना।
- Regression सूट की कभी छँटाई न करना: दोहराए गए टेस्ट, हटाए गए फ़ीचर्स के टेस्ट और स्थायी रूप से skip टेस्ट हर run में समय लेते हैं।
- Scheduled पूरा run छोड़ देना क्योंकि हर बदलाव का चयन "अब तक ठीक रहा है"।
अक्सर पूछे जाने वाले सवाल
Smoke और sanity testing में मुख्य अंतर क्या है?
सबसे आम इस्तेमाल में smoke testing चौड़ी और उथली है — यह जाँचती है कि पूरे build के अहम फ़ंक्शन काम करते हैं ताकि टेस्टिंग शुरू हो सके — जबकि sanity testing संकरी और गहरी है, जो जाँचती है कि कोई ख़ास बदलाव या fix सही व्यवहार करता है। कुछ टीमें दोनों शब्दों को पर्याय मानती हैं, इसलिए अपनी test strategy में परिभाषा तय करें।
क्या sanity testing, regression testing का उपसमूह है?
अक्सर इसे ऐसे बताया जाता है, क्योंकि यह बदलाव के बाद किसी हिस्से को दोबारा जाँचती है। व्यवहार में यह आमतौर पर ख़ुद बदलाव की तेज़, केंद्रित जाँच है, जो regression testing शुरू होने से पहले होती है और जिसमें ठीक हुए दोष का confirmation टेस्ट शामिल होता है।
क्या smoke टेस्ट ऑटोमेट होने चाहिए?
हाँ। ये हर build और डिप्लॉयमेंट पर चलते हैं, इन्हें तेज़ और सुसंगत होना चाहिए, और इनका नतीजा तय करता है कि आगे की टेस्टिंग शुरू हो या नहीं। मैनुअल smoke चेकलिस्ट सिर्फ़ वहीं स्वीकार्य है जहाँ ऑटोमेशन अभी संभव नहीं, और उसे जल्दी ऑटोमेट करना चाहिए।
Smoke सूट में कितने टेस्ट होने चाहिए?
उतने कम जितने हर अहम रास्ते और हर बड़े component को एक बार छूने के लिए ज़रूरी हों — अक्सर दस से कुछ दर्जन जाँचें — और इतना छोटा कि कुछ मिनट में ख़त्म हो जाए। अगर इससे बहुत ज़्यादा समय लगे, तो उसका कुछ हिस्सा regression सूट में होना चाहिए।
क्या हर बदलाव पर पूरा regression सूट चलाना ज़रूरी है?
ज़रूरी नहीं। छोटे सूट के लिए हाँ; बड़े सूट के लिए हर बदलाव पर impact और जोखिम के आधार पर चुना उपसमूह चलाएँ, और पूरा सूट शेड्यूल पर और रिलीज़ से पहले चलाएँ ताकि चयन से जो छूटा वह जल्दी पकड़ा जाए।
Regression testing और re-testing में क्या अंतर है?
Re-testing, या confirmation testing, किसी ख़ास दोष के स्टेप दोहराकर जाँचती है कि वह ठीक हुआ। Regression testing जाँचती है कि fix, या किसी और बदलाव, ने दूसरी functionality नहीं तोड़ी।
संदर्भ
- ISTQB Certified Tester Foundation Level (CTFL) v4.0सॉफ़्टवेयर टेस्टिंग का फ़ाउंडेशन पाठ्यक्रम: टेस्ट स्तर और प्रकार, टेस्ट डिज़ाइन तकनीकें, टेस्ट प्रबंधन और टूल।
- ISTQB Glossaryटेस्टिंग शब्दों की मानक परिभाषाएँ — टेस्ट केस, रिग्रेशन टेस्टिंग, सेवेरिटी, प्रायोरिटी, बाउंड्री वैल्यू एनालिसिस आदि।
- The Practical Test Pyramid (Ham Vocke)ऑटोमेटेड टेस्ट पोर्टफ़ोलियो में unit, integration, contract और UI टेस्ट का संतुलन कैसे रखें — व्यापक रूप से उद्धृत व्याख्या।
- Continuous Integration (Martin Fowler)continuous integration का व्यापक रूप से संदर्भित विवरण: बार-बार integrate करें, build को self-testing और तेज़ रखें, टूटा build तुरंत ठीक करें।
अभ्यास
Transfer limit fix के लिए smoke, sanity और regression की योजना
आप एक retail bank के web app को टेस्ट करते हैं। Build 3.4.2 अभी staging पर deploy हुआ है और उसमें दोष BUG-1182 का fix है। नीचे के material में दोष, developer का note, टीम की risk list और ग्यारह candidate जाँचें दी गई हैं। आपकी टीम "sanity testing" को गाइड के सबसे आम अर्थ में इस्तेमाल करती है: नए build पर fix की केंद्रित जाँच, जिसमें उसका confirmation टेस्ट शामिल है।
Candidate जाँचों को इस build के test plan में बदलें, गाइड के हल किए गए उदाहरण के समूहों के साथ: smoke, sanity, regression (ज़रूरी और चलाने चाहिए), छोड़ें और बाद में। हर regression, छोड़ें और बाद में वाले फ़ैसले का एक पंक्ति का कारण लिखें। सूची में sanity की दो जाँचें नहीं हैं: उन्हें जोड़ें। फिर material के अंत के दोनों सवालों के जवाब दें।
Retail bank का web app - build 3.4.2 staging पर deploy
दोष BUG-1182 (इस build में fix)
Saved beneficiary को local transfer "Daily limit exceeded" के साथ reject होता है
जब amount बची हुई daily limit के बिल्कुल बराबर हो।
उदाहरण: daily limit 10,000.00 SAR, आज 7,500.00 SAR भेजे जा चुके,
2,500.00 SAR का transfer -> reject। अपेक्षित: accept।
Developer का note
Limits service का limit check अब amount <= remaining इस्तेमाल करता है
(पहले amount < remaining था)। Local transfers, bill payments और
scheduled-transfer job यह check call करते हैं। International transfers की
अपनी limit FX service में है। इस build में और कुछ नहीं बदला।
टीम की risk list: international transfers (ऊँचा business impact,
production में दोषों का इतिहास)।
Candidate जाँचें
C1 GET /health: web, accounts, transfers और limits services 200 लौटाती हैं
C2 टेस्ट ग्राहक से लॉगिन; accounts overview में balances दिखते हैं
C3 API से saved beneficiary को 10.00 SAR का local transfer -> 201
C4 BUG-1182 के स्टेप दोहराएँ -> 2,500.00 SAR का transfer accept
C5 Bill payments: limit के भीतर accept, बची limit से ज़्यादा reject
C6 Scheduled-transfer job: limit के भीतर execute, उससे ज़्यादा skip
C7 Limits service के सभी automated यूनिट और API टेस्ट
C8 अपनी limit के भीतर international transfer -> accept
C9 Profile picture बदलें
C10 पिछले महीने का account statement PDF में डाउनलोड करें
C11 पूरा regression सूट, सभी स्तर
सवाल
Q1 पहला smoke run C1 पर fail होता है: limits service 503 लौटाती है।
बाक़ी plan का क्या होगा?
Q2 आपका test lead पूछता है: "क्या sanity पास हुई?" एक पंक्ति का जवाब
लिखें जो बताए कि क्या जाँचा गया।- दोष और developer का note पढ़ें; लिखें कि क्या बदला और कौन-से features बदले हुए code को call करते हैं।
- Smoke जाँचें चुनें: वे जो सिर्फ़ यह दिखाती हैं कि build 3.4.2 टेस्ट करने लायक है या नहीं।
- Fix के लिए sanity जाँचें चुनें, उनमें confirmation टेस्ट चिह्नित करें, और limit के दोनों ओर की दो छूटी हुई जाँचें जोड़ें।
- अभी चलने वाला regression चुनें और हर चुनाव का कारण (impact या जोखिम) लिखें; बाक़ी को कारण के साथ "छोड़ें" या "बाद में" में रखें।
- Execution का क्रम लिखें, फिर Q1 और Q2 के जवाब दें।
मॉडल उत्तर दिखाएँ
Smoke (automated, सबसे पहले, कुछ मिनट): C1, C2 और C3। ये मिलकर दिखाती हैं कि build 3.4.2 टेस्ट करने लायक है या नहीं: services चल रही हैं, ग्राहक लॉगिन कर सकता है, और transfer का रास्ता शुरू से अंत तक काम करता है। C3 बदले हुए check से होकर गुज़रती है, पर यह sanity नहीं है: 10.00 SAR की रकम limit से बहुत दूर है, इसलिए यह fix के बारे में कुछ नहीं बताती। नियम: कोई भी smoke जाँच fail हो तो build अस्वीकार, और कुछ और शुरू नहीं होता।
Sanity, टीम के अर्थ में यानी fix verification (संकरी और गहरी, smoke के ठीक बाद): C4 confirmation टेस्ट है, क्योंकि यह BUG-1182 के स्टेप दोहराती है। छूटी हुई दो जाँचें limit के दोनों ओर हैं, उसी शुरुआती स्थिति के साथ (limit 10,000.00 SAR, आज 7,500.00 SAR भेजे जा चुके)। S1: 2,500.01 SAR का transfer "Daily limit exceeded" के साथ reject होता है, जो दिखाता है कि fix बची limit से ज़्यादा रकम को पास नहीं होने देता। S2: 2,499.99 SAR का transfer accept होता है, जो दिखाता है कि limit से कम रकम अब भी काम करती है। C4, S1 और S2 मिलकर बची हुई limit (2,500.00 SAR) को ठीक उसी value पर और उसके दोनों ओर 0.01 SAR के एक step पर जाँचती हैं: यह एज केस और कॉर्नर केस वाले lesson की "ठीक limit और उससे एक आगे" वाली जाँच है, दोनों ओर लागू की गई। Test design module इसे 3-value boundary value analysis कहता है। इनमें से हर जाँच के लिए आज ठीक 7,500.00 SAR भेजे जा चुके होने चाहिए: C4 बची limit ख़त्म कर देती है (उसके बाद 0.00), और C3 में इस्तेमाल हुआ ग्राहक पहले ही 10.00 SAR भेज चुका है, इसलिए हर जाँच को उसका अलग टेस्ट ग्राहक दें या उससे पहले डेटा reset करें। एक उपयोगी अतिरिक्त जाँच: C4 के बाद 0.01 SAR का एक और transfer reject होता है।
Regression, ज़रूरी (impact-आधारित: ये बदले हुए check को चलाती हैं या उसे सीधे call करती हैं): पहले C7, क्योंकि limits service के यूनिट और API टेस्ट तेज़ हैं और बदले हुए code को कवर करते हैं; फिर C5 (bill payments) और C6 (scheduled-transfer job), जो developer के note में बताए गए बाक़ी दो callers हैं। Regression, चलाने चाहिए (जोखिम-आधारित): C8। International transfers बदला हुआ check call नहीं करते, पर वे टीम की risk list में हैं, इसलिए उनकी एक यात्रा कम लागत वाला बचाव है। अगर आपकी टीम अपनी risk list हमेशा चलाती है तो C8 को ज़रूरी में रखना भी ठीक है; अहम यह है कि कारण लिखा हो।
छोड़ें: C9 और C10। Profile picture और statement PDF limit check call नहीं करते; statement सिर्फ़ पहले से मौजूद transactions पढ़ता है। बाद में: C11, यानी पूरा regression सूट, हर रात की तरह nightly run में चलता है और release candidate के लिए हरा होना चाहिए। यह उस हर चीज़ का सुरक्षा-जाल है जो इस चयन से छूट गई, इस बदलाव का gate नहीं।
क्रम: C1 से C3, फिर C4, S1 और S2, फिर C7, C5, C6 और C8। C9 और C10 इस बदलाव के लिए नहीं चलतीं; nightly का पूरा run (C11) उन्हें फिर भी कवर करता है। अगर S1 fail हो (2,500.01 SAR accept हो जाए), तो fix ने ज़्यादा गंभीर दोष डाल दिया है: ग्राहक अपनी daily limit पार कर सकते हैं। Exact रकमों के साथ इसे रिपोर्ट करें, fix वापस भेजें और regression स्थगित करें। सिर्फ़ confirmation टेस्ट के बाद BUG-1182 बंद न करें; चुना हुआ regression पास होने के बाद बंद करें।
Q1: C1 fail होते ही build 3.4.2 टेस्टिंग के लिए अस्वीकार है। Sanity या regression शुरू न करें: fix और बदले हुए check को call करने वाली हर चीज़ limits service पर निर्भर है, इसलिए वे जाँचें इसी कारण fail होंगी और fix के बारे में कुछ नहीं बताएँगी, और fail हुआ confirmation टेस्ट BUG-1182 को ग़लती से reopen करवा सकता है। Developers को तुरंत बताएँ और अपनी टीम की प्रक्रिया के अनुसार समस्या दर्ज करें, build number, endpoint, 503 status और समय के साथ। ठीक किया हुआ deployment आने पर फिर smoke से शुरू करें।
Q2, उदाहरण के लिए: "Build 3.4.2 पर BUG-1182 का fix verification पास: बची limit के बिल्कुल बराबर 2,500.00 SAR का transfer accept (confirmation टेस्ट), 2,500.01 reject और 2,499.99 accept। चुना हुआ regression (C5 से C8) जारी है।" सिर्फ़ "sanity पास हुई" कहना छिपा देता है कि क्या जाँचा गया और क्या नहीं।
Product owner के लिए खुला सवाल: bill payments और scheduled transfers भी वही check call करते हैं, इसलिए वहाँ भी बची limit के बिल्कुल बराबर का payment अब accept होता है। क्या यह इरादतन है? जवाब दोष में या test report में दर्ज करें।
इस topic में आपकी प्रगति
प्रगति ट्रैक करने के लिए साइन इन करें
Topics पूर्ण चिह्नित करें, जहाँ छोड़ा था वहीं से जारी रखें और specialisation परीक्षाएँ खोलें।
QA रोडमैप का हिस्सा
इस topic से पहले
अगले topics
इस गाइड में बताए गए टूल्स
बदलाव के विवरण और प्रभावित तथा संबंधित मॉड्यूल की सूची से रिग्रेशन सिनेरियो जनरेट करें।
Mutqan AI से किसी change विवरण, diff सारांश या release notes से regression टेस्ट सूट जनरेट करें।
फ़ीचर को संभावना और प्रभाव के आधार पर स्कोर दें, फिर प्राथमिकता वाला risk-based टेस्ट प्लान जनरेट करें।
एक साथ कई API health endpoint जाँचें और स्टेटस, latency तथा pass/fail सारांश पाएँ।
OpenAPI / Swagger स्पेसिफ़िकेशन से संरचित टेस्ट-केस मैट्रिक्स (positive, negative, auth, boundary) बनाएँ।
Mutqan AI से किसी सूट में डुप्लिकेट और आपस में ओवरलैप करते टेस्ट केस खोजें और मर्ज करने की सिफ़ारिशें पाएँ।