रिस्क-आधारित टेस्टिंग

रिस्क-आधारित टेस्टिंग (Risk-based testing) वह तरीका है जिसमें यह तय किया जाता है कि क्या टेस्ट करना है, कितनी गहराई से और किस क्रम में — इस आधार पर कि किसी चीज़ के फ़ेल होने की संभावना कितनी है और फ़ेल होने पर नुकसान कितना होगा। आप सब कुछ टेस्ट नहीं कर सकते, इसलिए हर टीम पहले से चुनाव करती है; रिस्क-आधारित टेस्टिंग उस चुनाव को स्पष्ट, सहमत और बचाव-योग्य बनाती है, और रिलीज़ के फ़ैसले को एक भाषा देती है: कौन-से risk कम हुए, कौन-से बचे, और उन्हें किसने स्वीकार किया।

यह गाइड पूरा चक्र समझाती है — risk पहचानना, उन्हें स्कोर करना, स्कोर को टेस्ट की गहराई में बदलना, regression टेस्ट चुनने में risk का उपयोग, रिलीज़ के दौरान risk की निगरानी और जो बचा उसकी रिपोर्टिंग — साथ में checkout फ़ीचर का स्कोर किया हुआ risk register जिसे आप कॉपी कर सकते हैं, और इस तरीके की सीमाओं पर एक ईमानदार सेक्शन।

Product risk बनाम project risk

ISTQB Foundation syllabus दो तरह के risk को अलग करता है, और इन्हें मिलाना risk register के बेकार हो जाने का सबसे आम कारण है। Product risk (जो प्रोडक्ट की quality विशेषताओं से जुड़ा होता है) वह तरीका है जिससे प्रोडक्ट ख़ुद किसी ज़रूरत को पूरा करने में फ़ेल हो सकता है: checkout पर गलत total, धीमा search पेज, अकाउंट्स के बीच डेटा लीक। Project risk वह तरीका है जिससे प्रोजेक्ट डिलीवर करने में फ़ेल हो सकता है: test environment देर से मिलना, payment integration जानने वाला अकेला व्यक्ति छुट्टी पर जाना, किसी सप्लायर का API एक स्प्रिंट देर से आना।

टेस्टिंग product risk को सीधे कम करती है — टेस्ट यह पता लगाने का तरीका है कि जिस failure का डर है वह मौजूद है या नहीं। Project risk को test manager और डिलीवरी टीम planning, staffing और escalation से संभालते हैं; उनकी जगह test plan में है, लेकिन ज़्यादा test case लिखने से वे कम नहीं होते। इन्हें अलग-अलग owner वाली अलग सूचियों में रखें।

  • Product risk के उदाहरण: GST/VAT की गलत गणना, logout पर session invalid न होना, बटन से बाहर निकलता अरबी या हिंदी टेक्स्ट, महीने के अंत के volume पर report का time out होना।
  • Project risk के उदाहरण: दूसरी टीम के साथ साझा staging environment, test data की देर से डिलीवरी, payment provider के sandbox तक पहुँच न होना, अस्पष्ट acceptance criteria।

Risk कैसे पहचानें

Risk identification तब सबसे अच्छा काम करता है जब कमरे में कई दृष्टिकोण हों, क्योंकि हर रोल अलग failure देखता है। डेवलपर जानता है कि कौन-सा module नाज़ुक है, product owner जानता है कि कौन-सा failure ख़बर बन जाएगा, support जानता है कि ग्राहक पहले से किस बात की शिकायत करते हैं, और tester जानता है कि पिछली बार defect कहाँ इकट्ठा हुए थे।

  • Risk workshop — product, development, testing, operations और ज़रूरत हो तो security और support के साथ 45 से 90 मिनट। फ़ीचर के flow पर कदम-दर-कदम चलें और हर कदम पर पूछें: यहाँ क्या गलत हो सकता है, और किसे पता चलेगा?
  • Checklist — मिलते-जुलते फ़ीचर (payment, authentication, file upload, reporting) की risk सूची दोबारा इस्तेमाल करें ताकि workshop खाली पन्ने से शुरू न हो।
  • Quality characteristics — ISO/IEC 25010 को prompt सूची की तरह इस्तेमाल करें: functional suitability, performance efficiency, compatibility, interaction capability, reliability, security, maintainability, flexibility और safety। हर एक के लिए पूछें: क्या इस फ़ीचर के लिए यहाँ failure मायने रखता है?
  • पिछले defect — पिछली रिलीज़ के defect को component और root cause के हिसाब से समूहित करें; जिन हिस्सों में escaped या reopened defect ज़्यादा थे वे फिर फ़ेल हो सकते हैं।
  • Change impact — इस रिलीज़ में क्या नया या बदला है, उस पर क्या निर्भर है, और बदलाव कितना जटिल है। नया कोड, दोबारा लिखा कोड और कई लोगों द्वारा छुआ गया कोड ज़्यादा likelihood रखता है।
  • Interview और expert review — regulated या विशेष domain में नियम जानने वालों (finance, compliance, clinical स्टाफ़) से पूछें कि अस्वीकार्य failure कैसा दिखता है।

आज़माएँ: AI रिस्क-बेस्ड टेस्ट जनरेटर

Risk assessment: likelihood × impact

हर पहचाने गए product risk को दो रेटिंग मिलती हैं। Likelihood यह है कि failure के मौजूद होने और उपयोग में होने की संभावना कितनी है; यह जटिलता, नयापन, कमज़ोर requirements, समय के दबाव, कई integrations और defect के इतिहास के साथ बढ़ती है। Impact यह है कि failure होने पर कितना बुरा होगा: आर्थिक नुकसान, क़ानूनी या regulatory जोखिम, safety, प्रभावित यूज़र्स की संख्या, प्रतिष्ठा को नुकसान, workaround की उपलब्धता। Risk level दोनों को मिलाता है, अक्सर दो ordinal स्कोर के गुणनफल के रूप में।

