टेस्ट केस कैसे लिखें
टेस्ट केस एक सटीक, दोहराने योग्य निर्देश है: इन प्रीकंडीशन में, इस डेटा के साथ ये स्टेप करो, और यह नतीजा उम्मीद करो। अच्छे से लिखा हो तो कोई भी टेस्टर — या ऑटोमेशन स्क्रिप्ट — एक व्यवहार को हर बार एक ही तरह वेरिफ़ाई कर सकता है और डेवलपर को ठीक-ठीक पता चलता है कि फ़ेलियर कैसे रिप्रोड्यूस करना है। ख़राब लिखा हो तो यह एक धुँधला वाक्य है जो सोमवार को पास और मंगलवार को फ़ेल होता है, और वजह कोई नहीं बता पाता।
यह गाइड आपको अच्छे टेस्ट केस की बनावट, 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)टेस्ट सिनेरियो बनाम टेस्ट केस
टेस्ट सिनेरियो एक लाइन का कथन है कि क्या टेस्ट करना है — "वैध और अवैध क्रेडेंशियल से लॉगिन वेरिफ़ाई करें"। टेस्ट केस उस सिनेरियो के एक पाथ की विस्तृत स्क्रिप्ट है। एक सिनेरियो आमतौर पर कई केस में फैलता है: वैध लॉगिन, गलत पासवर्ड, अनजान ईमेल, लॉक्ड अकाउंट, खाली फ़ील्ड। स्कोप तय करने के लिए सिनेरियो से शुरू करें, फिर अहम पाथ के लिए केस लिखें।
असली बग पकड़ने वाली डिज़ाइन तकनीकें
- इक्विवैलेंस पार्टीशनिंग — जिन इनपुट को सिस्टम एक जैसा ट्रीट करे (उम्र 18–65) उन्हें ग्रुप करें और हर वैल्यू की जगह हर ग्रुप से एक वैल्यू टेस्ट करें।
- बाउंड्री वैल्यू एनालिसिस — ज़्यादातर डिफ़ेक्ट किनारों पर रहते हैं। 1–100 स्वीकार करने वाले फ़ील्ड के लिए 0, 1, 2, 99, 100 और 101 टेस्ट करें।
- डिसीज़न टेबल — जब कई कंडीशन मिलती हैं (मेंबर? कूपन? ₹500 से ज़्यादा?), हर कॉम्बिनेशन की टेबल गारंटी देती है कि कोई नियम न छूटे।
- स्टेट ट्रांज़िशन टेस्टिंग — लाइफ़साइकल वाली किसी भी चीज़ के लिए (ऑर्डर: created → paid → shipped → refunded) हर अनुमत ट्रांज़िशन और मना किए हुए ट्रांज़िशन टेस्ट करें।
- नेगेटिव टेस्टिंग — गलत टाइप, गायब फ़ील्ड, स्पेशल कैरेक्टर, बहुत लंबा इनपुट, एक साथ किए एक्शन, एक्सपायर्ड सेशन।
- पेयरवाइज़ टेस्टिंग — जब पैरामीटर कॉम्बिनेशन बहुत ज़्यादा हों, बहुत कम केस से वैल्यू के हर जोड़े को कवर करें।
आज़माएँ: बाउंड्री वैल्यू जनरेटर आज़माएँ: इक्विवैलेंस पार्टीशन जनरेटर आज़माएँ: डिसीज़न टेबल जनरेटर आज़माएँ: नेगेटिव टेस्ट जनरेटर
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 टेस्टिंग गाइड देखें।
इस गाइड में बताए गए टूल्स
फ़ीचर के विवरण और फ़ील्ड सूची से संरचित टेस्ट केस (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 में।