टेस्ट केस कैसे लिखें
टेस्ट केस एक सटीक, दोहराने योग्य निर्देश है: इन प्रीकंडीशन में, इस डेटा के साथ ये स्टेप करो, और यह नतीजा उम्मीद करो। अच्छे से लिखा हो तो कोई भी टेस्टर — या ऑटोमेशन स्क्रिप्ट — एक व्यवहार को हर बार एक ही तरह वेरिफ़ाई कर सकता है और डेवलपर को ठीक-ठीक पता चलता है कि फ़ेलियर कैसे रिप्रोड्यूस करना है। ख़राब लिखा हो तो यह एक धुँधला वाक्य है जो सोमवार को पास और मंगलवार को फ़ेल होता है, और वजह कोई नहीं बता पाता।
यह गाइड आपको अच्छे टेस्ट केस की बनावट, Jira, TestRail या स्प्रेडशीट में पेस्ट करने लायक टेम्पलेट, एक पूरा उदाहरण, और वे डिज़ाइन तकनीकें देती है जो requirement को असली कवरेज वाले कुछ केस में बदलती हैं।
हर टेस्ट केस के ज़रूरी फ़ील्ड
- ID — स्थिर पहचान (TC-LOGIN-004) ताकि बग और रिपोर्ट से केस को रेफ़र किया जा सके।
- टाइटल — एक लाइन जो व्यवहार का नाम ले, फ़ीचर का नहीं: "Login गलत पासवर्ड को साफ़ मैसेज के साथ रिजेक्ट करता है", न कि "Login टेस्ट"।
- प्रीकंडीशन — स्टेप 1 से पहले सिस्टम की ज़रूरी स्थिति: मौजूदा वेरिफ़ाइड यूज़र (उसे बनाते समय वेरिफ़िकेशन ईमेल एक अस्थायी इनबॉक्स में मँगाया जा सकता है), खाली कार्ट, कोई खास रोल।
- टेस्ट डेटा — इस्तेमाल की गई सटीक वैल्यू, या जनरेट किए डेटा सेट का रेफ़रेंस। "एक वैध ईमेल" टेस्ट डेटा नहीं है; "layla.h@example.com" है।
- स्टेप — नंबर वाले, हर स्टेप में एक एक्शन, इतने साफ़ कि नया कर्मचारी भी फ़ॉलो कर सके।
- अपेक्षित परिणाम — आख़िरी स्टेप के बाद क्या दिखना चाहिए, इतना खास कि जाँचा जा सके: स्टेटस कोड, मैसेज टेक्स्ट, रिकॉर्ड की स्थिति।
- प्राथमिकता और टाइप — smoke, regression, negative, boundary — ताकि सूट फ़िल्टर हो सके।
- ट्रेसेबिलिटी — वह requirement, user story या acceptance criterion जिसे केस कवर करता है।
टेस्ट केस टेम्पलेट
ID: TC-LOGIN-004
Title: Login rejects a wrong password with a clear message
Priority: High Type: Negative
Requirement: US-12 (User can sign in with email and password)
Preconditions: A verified account exists for layla.h@example.com
Test data: email = layla.h@example.com, password = WrongPass!9
Steps:
1. Open /login
2. Enter the email and the wrong password
3. Click "Sign in"
Expected result:
- The page stays on /login
- The message "Email or password is incorrect" is shown
- No session cookie is set; the failed attempt is counted
Postconditions: Account is not locked (attempt 1 of 5)टेस्ट सिनेरियो बनाम टेस्ट केस
टेस्ट सिनेरियो एक लाइन का कथन है कि कौन-सी स्थिति टेस्ट करनी है: कौन क्या करता है, किस शर्त में, और कौन-सा नतीजा मायने रखता है — "रजिस्टर्ड यूज़र गलत पासवर्ड से लॉगिन करने की कोशिश करता है और उसका लॉगिन नहीं होता"। टेस्ट केस उस सिनेरियो के एक वेरिएशन की विस्तृत स्क्रिप्ट है, सटीक डेटा, स्टेप और अपेक्षित परिणाम के साथ। एक सिनेरियो आमतौर पर कई केस में फैलता है जिनमें डेटा या सिस्टम की स्थिति बदलती है पर नतीजा वही रहता है: गलत पासवर्ड, Caps Lock चालू रखकर टाइप किया गया सही पासवर्ड, रीसेट के बाद पुराना पासवर्ड। ऊपर के टेम्पलेट का TC-LOGIN-004 इन्हीं में से एक है। "वैध और अवैध क्रेडेंशियल से लॉगिन वेरिफ़ाई करें" एक सिनेरियो के लिए बहुत व्यापक है: वैध लॉगिन, गलत पासवर्ड और लॉक्ड अकाउंट के नतीजे अलग हैं, इसलिए हर एक अपना अलग सिनेरियो है, अपने केस के साथ। स्कोप तय करने के लिए सिनेरियो से शुरू करें, फिर अहम वेरिएशन के लिए केस लिखें।
असली बग पकड़ने वाली डिज़ाइन तकनीकें
- इक्विवैलेंस पार्टीशनिंग — जिन इनपुट को सिस्टम एक जैसा ट्रीट करे (उम्र 18–65) उन्हें ग्रुप करें और हर वैल्यू की जगह हर ग्रुप से एक वैल्यू टेस्ट करें।
- बाउंड्री वैल्यू एनालिसिस — ज़्यादातर डिफ़ेक्ट किनारों पर रहते हैं। 1–100 स्वीकार करने वाले फ़ील्ड के लिए 0, 1, 2, 99, 100 और 101 टेस्ट करें।
- डिसीज़न टेबल — जब कई कंडीशन मिलती हैं (मेंबर? कूपन? ₹500 से ज़्यादा?), हर कॉम्बिनेशन की टेबल गारंटी देती है कि कोई नियम न छूटे।
- स्टेट ट्रांज़िशन टेस्टिंग — लाइफ़साइकल वाली किसी भी चीज़ के लिए (ऑर्डर: created → paid → shipped → refunded) हर अनुमत ट्रांज़िशन और मना किए हुए ट्रांज़िशन टेस्ट करें।
- नेगेटिव टेस्टिंग — गलत टाइप, गायब फ़ील्ड, स्पेशल कैरेक्टर, बहुत लंबा इनपुट, एक साथ किए एक्शन, एक्सपायर्ड सेशन।
- पेयरवाइज़ टेस्टिंग — जब पैरामीटर कॉम्बिनेशन बहुत ज़्यादा हों, बहुत कम केस से वैल्यू के हर जोड़े को कवर करें।
2 और 99 के बीच अक्ष छोटा किया गया है: पैमाने पर नहीं
- ≤ 0अमान्य
- 1–100वैध
- ≥ 101अमान्य
- 10 न्यूनतम से ठीक नीचेअपेक्षित: रिजेक्ट
- 21 न्यूनतमअपेक्षित: स्वीकार
- 32 न्यूनतम से ठीक ऊपरअपेक्षित: स्वीकार
- 499 अधिकतम से ठीक नीचेअपेक्षित: स्वीकार
- 5100 अधिकतमअपेक्षित: स्वीकार
- 6101 अधिकतम से ठीक ऊपरअपेक्षित: रिजेक्ट
तीन ग्रुप उसी फ़ील्ड पर इक्विवैलेंस पार्टीशनिंग लागू करने से बनते हैं, जो हर ग्रुप से एक वैल्यू टेस्ट करती है; छह वैल्यू ग्रुप के किनारों पर हैं, जहाँ ज़्यादातर डिफ़ेक्ट रहते हैं।
आज़माएँ: बाउंड्री वैल्यू जनरेटर आज़माएँ: इक्विवैलेंस पार्टीशन जनरेटर आज़माएँ: डिसीज़न टेबल जनरेटर आज़माएँ: नेगेटिव टेस्ट जनरेटर आज़माएँ: AI नेगेटिव सिनेरियो जनरेटर आज़माएँ: AI एज केस जनरेटर
User story से टेस्ट केस तक
acceptance criteria से शुरू करें। हर Given/When/Then कथन कम से कम एक पॉज़िटिव केस है; हर "नहीं होना चाहिए" या "ज़रूरी है" एक नेगेटिव केस छिपाए है। फिर स्टोरी में बताए हर फ़ील्ड की बाउंड्री, फ़ीचर छूने वाले हर यूज़र रोल के लिए एक केस, और किसी डिपेंडेंसी (पेमेंट प्रोवाइडर, ईमेल सर्विस) के फ़ेल होने पर क्या होता है, इसके लिए एक केस जोड़ें। तीन acceptance criteria वाली स्टोरी से आमतौर पर आठ से पंद्रह केस निकलते हैं।
आज़माएँ: User Story → टेस्ट केस आज़माएँ: एक्सेप्टेंस क्राइटेरिया जनरेटर आज़माएँ: AI टेस्ट केस जनरेटर
आम गलतियाँ
- एक केस में कई चीज़ें टेस्ट करना — फ़ेल होने पर कोई नहीं जानता कौन-सा हिस्सा टूटा।
- धुँधले अपेक्षित परिणाम ("सही काम करता है", "एरर दिखता है") जिन्हें पास या फ़ेल नहीं ठहराया जा सकता।
- ऐसे स्टेप जो किसी दूसरे केस के पहले चलने पर निर्भर हों, ताकि सूट किसी भी क्रम में न चल सके।
- असली कस्टमर डेटा को टेस्ट डेटा बनाना — रियलिस्टिक लेकिन सिंथेटिक जनरेट किया डेटा इस्तेमाल करें।
- सिर्फ़ हैप्पी पाथ लिखना। ज़्यादातर प्रोडक्शन इंसिडेंट नेगेटिव या बाउंड्री केस होते हैं।
- कभी छँटाई न करना: हटाए गए फ़ीचर के केस और डुप्लिकेट रिग्रेशन रन को धीमा और अविश्वसनीय बनाते हैं।
आज़माएँ: टेस्ट डेटा फ़ैक्टरी आज़माएँ: AI डुप्लिकेट टेस्ट केस डिटेक्टर
अक्सर पूछे जाने वाले सवाल
टेस्ट केस और टेस्ट सिनेरियो में क्या फ़र्क़ है?
सिनेरियो एक लाइन में बताता है कि कौन-सी स्थिति टेस्ट करनी है और कौन-सा नतीजा मायने रखता है; टेस्ट केस उस सिनेरियो के एक वेरिएशन की स्टेप-बाय-स्टेप स्क्रिप्ट है, सटीक डेटा और अपेक्षित परिणाम के साथ। अलग नतीजों वाली स्थितियाँ, जैसे वैध लॉगिन और लॉक्ड अकाउंट, अलग-अलग सिनेरियो हैं।
एक फ़ीचर में कितने टेस्ट केस होने चाहिए?
इतने कि हर acceptance criterion, हर इनपुट की हर बाउंड्री, हर रोल और मुख्य फ़ेलियर मोड कवर हों — आम user story के लिए आमतौर पर 8–15। व्यवहार की कवरेज गिनती से ज़्यादा मायने रखती है।
क्या टेस्ट केस में टेस्ट डेटा शामिल होना चाहिए?
हाँ, या जनरेट किए डेटा सेट का रेफ़रेंस। सटीक वैल्यू के बिना केस दोहराने योग्य नहीं होता और फ़ेलियर रिप्रोड्यूस करना मुश्किल होता है।
Jira, TestRail और Xray कौन-सा फ़ॉर्मेट लेते हैं?
सभी टाइटल, प्रीकंडीशन, स्टेप, अपेक्षित परिणाम और प्राथमिकता के कॉलम वाला CSV इम्पोर्ट करते हैं। जब टूल स्टेप टेबल सपोर्ट करे तो हर स्टेप एक रो में रखें।
क्या AI टेस्ट केस लिख सकता है?
AI किसी user story या requirement से मज़बूत पहला सेट ड्राफ़्ट कर सकता है, उन नेगेटिव और एज केस समेत जो रिव्यूअर अक्सर छोड़ देते हैं। टेस्टर को फिर भी हर केस बिज़नेस संदर्भ में रिव्यू करना चाहिए और जो लागू न हो उसे हटाना चाहिए।
API के लिए टेस्ट केस कैसे लिखें?
वही बनावट लागू होती है: स्टेप रिक्वेस्ट हैं, टेस्ट डेटा पेलोड और हेडर है, और अपेक्षित परिणाम स्टेटस कोड, रिस्पॉन्स बॉडी और कोई भी स्टेट बदलाव है। पूरी विधि के लिए API टेस्टिंग गाइड देखें।
संदर्भ
- ISTQB Certified Tester Foundation Level (CTFL) v4.0सॉफ़्टवेयर टेस्टिंग का फ़ाउंडेशन पाठ्यक्रम: टेस्ट स्तर और प्रकार, टेस्ट डिज़ाइन तकनीकें, टेस्ट प्रबंधन और टूल।
- ISO/IEC/IEEE 29119-1:2022 — Software and systems engineering — Software testing — Part 1: General conceptsसॉफ़्टवेयर टेस्टिंग का अंतरराष्ट्रीय मानक: अवधारणाएँ, प्रक्रियाएँ, दस्तावेज़ीकरण और तकनीकें।
- ISTQB Glossaryटेस्टिंग शब्दों की मानक परिभाषाएँ — टेस्ट केस, रिग्रेशन टेस्टिंग, सेवेरिटी, प्रायोरिटी, बाउंड्री वैल्यू एनालिसिस आदि।
अभ्यास
अपने ही accounts के बीच transfer के टेस्ट केस लिखें
आप एक काल्पनिक retail bank के mobile app को टेस्ट करते हैं। User story PAY-31 test design के लिए तैयार है, और आपके एक साथी ने उसके लिए एक टेस्ट केस का draft पहले ही लिख दिया है। नीचे story, transfers कैसे काम करते हैं इस पर एक नोट, और draft दिए गए हैं।
पहले draft को गाइड के उन फ़ील्ड से मिलाएँ जो हर टेस्ट केस के लिए ज़रूरी हैं, और गाइड की आम गलतियों से भी। फिर उसकी जगह ऐसे टेस्ट केस लिखें जिन्हें कोई दूसरा टेस्टर आपसे कुछ पूछे बिना चला सके: गाइड के टेम्पलेट से दो केस पूरे लिखें, और बाकी सेट को ऐसी सूची के रूप में निकालें जिसमें हर केस की एक लाइन हो। जहाँ story से अपेक्षित परिणाम पता न चले, वहाँ अंदाज़ा न लगाएँ: उसे product owner के लिए सवाल के रूप में लिखें।
काग़ज़ और पेन काफ़ी हैं; लगभग 30 मिनट रखें। बाद में आप amount की values बाउंड्री वैल्यू एनालिसिस टूल से जाँच सकते हैं, जो decimal values संभालता है; अतिरिक्त नेगेटिव केस के लिए amount formats डेसिमल डेटासेट जनरेटर से ले सकते हैं; और AC1 से AC3 को, हर लाइन में एक, Requirements → टेस्ट केस टूल में पेस्ट करके उसकी traceability matrix की तुलना अपनी matrix से कर सकते हैं।
काल्पनिक retail bank, mobile app। सभी accounts SAR में हैं।
Transfers को core banking system post करता है, जिसे app तब call करता है जब customer
"Confirm" टैप करता है।
"Transfers" के अंदर "Between my accounts" screen में "From", "To" और "Amount" fields
और "Confirm" button हैं।
Customer वे accounts भी देखता है जो किसी दूसरे customer ने उसके साथ view-only access
से share किए हैं; वे accounts उसके अपने नहीं हैं।
PAY-31 अपने accounts के बीच पैसे transfer करना
एक से ज़्यादा accounts वाले customer के रूप में
मैं अपने ही accounts के बीच पैसे भेजना चाहता हूँ
ताकि मैं अपने चुने हुए account से भुगतान कर सकूँ।
AC1 अगर मैं signed in हूँ और मेरे कम से कम दो active accounts हैं, तो जब मैं एक
source account, एक अलग destination account और एक amount चुनकर "Confirm" टैप
करता हूँ, तब amount source से debit होकर तुरंत destination में credit होता है,
और reference number के साथ confirmation दिखता है।
AC2 Amount 1.00 से 20,000.00 SAR तक होना चाहिए, दोनों सीमाएँ शामिल, और अधिकतम
दो decimal places के साथ। वरना "Confirm" disabled रहता है और field के नीचे
message "Enter an amount from 1.00 to 20,000.00 SAR" दिखता है।
AC3 Transfer से source account का balance शून्य से नीचे नहीं जाना चाहिए। जब मैं
source account के available balance से बड़ा amount confirm करता हूँ, तो message
"Insufficient balance" दिखता है और कोई पैसा नहीं जाता।
एक साथी का लिखा draft टेस्ट केस
Title: Transfer test
Steps: 1. Ahmed Al-Harbi के रूप में log in करें (उसके accounts production से
copy किए गए हैं)।
2. पहले TC-DEP-03 चलाएँ ताकि उसके savings account में पैसे हों।
3. Savings से current में कुछ पैसे transfer करें, फिर एक बड़ा amount
और balance से बड़ा amount आज़माएँ।
Expected: Transfer सही काम करता है और error दिखता है।- Draft को फ़ील्ड-दर-फ़ील्ड रिव्यू करें — ID, टाइटल, प्रीकंडीशन, टेस्ट डेटा, स्टेप, अपेक्षित परिणाम, प्राथमिकता और टाइप, ट्रेसेबिलिटी — और लिखें कि क्या गायब या कमज़ोर है। गाइड की जो आम गलतियाँ इसमें हैं, हर एक का नाम लिखें।
- गिनें कि draft कितने व्यवहार टेस्ट करता है, और उसे ऐसे बाँटें कि हर केस एक ही व्यवहार जाँचे।
- गाइड के टेम्पलेट से दो केस पूरे लिखें: valid transfer (AC1), और available balance से 0.01 SAR ज़्यादा का transfer (AC3)। सटीक, सिंथेटिक टेस्ट डेटा और ऐसे अपेक्षित परिणाम इस्तेमाल करें जिन्हें हर कोई एक ही तरह pass या fail ठहराए।
- User story से टेस्ट केस तक के गाइड वाले तरीके से बाकी सेट निकालें: हर acceptance criterion के लिए एक पॉज़िटिव केस, हर "होना चाहिए" और "नहीं होना चाहिए" (must / must not) के लिए एक नेगेटिव केस, हर संख्या की बाउंड्री, हर तरह के यूज़र या account के लिए एक केस, और core banking system के फ़ेल होने के लिए एक केस। हर केस की एक लाइन लिखें: ID, टाइप, criterion, टेस्ट डेटा और अपेक्षित परिणाम।
- जाँचें कि हर acceptance criterion कम से कम एक केस से कवर हो, और product owner के लिए अपने सवाल लिखें।
मॉडल उत्तर दिखाएँ
Draft का रिव्यू (स्टेप 1)। आपके शब्द अलग हो सकते हैं; इनमें से सात या ज़्यादा findings पूरा जवाब है। (1) कोई ID नहीं, इसलिए बग रिपोर्ट और test reports इस केस को रेफ़र नहीं कर सकतीं। (2) टाइटल "Transfer test" फ़ीचर का नाम लेता है, व्यवहार का नहीं। (3) कोई प्रीकंडीशन नहीं: शुरुआती balances लिखे नहीं हैं, इसलिए कोई नहीं बता सकता कि बाद में कौन-से balances अपेक्षित हैं। (4) स्टेप 2 केस को TC-DEP-03 के पहले चलने पर निर्भर बनाता है, इसलिए सूट किसी भी क्रम में नहीं चल सकता; केस को जो balance चाहिए, वह उसकी प्रीकंडीशन में होना चाहिए। (5) Customer और उसके accounts production से copy किए गए हैं: असली कस्टमर डेटा की टेस्ट केस में कोई जगह नहीं, banking में तो बिल्कुल नहीं; एक सिंथेटिक test customer इस्तेमाल करें। (6) टेस्ट डेटा धुँधला है: "कुछ पैसे" और "बड़ा amount" values नहीं हैं, इसलिए दो टेस्टर दो अलग टेस्ट चलाएँगे। (7) स्टेप 3 में कई एक्शन और तीन व्यवहार हैं — valid transfer, 20,000.00 SAR की limit और balance check — इसलिए फ़ेल होने पर कोई नहीं जानता कौन-सा हिस्सा टूटा। (8) "Transfer सही काम करता है और error दिखता है" को pass या fail नहीं ठहराया जा सकता: कौन-से balances, कौन-सा message, और क्या reference number दिखता है? (9) कोई प्राथमिकता, कोई टाइप और PAY-31 व उसके criteria तक कोई ट्रेसेबिलिटी नहीं। इनमें से चार गाइड में बताई गई आम गलतियाँ हैं: एक केस में कई चीज़ें टेस्ट करना (7), धुँधला अपेक्षित परिणाम (8), किसी दूसरे केस पर निर्भर स्टेप (4) और असली कस्टमर डेटा (5)।
बँटवारा (स्टेप 2): draft तीन व्यवहार टेस्ट करता है, इसलिए वह तीन केस बनता है — valid transfer (TC-PAY31-01), limit से ऊपर का amount (TC-PAY31-05) और balance से ऊपर का amount (TC-PAY31-09)। हर नेगेटिव केस सिर्फ़ एक नियम तोड़ता है: limit वाले केस savings account से transfer करते हैं, जिसका balance 20,000.00 SAR से ऊपर है, और balance वाले केस limit के अंदर के amounts इस्तेमाल करते हैं, ताकि फ़ेल होने पर एक ही नियम की ओर इशारा हो। सभी केस एक ही सिंथेटिक डेटा सेट से शुरू होते हैं, जिसे हर रन से पहले restore किया जाता है: test customer CUST-T-031, savings account SAV-2002 में 25,000.00 SAR और current account CUR-1001 में 5,000.00 SAR, दोनों active, कोई pending transaction नहीं; TC-PAY31-11 और TC-PAY31-12 अपने बताए shared account और दूसरे test customer को जोड़ते हैं।
TC-PAY31-01 पूरा (स्टेप 3)। टाइटल: अपने accounts के बीच transfer amount भेजता है और reference number दिखाता है। प्राथमिकता: High। टाइप: Positive, smoke के लिए भी उम्मीदवार। Requirement: PAY-31 AC1। प्रीकंडीशन: CUST-T-031 signed in है; SAV-2002 का available balance 25,000.00 SAR और CUR-1001 का 5,000.00 SAR है। टेस्ट डेटा: source SAV-2002, destination CUR-1001, amount 250.00। स्टेप: 1. "Transfers" खोलें। 2. "Between my accounts" चुनें। 3. "From" में SAV-2002 चुनें। 4. "To" में CUR-1001 चुनें। 5. "Amount" में 250.00 डालें। 6. "Confirm" टैप करें। अपेक्षित परिणाम: reference number के साथ confirmation दिखता है; SAV-2002 में 24,750.00 SAR और CUR-1001 में 5,250.00 SAR दिखता है। पोस्टकंडीशन: दोनों balances बदल गए हैं; अगले रन से पहले डेटा सेट restore करें।
TC-PAY31-09 पूरा। टाइटल: Available balance से 0.01 SAR ज़्यादा का transfer "Insufficient balance" के साथ रिजेक्ट होता है। प्राथमिकता: High। टाइप: Negative, boundary। Requirement: PAY-31 AC3। प्रीकंडीशन: CUST-T-031 signed in है; CUR-1001 का available balance 5,000.00 SAR और SAV-2002 का 25,000.00 SAR है। टेस्ट डेटा: source CUR-1001, destination SAV-2002, amount 5000.01 — balance से 0.01 ज़्यादा, और AC2 की limit के अंदर, इसलिए सिर्फ़ AC3 टूटता है। स्टेप: 1. "Transfers" खोलें। 2. "Between my accounts" चुनें। 3. "From" में CUR-1001 चुनें। 4. "To" में SAV-2002 चुनें। 5. "Amount" में 5000.01 डालें। 6. "Confirm" टैप करें। अपेक्षित परिणाम: message "Insufficient balance" दिखता है; न confirmation दिखता है, न reference number; CUR-1001 में अब भी 5,000.00 SAR और SAV-2002 में 25,000.00 SAR दिखता है। पोस्टकंडीशन: कुछ नहीं, balances नहीं बदले।
बाकी सेट (स्टेप 4), हर केस की एक लाइन; ऊपर के दो केस मिलाकर कुल 14 केस। TC-PAY31-02 [Boundary · AC2] SAV-2002 से amount 1.00, निचला किनारा: स्वीकार; SAV-2002 में 24,999.00 और CUR-1001 में 5,001.00। TC-PAY31-03 [Boundary · AC2] Amount 0.99: "Confirm" disabled रहता है, field के नीचे message "Enter an amount from 1.00 to 20,000.00 SAR" दिखता है, और कोई balance नहीं बदलता। TC-PAY31-04 [Boundary · AC2] SAV-2002 से amount 20000.00, ऊपरी किनारा: स्वीकार; SAV-2002 में 5,000.00 और CUR-1001 में 25,000.00। TC-PAY31-05 [Boundary · AC2] SAV-2002 से amount 20000.01: "Confirm" disabled रहता है और वही message दिखता है; 25,000.00 का balance पक्का करता है कि सिर्फ़ limit टूटे। TC-PAY31-06 [Negative · AC2] तीन decimal places वाला amount 10.005: स्वीकार नहीं; message दिखता है या तीसरा decimal टाइप ही नहीं होता, यह Q1 है। TC-PAY31-07 [Negative · AC2] "Amount" खाली छोड़ा गया: "Confirm" disabled रहता है (message भी दिखता है या नहीं, यह Q1 का हिस्सा है)।
TC-PAY31-08 [Boundary · AC3] Available balance के बराबर amount, CUR-1001 से 5000.00: स्वीकार, क्योंकि AC3 शून्य से नीचे जाना मना करता है, शून्य तक पहुँचना नहीं; CUR-1001 में 0.00 और SAV-2002 में 30,000.00। TC-PAY31-10 [Negative · AC1] "From" में SAV-2002 चुनने के बाद उसे "To" में नहीं चुना जा सकता; यह कैसे दिखता है, यह Q3 है। TC-PAY31-11 [Negative · रोल] किसी दूसरे customer ने CUST-T-031 के साथ view-only access से जो account share किया है (VIEW-3003), वह "From" में नहीं दिखता; "To" में दिखता है या नहीं, यह Q4 है। TC-PAY31-12 [Negative · AC1 की प्रीकंडीशन] Test customer CUST-T-032 के पास एक active और एक closed account है: closed account नहीं दिखता और कोई transfer नहीं हो सकता; customer को क्या दिखता है, यह Q5 है। TC-PAY31-13 [Negative · डिपेंडेंसी] "Confirm" के बाद core banking system जवाब नहीं देता (test environment में simulate किया गया, जैसे stub से): confirmation नहीं दिखता, और आधा-अधूरा transfer नहीं होता — या तो दोनों balances एक बार बदलते हैं या कोई नहीं बदलता; message और retry का व्यवहार Q6 है। TC-PAY31-14 [Negative · AC1, एक साथ किए एक्शन] SAV-2002 से CUR-1001 में 250.00 के साथ "Confirm" जल्दी-जल्दी दो बार टैप करना: सिर्फ़ एक transfer और एक reference number; SAV-2002 में 24,750.00 दिखता है, 24,500.00 नहीं, और CUR-1001 में 5,250.00। अगर आप गाइड का छह values वाला boundary पैटर्न (हर किनारे पर तीन values) अपनाते हैं, तो SAV-2002 से 1.01 और 19999.99, और balance वाले किनारे पर CUR-1001 से 4999.99 भी जोड़ें; तीनों स्वीकार।
कवरेज (स्टेप 5): AC1 को TC-PAY31-01, 10, 12, 13 और 14 कवर करते हैं; AC2 को 02 से 07; AC3 को 08 और 09; view-only रोल को 11। हर criterion का कम से कम एक पॉज़िटिव और एक नेगेटिव केस है। तीन criteria वाली story के लिए गाइड लगभग आठ से पंद्रह केस बताती है; पर सेट को पूरा उसकी गिनती नहीं बनाती, बल्कि यह कि हर criterion, हर बाउंड्री, हर तरह का यूज़र और डिपेंडेंसी का फ़ेल होना कवर हो।
Product owner के लिए सवाल: Q1 क्या तीसरा decimal टाइप करते समय ही रोका जाता है, या टाइप होने के बाद AC2 का message दिखता है? क्या वह message तब भी दिखता है जब "Amount" अभी खाली है? क्या thousands separator (1,000.00) या Arabic-Indic digits वाले amounts स्वीकार होते हैं? Q2 क्या AC3 का "available balance" pending card payments और holds घटाकर गिना जाता है? Q3 क्या source account "To" की सूची से हट जाता है, या कोई message दिखता है? Q4 क्या view-only shared account में पैसे भेजे जा सकते हैं, या वह दोनों सूचियों से छिपा रहता है? Q5 जिस customer के दो से कम active accounts हैं, उसे "Between my accounts" में क्या दिखता है? Q6 जब core banking system जवाब न दे, तो कौन-सा message दिखता है, क्या customer retry कर सकता है, और क्या चीज़ retry को पैसे दो बार भेजने से रोकती है? Q7 क्या हर transfer की 20,000.00 SAR limit ही अकेली limit है, या कोई daily total भी है?
अपना काम जाँचें: हर पूरे केस का टाइटल एक व्यवहार का नाम ले, और आपकी सूची की हर लाइन एक ही व्यवहार जाँचे; हर केस किसी दूसरे केस से नहीं, बल्कि लिखी हुई प्रीकंडीशन से शुरू हो, सटीक सिंथेटिक values इस्तेमाल करे, और उसका अपेक्षित परिणाम ऐसा हो जिसे दो टेस्टर एक ही तरह जाँचें। ISTQB की भाषा में PAY-31 और उसके criteria test basis हैं, आपकी सूची की हर लाइन एक test condition कवर करती है, और हर पूरे केस में वे preconditions, inputs, expected results और postconditions हैं जो ISTQB glossary test case की परिभाषा में गिनाती है। अगर आपके सेट में TC-PAY31-08 (balance के बराबर amount), TC-PAY31-13 (डिपेंडेंसी का फ़ेल होना) या TC-PAY31-14 (डबल टैप) नहीं थे, तो उन्हें जोड़ें: पहला वह किनारा है जिसकी AC3 इजाज़त देता है, दूसरा डिपेंडेंसी का फ़ेल होना है, जिसे गाइड का user story वाला तरीका माँगता है, और तीसरा गाइड की नेगेटिव टेस्टिंग सूची के "एक साथ किए एक्शन" में से एक है।
इस topic में आपकी प्रगति
प्रगति ट्रैक करने के लिए साइन इन करें
Topics पूर्ण चिह्नित करें, जहाँ छोड़ा था वहीं से जारी रखें और specialisation परीक्षाएँ खोलें।
QA रोडमैप का हिस्सा
इस topic से पहले
इस गाइड में बताए गए टूल्स
फ़ीचर के विवरण और फ़ील्ड सूची से संरचित टेस्ट केस (id, शीर्षक, पूर्व-शर्तें, स्टेप, अपेक्षित परिणाम, प्राथमिकता) जनरेट करें।
किसी फ़ीचर के लिए functional, negative, security, usability और compatibility पहलुओं को कवर करने वाले उच्च-स्तरीय टेस्ट सिनेरियो जनरेट करें।
किसी user story (As a / I want / So that) को टेम्पलेट और heuristics की मदद से संरचित टेस्ट केस में बदलें।
फ़ॉर्म फ़ील्ड और API के लिए negative टेस्ट केस बनाएँ: खाली, null, ग़लत टाइप, बहुत लंबा, injection, अमान्य फ़ॉर्मेट।
संख्यात्मक और लंबाई की constraints के लिए boundary value (min-1, min, min+1, nominal, max-1, max, max+1) जनरेट करें।
हर इनपुट के लिए वैध और अमान्य equivalence class निकालें और हर क्लास से एक प्रतिनिधि टेस्ट वैल्यू चुनें।
conditions और actions से decision table बनाएँ, सभी rule संयोजन जनरेट करें और असंभव संयोजनों को समेट दें।
किसी user story से Given/When/Then acceptance criteria और definition-of-done चेकलिस्ट जनरेट करें।
Mutqan AI की मदद से किसी user story को पेशेवर, संरचित टेस्ट केस (ID, शीर्षक, प्रकार, प्राथमिकता, पूर्व-शर्तें, डेटा, स्टेप, अपेक्षित परिणाम) में बदलें।
सिंथेटिक टेस्ट डेटा की एक ही जगह पर फ़ैक्टरी: users, customers, companies, पते, संख्याएँ, तारीख़ें और स्ट्रिंग — JSON, CSV, SQL या XML में।