लिखित परिभाषाओं वाले qualitative scale इस्तेमाल करें ताकि दो लोग एक ही तरह स्कोर करें। आमतौर पर 1–4 का scale काफ़ी है; बारीक scale 6 और 7 के फ़र्क़ पर ऐसी बहस छेड़ते हैं जिसे कोई सुलझा नहीं सकता। परिभाषाएँ workshop से पहले तय करें, उसके दौरान नहीं। 1–5 का scale भी इसी तरह काम करता है — test strategy और test plan गाइड के Bustan Market उदाहरण यही इस्तेमाल करते हैं — बशर्ते हर register में लिखित परिभाषाओं और तय bands वाला एक ही scale हो, और अलग-अलग scale के स्कोर की आपस में तुलना कभी न की जाए। नीचे लिंक किया गया रिस्क-बेस्ड टेस्ट जनरेटर ऐसा ही एक अलग scale इस्तेमाल करता है: likelihood और impact 1 से 5 तक, bands Low (4 से कम), Medium (4–8), High (9–14) और Critical (15–25), और impact के आधार पर कोई न्यूनतम स्तर नहीं। इसलिए इस पेज के 1–4 वाले स्कोर सीधे न डालें, बल्कि risk को उसके scale पर दोबारा रेट करें; और अगर आपकी strategy में impact वाला कोई नियम है तो उसे जनरेटर के नतीजे पर ख़ुद लागू करें।

  • नीचे के चार्ट में likelihood का scale: 1 Rare — सरल, बिना बदला और अच्छी तरह टेस्ट हुआ कोड; 2 Possible — मध्यम बदलाव; 3 Likely — जटिल या नया कोड; 4 Very likely — नया, जटिल और कमज़ोर requirements वाला कोड।
  • Impact का scale: 1 Low — cosmetic समस्या, आसान workaround; 2 Medium — फ़ीचर कमज़ोर, कुछ यूज़र प्रभावित; 3 High — मुख्य flow टूटा या गलत डेटा; 4 Severe — पैसे, क़ानून, security या safety पर असर।
  • Matrix में पंक्तियाँ likelihood हैं (ऊपर 4 से नीचे 1 तक) और कॉलम impact (1 से 4), और हर ख़ाने में गुणनफल और उसका level है। Bands: 1–3 Low, 4–6 Medium, 8–9 High, 12–16 Very high।
  • नियम: जिस risk का impact 4 है वह गुणनफल चाहे जो हो, कम से कम High माना जाता है; इससे सिर्फ़ likelihood 1 और impact 4 वाला ख़ाना बदलता है, जिसका स्कोर 4 Medium से High हो जाता है।
Likelihood × impact से risk level मिलता है, और Impact 4 वाला हर risk गुणनफल चाहे जो हो, कम से कम High है।
LikelihoodImpact
1 Low2 Medium3 High4 Severe
4 Very likely4Medium8High12Very high16Very high
3 Likely3Low6Medium9High12Very high
2 Possible2Low4Medium6Medium8High
1 Rare1Low2Low3Low4Medium → High
  • Low: 1–3
  • Medium: 4–6
  • High: 8–9
  • Very high: 12–16
  • Impact 4 → कम से कम High (Rare × Severe को 4 Medium से ऊपर उठाता है)
Likelihood
1 Rare — सरल, बिना बदला और अच्छी तरह टेस्ट हुआ कोड
2 Possible — मध्यम बदलाव
3 Likely — जटिल या नया कोड
4 Very likely — नया, जटिल और कमज़ोर requirements वाला कोड
Impact
1 Low — cosmetic समस्या, आसान workaround
2 Medium — फ़ीचर कमज़ोर, कुछ यूज़र प्रभावित
3 High — मुख्य flow टूटा या गलत डेटा
4 Severe — पैसे, क़ानून, security या safety पर असर
पाठ संस्करण
Likelihood                      Impact
1 Rare     – simple, unchanged,   1 Low      – cosmetic, easy workaround
             well tested          2 Medium   – feature degraded, some users
2 Possible – moderate change      3 High     – core flow broken or wrong data
3 Likely   – complex or new code  4 Severe   – money, legal, security or
4 Very likely – new + complex +                 safety consequence
             weak requirements

                     IMPACT
               1 Low   2 Medium  3 High   4 Severe
LIKELIHOOD 4 |  4 M  |   8 H   |  12 VH |  16 VH |
           3 |  3 L  |   6 M   |   9 H  |  12 VH |
           2 |  2 L  |   4 M   |   6 M  |   8 H  |
           1 |  1 L  |   2 L   |   3 L  |   4 M  |

Bands: 1–3 Low · 4–6 Medium · 8–9 High · 12–16 Very high
Rule: any risk with Impact 4 is at least High, whatever the product.

आज़माएँ: रिस्क-बेस्ड टेस्ट जनरेटर

Risk level से टेस्ट की प्राथमिकता और गहराई तक

Risk level दो चीज़ें तय करता है: टेस्टिंग का क्रम (ऊँचे risk पहले, ताकि समय ख़त्म होने पर बिना टेस्ट हुआ काम सबसे कम ख़तरनाक हो) और टेस्टिंग की गहराई (कितनी techniques, कितना coverage और कितनी स्वतंत्रता)। इस mapping को test strategy में लिख दें ताकि हर फ़ीचर पर गहराई पर दोबारा मोलभाव न हो।

  • Very high — कई design techniques साथ में (boundary value analysis, decision table, state transition testing), negative और error-path टेस्ट, जहाँ risk non-functional हो वहाँ non-functional जाँच, हर build पर चलने वाला API स्तर का automated regression, दूसरे tester का exploratory session, और ख़ुद टेस्ट की review।
  • High — हर अहम input पर boundary और negative टेस्ट, सभी acceptance criteria कवर, हर build पर या nightly automated regression, एक exploratory session।
  • Medium — मुख्य negative cases के साथ सभी acceptance criteria कवर; nightly या release suite में regression; समय हो तो exploratory testing।
  • Low — happy path और acceptance criteria की जाँच, या सिर्फ़ smoke test से कवर; हल्का टेस्ट करने का फ़ैसला दर्ज किया जाता है, चुपचाप नहीं लिया जाता।
  • क्रम — testable build मिलते ही Very high risk से शुरू करें; Low risk को आख़िर में टेस्ट करें और सबसे पहले काटें।

आज़माएँ: Requirements → टेस्ट केस

Regression टेस्ट चुनने में risk का उपयोग

पूरा regression suite शायद ही कभी release window में समाता है, इसलिए हर रिलीज़ में चुनाव होता है। Risk-आधारित regression selection, change impact analysis को risk register के साथ जोड़ता है: बदले हुए कोड और उस पर निर्भर हिस्सों के टेस्ट पहले चलते हैं, प्रभावित हिस्सों के risk level के अनुसार भार देकर।

  • क्या बदला, उसकी सूची बनाएँ — commits, pull requests, release notes, database migrations, configuration और dependency upgrades।
  • Dependencies ट्रेस करें — कौन-सी screens, APIs, jobs, reports और shared components बदली हुई चीज़ को call करते या पढ़ते हैं; कोई shared utility या database table अपनी फ़ाइल के नाम से कहीं ज़्यादा छूता है।
  • Core हमेशा चलाएँ — smoke और critical-path टेस्ट का एक तय सेट (sign-in, payment, मुख्य business transaction) बदलाव चाहे जो हो, हर build पर चलता है।
  • प्रभावित टेस्ट जोड़ें — बदले हुए और निर्भर हिस्सों से जुड़े टेस्ट, सबसे ऊँचा risk पहले।
  • बचा समय भरें — बिना छुए हिस्सों के risk level के हिसाब से, Medium और Low हिस्सों को रिलीज़ दर रिलीज़ घुमाते हुए ताकि कोई लंबे समय तक बिना टेस्ट न रहे।
  • जो नहीं चला उसे दर्ज करें — न चुने गए टेस्ट residual risk statement का हिस्सा हैं।

आज़माएँ: रिग्रेशन सिनेरियो जनरेटर आज़माएँ: AI रिग्रेशन टेस्ट जनरेटर

उदाहरण: checkout फ़ीचर का risk register

उदाहरण के लिए, एक काल्पनिक ऑनलाइन स्टोर saved cards, discount codes और 3-D Secure के साथ नया checkout जोड़ता है। Workshop ने नीचे का register बनाया। स्कोर ऊपर के 1–4 scale पर हैं, नीचे लिंक किए गए रिस्क-बेस्ड टेस्ट जनरेटर के 1–5 scale पर नहीं; ये संख्याएँ जनरेटर में डालने पर level अलग आते हैं (R4 Medium आएगा, क्योंकि जनरेटर में Impact-4 नियम नहीं है)। "test response" वह है जिसके लिए plan हर risk पर प्रतिबद्ध है।

  • Register संक्षेप में (likelihood × impact = स्कोर, level): R1 कार्ड से पैसा कटा पर order नहीं बना, capture के बाद gateway timeout से — 3 × 4 = 12, Very high; R2 discount और VAT साथ आने पर गलत total — 3 × 4 = 12, Very high; R3 double submit से दो orders — 2 × 4 = 8, High; R4 किसी दूसरे यूज़र का saved card दिखना (broken access control) — 1 × 4 = 4, Impact-4 नियम से High; R5 mobile Safari पर 3-D Secure challenge फ़ेल — 2 × 3 = 6, Medium; R6 confirmation email 5 मिनट से ज़्यादा देर से — 2 × 2 = 4, Medium; R7 receipt PDF में अरबी पता कटना — 3 × 1 = 3, Low।
  • काम का क्रम: पहले R1 और R2, फिर R3 और R4, फिर R5 और R6, और आख़िर में R7।
  • R1 और R2 को सबसे ज़्यादा मेहनत मिलती है: हर एक पर दो techniques, pipeline में automated API टेस्ट, और payment failures पर एक exploratory session।
  • R4 की likelihood कम है लेकिन impact गंभीर है; सिर्फ़ 4 के स्कोर से यह Medium होता, पर Impact-4 नियम इसे High कर देता है ताकि स्कोर संभावित डेटा breach को छिपा न दे।
  • R7 को एक test case मिलता है; schedule खिसके तो यही सबसे पहले कटता है, और यह कटौती residual risk statement में लिखी जाती है।
Feature: Checkout v2 (saved cards, discount codes, 3-D Secure)   Release 5.3

ID  Risk                                            L  I  Score Level  Test response
R1  Card charged but no order created               3  4  12    VH     State transitions of payment; gateway
    (gateway timeout after capture)                                     timeout/5xx via mock; retry and
                                                                        reconciliation check; exploratory
R2  Wrong total when discount and VAT combine       3  4  12    VH     Decision table promo x VAT x rounding;
    (e.g. 99.99 SAR, 10% code, 15% VAT)                                boundary amounts 0.01 / max; API tests
R3  Double submit creates two orders                2  4   8    H      Double click, browser back, network
                                                                        retry; idempotency key verified
R4  Another user's saved card visible              1  4   4    H*     Two-account authorization tests;
    (broken access control)                                            added to security regression
R5  3-D Secure challenge fails on mobile Safari      2  3   6    M      Target devices: happy + cancel path
R6  Confirmation email delayed over 5 minutes       2  2   4    M      One end-to-end check; alert in staging
R7  Arabic address truncated on receipt PDF          3  1   3    L      One case in localisation pass

* raised from Medium to High by the Impact-4 rule.
Order of work: R1, R2 -> R3, R4 -> R5, R6 -> R7.

आज़माएँ: रिस्क-बेस्ड टेस्ट जनरेटर

रिलीज़ के दौरान risk mitigation और monitoring

टेस्टिंग कई mitigation में से एक है। ऊँचे risk को design बदलकर (duplicate order के विरुद्ध idempotency key), exposure सीमित करके (feature flag या staged rollout), या production में failure को जल्दी पकड़कर (payment reconciliation पर monitoring और alert) भी कम किया जा सकता है। Risk register में सिर्फ़ टेस्ट नहीं, mitigation का नाम भी होना चाहिए।

रिलीज़ आगे बढ़ने के साथ risk बदलते हैं। तय बिंदुओं पर दोबारा स्कोर करें — पहले test cycle के बाद, हर अहम defect के बाद, go/no-go मीटिंग से पहले। किसी हिस्से में defects का जमावड़ा उसकी likelihood बढ़ाता है; गहरे टेस्ट का साफ़ run उसे घटाता है। खुले High और Very high risk की संख्या को समय के साथ ट्रैक करना एक सरल risk burn-down देता है जिसे stakeholders समझते हैं।

  • जब टेस्टिंग कोई नया failure mode दिखाए तो risk जोड़ें; अगले workshop का इंतज़ार न करें।
  • हर defect को उस risk से लिंक करें जिसकी वह पुष्टि करता है, ताकि register सिर्फ़ राय नहीं, सबूत दिखाए।
  • Risk तभी बंद करें जब उसके planned टेस्ट चलकर pass हो गए हों, या owner ने उसे औपचारिक रूप से स्वीकार किया हो।

Residual risk की रिपोर्टिंग

Residual risk वह है जो टेस्टिंग के बाद बचता है: हल्के ढंग से टेस्ट हुए risk, न चले टेस्ट, खुले defect, और वे हिस्से जिन्हें किसी ने नहीं जाँचा। इसकी रिपोर्टिंग test report का सबसे उपयोगी काम है, क्योंकि इससे रिलीज़ के owner बचे हुए risk को production में खोजने के बजाय जानते-बूझते स्वीकार करते हैं।

Residual risk — Checkout v2, release 5.3

Reduced:   R1, R2, R3, R4 — planned tests executed and passed; no open defects
Partial:   R5 — tested on 2 of 4 target devices (Android tablet and
           older iOS not available); owner: product manager, accepted
Open:      R6 — defect CHK-214 (email delayed up to 12 min under load)
           open, severity Major; mitigation: alert on queue length
Not tested: R7 — cut for schedule; one known cosmetic issue possible
Out of scope: refunds flow (unchanged this release; smoke only)

Recommendation: release with the R5 and R6 conditions above accepted in writing.

आज़माएँ: AI टेस्ट कवरेज एनालाइज़र

रिस्क-आधारित टेस्टिंग की सीमाएँ

  • स्कोर subjective होते हैं। ख़ासकर likelihood एक अनुमान है; अलग-अलग समूह एक ही risk को अलग स्कोर देते हैं, और workshop की सबसे ऊँची आवाज़ बाक़ी सबको anchor कर सकती है। पहले अलग-अलग स्कोर करें, फिर फ़र्क़ पर चर्चा करें।
  • झूठी सटीकता (false precision)। दो ordinal संख्याओं का गुणा एक ऐसी संख्या देता है जो सटीक दिखती है पर है नहीं: 12 ठीक-ठीक 8 से 50% ज़्यादा जोखिम भरा नहीं है। स्कोर को sort और band करने में इस्तेमाल करें, उनसे प्रतिशत या औसत कभी न निकालें।
  • अज्ञात risk अज्ञात ही रहते हैं। Register में सिर्फ़ वे failures होते हैं जिनकी किसी ने कल्पना की। किसी सूचीबद्ध risk से न जुड़ा exploratory testing समय रखें।
  • Register पुराने पड़ जाते हैं। प्रोजेक्ट की शुरुआत में लिखा और कभी अपडेट न हुआ register झूठा भरोसा देता है। तय बिंदुओं पर दोबारा स्कोर करें।
  • Low risk का मतलब no risk नहीं। Low-risk हिस्सों को भी न्यूनतम जाँच मिलती है, और रिलीज़ दर रिलीज़ बार-बार टालना अपने आप में risk है।
  • नौकरशाही। छोटे बदलाव के लिए उन्हीं दो सवालों — कितनी संभावना, कितना बुरा — के साथ पाँच मिनट की बातचीत काफ़ी है; यह तरीका छोटा भी किया जा सकता है।

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

आसान शब्दों में रिस्क-आधारित टेस्टिंग क्या है?

हर हिस्से के लिए दो बातें देखकर तय करना कि पहले क्या और कितनी बारीकी से टेस्ट करें: उसके फ़ेल होने की संभावना कितनी है और failure कितना बुरा होगा। ऊँची संभावना और ऊँचे impact वाले हिस्सों को सबसे ज़्यादा और सबसे पहले टेस्टिंग मिलती है।

Product risk और project risk में क्या अंतर है?

Product risk वह तरीका है जिससे सॉफ़्टवेयर अपने यूज़र्स को निराश कर सकता है, जैसे गलत payment total। Project risk वह तरीका है जिससे प्रोजेक्ट डिलीवर करने में फ़ेल हो सकता है, जैसे test environment की देरी। टेस्टिंग product risk कम करती है; planning और management project risk संभालते हैं।

Risk score कैसे निकालें?

Likelihood और impact को छोटे, परिभाषित scale (जैसे 1–4) पर रेट करें और गुणा करें। नतीजे से risk को Low, Medium, High और Very high जैसे band में बाँटें, और यह नियम जोड़ें कि गंभीर impact वाला risk कभी High से नीचे न माना जाए।

Risk identification में किसे शामिल होना चाहिए?

कम से कम product ownership, development, testing और operations, और जब फ़ीचर उनके क्षेत्र को छूता हो तो security, support या domain experts भी। हर रोल अलग failure mode देखता है।

रिस्क-आधारित टेस्टिंग regression testing में कैसे मदद करती है?

जब पूरा suite समय में न समाए तो यह तय करने देती है कि कौन-से regression टेस्ट चलें: critical-path core हमेशा, फिर बदले और निर्भर हिस्सों के टेस्ट, फिर बाक़ी risk के क्रम में, और जो छोड़ा गया उसकी रिपोर्ट।

क्या कोई tool या AI मेरे लिए risk स्कोर कर सकता है?

Tool स्कोरिंग को व्यवस्थित कर सकता है और आपकी रेटिंग से प्राथमिकता वाला plan बना सकता है, और AI assistant ऐसे risk सुझा सकता है जो आपसे छूट गए हों। लेकिन रेटिंग ख़ुद उन लोगों से आनी चाहिए जो प्रोडक्ट, यूज़र्स और बिज़नेस परिणाम जानते हैं।

Residual risk क्या है?

टेस्टिंग के बाद बचा risk: हल्के ढंग से या बिल्कुल न टेस्ट हुए हिस्से, न चले टेस्ट और अब भी खुले defect। अच्छी test completion report इसे साफ़ बताती है ताकि रिलीज़ owner इसे जानते-बूझते स्वीकार करे।

संदर्भ

  • ISTQB Certified Tester Foundation Level (CTFL) v4.0ISTQB · 2023सॉफ़्टवेयर टेस्टिंग का फ़ाउंडेशन पाठ्यक्रम: टेस्ट स्तर और प्रकार, टेस्ट डिज़ाइन तकनीकें, टेस्ट प्रबंधन और टूल।
  • Certified Tester Advanced Level Test Management (CTAL-TM) v3.0ISTQB · 2024टेस्टिंग प्रबंधन पर ISTQB का advanced पाठ्यक्रम: टेस्ट योजना और अनुमान, risk-based testing, निगरानी, मेट्रिक्स और रिपोर्टिंग।
  • ISO/IEC/IEEE 29119-2:2021 — Software and systems engineering — Software testing — Part 2: Test processesISO/IEC/IEEE · 2021टेस्ट प्रक्रिया मॉडल: संगठनात्मक, टेस्ट प्रबंधन और dynamic टेस्ट प्रक्रियाएँ, उनकी गतिविधियों और परिणामों के साथ।
  • ISO/IEC/IEEE 29119-1:2022 — Software and systems engineering — Software testing — Part 1: General conceptsISO/IEC/IEEE · 2022सॉफ़्टवेयर टेस्टिंग का अंतरराष्ट्रीय मानक: अवधारणाएँ, प्रक्रियाएँ, दस्तावेज़ीकरण और तकनीकें।
  • ISO/IEC 25010:2023 — Systems and software Quality Requirements and Evaluation (SQuaRE) — Product quality modelISO/IEC · 2023उत्पाद गुणवत्ता मॉडल: कार्यात्मक उपयुक्तता, प्रदर्शन दक्षता, संगतता, इंटरैक्शन क्षमता, विश्वसनीयता, सुरक्षा, रखरखाव-योग्यता और लचीलापन।
  • ISTQB GlossaryISTQBटेस्टिंग शब्दों की मानक परिभाषाएँ — टेस्ट केस, रिग्रेशन टेस्टिंग, सेवेरिटी, प्रायोरिटी, बाउंड्री वैल्यू एनालिसिस आदि।

अभ्यास

क्लिनिक बुकिंग रिलीज़ का risk register बनाएँ

आपका काम

एक काल्पनिक SaaS प्रोडक्ट, जिससे प्राइवेट क्लिनिक online appointments लेते हैं, रिलीज़ 3.4 की तैयारी कर रहा है। टीम ने एक risk workshop किया; नीचे के notes में हर व्यक्ति ने जो कहा वह उसी क्रम में है, और उसके बाद टेस्टिंग के दौरान जो हुआ। दो testers के पास test execution के लिए 8 working days हैं।

Notes को guide के 1–4 वाले likelihood और impact scale, उसके bands (1–3 Low, 4–6 Medium, 8–9 High, 12–16 Very high) और इस नियम के साथ risk register में बदलें कि Impact 4 वाला हर risk कम से कम High है। फिर टेस्टिंग का क्रम और गहराई तय करें, day 3 की ख़बर पर प्रतिक्रिया दें, और go/no-go मीटिंग के लिए residual risk statement लिखें। सिर्फ़ notes के तथ्यों का इस्तेमाल करें; जहाँ कुछ मानना पड़े, वह assumption लिख दें।

काग़ज़ पर या spreadsheet में काम करें। रिस्क-बेस्ड टेस्ट जनरेटर अलग 1–5 scale और अलग bands इस्तेमाल करता है, इसलिए ये 1–4 वाले स्कोर उसमें न डालें। Step 3 के लिए आप W1 के एक slot की states और events को स्टेट ट्रांज़िशन जनरेटर में model कर सकते हैं, ताकि दिखे कि कौन से transitions मना होने चाहिए, और W8 के cut-off की values मिनटों में (24 घंटे यानी 1440 मिनट) बाउंड्री वैल्यू एनालिसिस टूल से निकाल सकते हैं।

सामग्री
क्लिनिक बुकिंग SaaS (काल्पनिक) - रिलीज़ 3.4 - risk workshop के notes
मौजूद: product owner, development lead, दो testers, support lead, security officer
Plan: 2 testers के साथ test execution के 8 working days; go/no-go मीटिंग day 8 के बाद

3.4 में क्या बदलता है
  नया: booking के दौरान consultation fee का card से prepayment
  दोबारा लिखा: slot-availability engine, कई branches वाले clinic groups के लिए
  बदला: reminder SMS अब एक नए SMS provider से भेजे जाते हैं
  बदला: "My appointments" में नया "Reschedule" बटन
  बदला: booking confirmation पेज, prepayment summary दिखाने के लिए दोबारा बना
  बिना बदलाव: doctor schedule admin screens, monthly reports

Workshop के notes
W1  Development lead: availability engine शुरू से दोबारा लिखा गया है। Sprint के दौरान
    branch rules दो बार बदले, और दो acceptance criteria अब भी खुले हैं। यह फ़ेल हुआ तो
    दो मरीज़ एक ही डॉक्टर के पास एक ही समय पर बुक हो जाते हैं और उनमें से एक को
    reception से लौटाया जाता है।
W2  Tester: payment provider के sandbox का access 10 दिन पहले माँगा गया था और अब तक
    नहीं मिला।
W3  Product owner: prepayment नया code है जो एक नए payment provider को call करता है।
    पहले card से पैसा कटता है, फिर appointment save होता है। Save फ़ेल हो तो मरीज़
    पैसे दे चुका होता है और उसका कोई appointment नहीं होता।
W4  Security officer: "My appointments" मरीज़ों के नाम, डॉक्टर और clinic specialties
    दिखाता है। इसकी list और access checks 3.4 में नहीं बदले, और दो साल से हर build पर
    चलने वाले automated authorization tests इन्हें बिना किसी defect के cover करते आए
    हैं। एक मरीज़ का दूसरे मरीज़ के appointments देख लेना health data breach होगा।
W5  Support lead: reminder job अब नए SMS provider को call करता है; यह integration नया
    code है, scheduling logic नहीं बदला। Reminder न मिले तो कुछ मरीज़ visit भूल जाते
    हैं, पर उनके पास confirmation email और app में appointment रहता है।
W6  Development lead: Omar अकेला developer है जो पुराने engine का data जानता है, और वह
    test day 2 के बाद दूसरी टीम में चला जाएगा।
W7  Product owner: target - 25 branches वाले group के लिए slot search 2 सेकंड में जवाब
    दे। नया engine अब तक सिर्फ़ 3 branches तक के test clinics के साथ चला है। हमारे
    सबसे बड़े ग्राहक की 22 branches हैं, और उसकी ज़्यादातर bookings 08:00 पर दिन के
    slots खुलने के बाद पहले घंटे में आती हैं। Search time out हो तो उसके मरीज़ online
    book नहीं कर पाते।
W8  Tester: "Reschedule" बटन मौजूदा cancellation नियम (appointment से 24 घंटे पहले तक
    बदलाव की अनुमति) दोबारा इस्तेमाल करता है, जिसका code नहीं बदला; सिर्फ़ बटन और उसकी
    screen नई हैं। नियम गलत लागू हो तो मरीज़ को उसके हक़ का बदलाव मना हो जाता है, या बहुत
    देर से किया गया बदलाव मान लिया जाता है। Clinic फ़ोन पर फिर भी appointment बदल
    सकता है।
W9  Tester: 25 branches वाले group के आकार का कोई test data set नहीं है, और production
    data में मरीज़ों का data है, इसलिए उसे staging में copy नहीं किया जा सकता।
W10 Designer: नए confirmation पेज पर design review में लंबे Arabic clinic names तीन
    lines में wrap हुए। पूरा नाम confirmation email में भी है।

Day 3, पहले test cycle का अंत
  - Reminder SMS में तीन defects: दो duplicate reminders, एक reminder गया ही नहीं।
  - रिलीज़ की तारीख़ पहले कर दी गई: test execution अब day 8 नहीं, day 6 के बाद ख़त्म होगा।

Day 6 के अंत की स्थिति
  - W1, W3, W4: सभी planned tests चले और pass हुए। W1 की टेस्टिंग में CLN-311 मिला
    (दो मरीज़ एक सेकंड के भीतर एक ही slot confirm करें तो double booking); वह fix हुआ
    और उसका confirmation test pass हुआ। Sandbox day 4 को मिला और payment tests वहाँ
    दोहराए गए।
  - W5: तीन में से दो reminder defects fix और retest हुए। CLN-322 (appointment
    reschedule होने के बाद reminder दो बार जाता है) खुला है, severity Minor।
  - W7: 22 branches के synthetic group के साथ 2 सेकंड का target पूरा हुआ; 25 branches
    वाला data set तैयार नहीं था।
  - आपका कोई भी planned, जोड़ा या रखा गया test जिसका ऊपर ज़िक्र नहीं है, pass हुआ।
चरण
  1. W1 से W10 को product risks और project risks में बाँटें। हर project risk के लिए एक mitigation, उसका owner और वह product risk लिखें जिसकी टेस्टिंग को वह ख़तरे में डालता है।
  2. हर product risk के लिए likelihood और impact को 1 से 4 तक रेट करें और हर रेटिंग के पीछे note का तथ्य बताएँ। गुणा करें, स्कोर को उसके band में रखें और Impact-4 नियम लागू करें।
  3. Guide की risk level से टेस्ट की गहराई वाली mapping के आधार पर हर product risk के लिए काम का क्रम और टेस्टिंग की गहराई लिखें। हर High या Very high risk के लिए कम से कम एक test technique या test type बताएँ; सबसे ऊँचे दो risks के लिए टेस्टिंग के अलावा एक mitigation भी जोड़ें।
  4. Day 3 की ख़बर लागू करें: नए सबूत से जो बदलता है उसे दोबारा स्कोर करें, फिर तय करें कि test execution अब day 6 के बाद ख़त्म होने पर क्या काटना है, और हर कटौती दर्ज करें।
  5. Day 6 के अंत की स्थिति से residual risk statement लिखें (reduced, partial, open, not tested, out of scope) और go/no-go मीटिंग के लिए एक पंक्ति की सिफ़ारिश।
मॉडल उत्तर दिखाएँ
मॉडल उत्तर

Project risks: W2, W6 और W9। ये प्रोडक्ट को नहीं, टीम की टेस्ट करने की क्षमता को ख़तरे में डालते हैं, इसलिए ये owner के साथ test plan में जाते हैं; ज़्यादा test cases लिखने से ये कम नहीं होते। W2 (sandbox access नहीं) — mitigation: product owner provider के पास escalate करे; तब तक W3 को provider के responses के mock के सामने टेस्ट करें, और sandbox मिलते ही payment tests वहाँ दोहराएँ; owner: test manager; यह W3 को ख़तरे में डालता है। W6 (Omar day 2 के बाद चला जाएगा) — mitigation: day 1 और 2 में Omar लिखकर दे कि पुराना engine मौजूदा appointments और branch rules कैसे store करता है, W1 के test cases review करे और पहले W1 tests में एक tester के साथ pair करे; owner: development lead; यह W1 को ख़तरे में डालता है। W9 (25 branches का data set नहीं) — mitigation: performance test से पहले script या data generator से 25 branches का synthetic group (डॉक्टर, slots, appointments) बनाएँ, production की copy कभी नहीं; owner: test manager और एक developer; यह W7 को ख़तरे में डालता है।

Product risks, likelihood × impact = स्कोर, फिर level के रूप में। W1 double booking: 4 × 3 = 12, Very high। Engine दोबारा लिखा गया है (नया), कई branches संभालता है (जटिल), और उसके rules दो बार बदले जबकि दो acceptance criteria अब भी खुले हैं (कमज़ोर requirements): यही Very likely की परिभाषा है। Reception से लौटाया गया मरीज़ और गलत booking data टूटा हुआ core flow है, यानी Impact 3। W3 card से पैसा कटा पर appointment नहीं: 3 × 4 = 12, Very high। नए provider के साथ नया code Likely है; सेवा दिए बिना पैसा लेना Severe है।

W7 धीमा slot search: 3 × 3 = 9, High। नया और जटिल engine जो इस volume पर कभी नहीं चला, पर उसका लिखा हुआ साफ़ target है, इसलिए Very likely नहीं, Likely; सबसे बड़े ग्राहक के मरीज़ों का online book न कर पाना टूटा हुआ core flow है। W4 दूसरे मरीज़ के appointments दिखना: 1 × 4 = 4, जो bands के हिसाब से Medium है, और Impact-4 नियम इसे High कर देता है। दो साल से हर build पर टेस्ट होता, बिना बदला हिस्सा Rare है; health data breach Severe है। W5 reminder SMS: 3 × 2 = 6, Medium। नया integration code Likely है; कुछ मरीज़ों के reminders खोना, email और app के workaround के साथ, कमज़ोर हुआ फ़ीचर है। W8 reschedule नियम: 2 × 2 = 4, Medium। नए बटन के पीछे बिना बदला नियम moderate change है; फ़ोन workaround है। W10 Arabic clinic names: 3 × 1 = 3, Low। पेज का नया layout Likely है; wrap होता text, जबकि पूरा नाम email में है, cosmetic है।

काम का क्रम: W1 और W3 day 1 से, फिर W7 और W4, फिर W5 और W8, और W10 आख़िर में। W1 तब शुरू करें जब Omar टीम में है, sandbox आने तक W3 को mock के सामने टेस्ट करें, और synthetic data set तैयार होते ही W7 शुरू करें। W1 (Very high): एक slot का state transition testing (states: free, held, booked; events: hold, confirm, hold expiry, cancel, reschedule); दो खुले acceptance criteria तय होने के बाद branch rules के लिए decision table; डॉक्टर के दिन की शुरुआत और अंत पर और बगल वाले slots के बीच boundary values; negative tests, जिनमें दो मरीज़ एक ही पल में एक ही slot confirm करें; यह जाँच कि पुराने engine से बने appointments अब भी अपने slots घेरे रहते हैं; हर build पर API स्तर का automated regression; दूसरे tester का exploratory session; और Omar द्वारा tests की review। टेस्टिंग के अलावा mitigation: uniqueness constraint, ताकि database एक ही डॉक्टर और एक ही समय की दूसरी booking मना कर दे।

W3 (Very high): payment और booking का state transition testing (started, charged, saved, save failed, refunded); mock के ज़रिए error paths (charge के बाद provider timeout, provider error, charge के बाद save फ़ेल, पैसे देने के बाद मरीज़ का app बंद करना, दोहराया गया payment notification); reconciliation check कि हर charge के साथ या तो appointment है या refund; pipeline में हर build पर API स्तर का automated regression; दूसरे tester का payment failures पर exploratory session; और payment integration बनाने वाले developer द्वारा tests की review। टेस्टिंग के अलावा mitigation: पहले card पर सिर्फ़ authorization करें और appointment save होने के बाद ही payment capture करें, और production में बिना appointment वाले हर charge पर alert।

W7 (High, non-functional): synthetic group के साथ slot search का performance test, सबसे बड़े असली आकार (22 branches) और target (25 branches) पर, 08:00 की peak जैसे load के साथ, 2 सेकंड के target के सामने मापा गया; search time की nightly automated जाँच; कई branches में search पर एक exploratory session। W4 (नियम से High): दो accounts वाले authorization tests — मरीज़ A request में appointment number बदलकर मरीज़ B का appointment खोलने, reschedule करने और cancel करने की कोशिश करता है, और उसे B का कोई data देखे बिना मना होना चाहिए; मौजूदा authorization tests हर build वाले suite में रहें; access पर एक exploratory session। ये tests सस्ते हैं क्योंकि हिस्सा नहीं बदला; नियम बस यह पक्का करता है कि कम स्कोर किसी breach को छिपा न दे। W5 और W8 (Medium): मुख्य negative cases के साथ सभी acceptance criteria, और nightly suite में regression। W5 में: तय समय पर एक reminder, cancellation के बाद कोई reminder नहीं, reschedule के बाद updated reminder, provider error पर duplicate के बिना retry। W8 में: appointment से 24 घंटे 1 मिनट, ठीक 24 घंटे और 23 घंटे 59 मिनट पहले cut-off की boundary — पूछें कि ठीक 24 घंटे पर बदलाव allowed है या नहीं, और system किस time unit में तुलना करता है। W10 (Low): localisation pass में सबसे लंबे Arabic clinic name के साथ एक जाँच, और हल्का टेस्ट करने का फ़ैसला लिखकर दर्ज।

अगर आपने यह देखा तो अतिरिक्त अंक: notes में एक risk छूट गया है। "Reschedule" बटन किसी appointment को उसके number से बदलने का नया रास्ता है, इसलिए कोई मरीज़ किसी और का appointment reschedule कर सकता है। इसे W11 के रूप में जोड़ें: likelihood 2 या 3, इस पर निर्भर कि नया action मौजूदा access check दोबारा इस्तेमाल करता है या नहीं (development lead से पूछें), और impact 4, इसलिए कम से कम High; इसे W4 के दो accounts वाले tests से कवर करें। "बिना बदलाव" शब्द पर भी सवाल करें: अगर, जैसा आम है, monthly reports appointments गिनती हैं, तो वे वह data पढ़ती हैं जो दोबारा लिखा engine अब लिखता है, इसलिए उनके regression tests चुने गए set में रखें।

Day 3: एक ही हिस्से में तीन defects वह सबूत हैं जो W5 की likelihood 3 से 4 कर देता है: 4 × 2 = 8, High। तीनों defects को W5 से link करें, उसे High group में ले जाएँ और उसकी गहराई बढ़ाएँ: reschedule और cancellation के आसपास boundary और negative tests, nightly या हर build पर automated regression, reminders पर एक exploratory session, और production में duplicate या फ़ेल हुए SMS पर alert। किसी और note में नया सबूत नहीं है, इसलिए बाक़ी स्कोर वही रहते हैं। खोए दो दिनों के लिए क्रम में नीचे से काटें और हर कटौती दर्ज करें: W10 सबसे पहले कटता है (Low और cosmetic, और पूरा नाम email में है); W8 अपने acceptance criteria और boundary tests रखता है पर exploratory समय नहीं पाता। कोई High या Very high risk — अब W5 भी — product owner की लिखित स्वीकृति के बिना न काटा जाता है, न हल्का किया जाता है।

Residual risk, क्लिनिक बुकिंग 3.4। Reduced: W1, W3, W4 (W11 के साथ) और W8 — planned tests चले और pass हुए; CLN-311 fix और confirm हुआ; payment tests mock के सामने चले और फिर day 4 को sandbox मिलने पर वहाँ दोहराए गए। Partial: W7 — 2 सेकंड का target 22 branches पर पूरा हुआ, जो सबसे बड़े मौजूदा ग्राहक का आकार है, पर 25 branches के target पर नहीं मापा गया क्योंकि data set (project risk W9) तैयार नहीं था। Open: W5 — CLN-322, reschedule के बाद reminder दो बार जाता है, severity Minor; बाक़ी दो reminder defects fix हो गए। Not tested: W10 — schedule के कारण काटा गया; cosmetic समस्या की संभावना है, और पूरा नाम confirmation email में है। Out of scope: doctor schedule admin screens और monthly reports — बिना बदलाव, सिर्फ़ regression suite से कवर। सिफ़ारिश: go, अगर product owner CLN-322 और W7 की कमी को लिखित रूप में स्वीकार करे, और इस शर्त के साथ कि 25 branches वाले किसी ग्राहक के live होने से पहले 25 branches पर search time मापा जाए।

अपना काम जाँचें: स्कोर अनुमान हैं, इसलिए likelihood में एक अंक का फ़र्क़ ठीक है अगर आप उसके पीछे का तथ्य बता सकें — W7 को 4, क्योंकि engine इस volume पर कभी नहीं चला (12, Very high); W1 का impact 4, अगर आपकी टीम छूटे medical consultation को safety का मामला मानती है (16, फिर भी Very high); या W10 को 4, क्योंकि wrapping पहले ही दिख चुकी है (Medium, फिर भी सबसे पहले कटता है क्योंकि cosmetic है)। जो मेल खाना ही चाहिए: W2, W6 और W9 owners वाले project risks हैं; हर स्कोर likelihood × impact है और guide के bands में रखा गया है; W4 सिर्फ़ Impact-4 नियम की वजह से High है; W1 और W3 पहले आते हैं; day 3 के बाद W5 ऊपर जाता है; कटौती नीचे से शुरू होती है और लिखित स्वीकृति के बिना High या उससे ऊपर कुछ नहीं छूती; और statement में partial W7, open CLN-322 और untested W10 का नाम है।

इस topic में आपकी प्रगति

QA रोडमैप का हिस्सा

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

फ़ीचर को संभावना और प्रभाव के आधार पर स्कोर दें, फिर प्राथमिकता वाला risk-based टेस्ट प्लान जनरेट करें।

टेस्ट डिज़ाइन

Mutqan AI से किसी फ़ीचर या रिलीज़ के जोखिम पहचानें और प्राथमिकता-क्रम में risk-based टेस्ट प्लान बनाएँ।

टेस्ट जनरेशन AI

बदलाव के विवरण और प्रभावित तथा संबंधित मॉड्यूल की सूची से रिग्रेशन सिनेरियो जनरेट करें।

टेस्ट डिज़ाइन

Mutqan AI से requirements या किसी user story की तुलना मौजूदा टेस्ट केस से करके अनटेस्टेड हिस्से खोजें।

टेस्ट ऑप्टिमाइज़ेशन AI

क्रमांकित आवश्यकताओं की सूची को requirement-to-test मैट्रिक्स के साथ ट्रेस करने योग्य टेस्ट केस में बदलें।

टेस्ट डिज़ाइन

Mutqan Soft कैसे मदद कर सकता है

और गाइड

और गाइड
टेस्ट डिज़ाइन

स्मोक, सैनिटी और रिग्रेशन टेस्टिंग में अंतर

Smoke, sanity और regression टेस्टिंग की तुलना: दायरा, समय, गहराई और ऑटोमेशन, "sanity" शब्द अस्पष्ट क्यों है, और regression टेस्ट कैसे चुनें।

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

टेस्ट स्ट्रैटेजी: एक व्यावहारिक गाइड

टेस्ट स्ट्रैटेजी क्या है, यह test plan से कैसे अलग है, इसमें क्या होता है, मुख्य टेस्ट दृष्टिकोण, उन्हें कैसे चुनें, और एक उदाहरण आउटलाइन।

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

टेस्ट प्लान कैसे लिखें

Test plan कैसे लिखें: इसमें क्या होता है, entry, exit, suspension और resumption मानदंड, कॉपी-रेडी टेम्पलेट, एक-पेज agile plan और उदाहरण।

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

टेस्ट मेट्रिक्स जो फ़ैसले तय करें

कौन-से test metrics ट्रैक करने लायक हैं — coverage, execution, defect और DORA delivery metrics — इन्हें रिपोर्ट कैसे करें और vanity metrics से कैसे बचें।

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

टेस्ट एस्टिमेशन तकनीकें

Testing effort का अनुमान कैसे लगाएँ: estimate क्यों फ़ेल होते हैं, असर डालने वाले कारक, ratio, extrapolation, Delphi, three-point और WBS, एक उदाहरण के साथ।

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

एंड-टू-एंड प्रोडक्ट क्वालिटी एश्योरेंस

एंड-टू-एंड QA में क्या आता है — आवश्यकता समीक्षा, टेस्ट डिज़ाइन, फ़ंक्शनल, API, परफ़ॉर्मेंस और सुरक्षा टेस्टिंग, रिलीज़ गेट और मेट्रिक्स — और इसे कैसे चलाएँ।

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