एक्सप्लोरेटरी टेस्टिंग
एक्सप्लोरेटरी टेस्टिंग (exploratory testing) वह तरीका है जिसमें टेस्टर एक ही समय पर प्रोडक्ट को सीखता है, टेस्ट डिज़ाइन करता है और उन्हें चलाता है, और हर टेस्ट से जो पता चलता है उसी से अगला टेस्ट चुनता है। यह बेतरतीब क्लिक करना नहीं है, और न ही "बिना प्लान की टेस्टिंग": अच्छे exploratory session का एक मिशन होता है, एक समय-सीमा होती है, टेस्ट आइडिया बनाने के सोचे-समझे तरीके होते हैं, और इस बात का रिकॉर्ड होता है कि क्या कवर हुआ और क्या मिला।
यह गाइड इस प्रैक्टिस का प्रवेश-द्वार है। यह exploratory testing को परिभाषित करती है, स्क्रिप्टेड टेस्टिंग से इसकी निष्पक्ष तुलना करती है, और इसके औज़ार समझाती है — heuristics, oracles और tours — साथ में login/OTP का पूरा उदाहरण, नोट्स से बग रिपोर्ट और regression case तक का वर्कफ़्लो, और यह कि exploratory काम और ऑटोमेशन एक-दूसरे को कैसे मज़बूत करते हैं। charter वाले, समय-सीमित session, session sheet और debrief से exploration को मैनेज करने पर अलग पेज है: session-based test management।
एक्सप्लोरेटरी टेस्टिंग क्या है — और क्या नहीं
यह शब्द Cem Kaner से जुड़ा है, और ज़्यादातर प्रैक्टिशनर जो छोटी परिभाषा उद्धृत करते हैं वह James Bach की है: एक साथ सीखना, टेस्ट डिज़ाइन करना और टेस्ट चलाना। स्क्रिप्टेड टेस्टिंग में ये तीनों अलग-अलग समय पर और अक्सर अलग-अलग लोगों द्वारा होते हैं — कोई requirement का विश्लेषण करता है, कोई स्टेप लिखता है, और कोई और बाद में उन्हें फ़ॉलो करता है। exploratory testing में ये तीनों एक ही दिमाग़ में, कुछ मिनटों के लूप में होते हैं: आप कुछ आज़माते हैं, नतीजा देखते हैं, नया सवाल बनाते हैं और उसके जवाब से अगला टेस्ट डिज़ाइन करते हैं।
स्क्रिप्टेड टेस्टिंग
- 1कोई requirement का विश्लेषण करता है
- 2कोई स्टेप लिखता है
- 3कोई और बाद में उन्हें फ़ॉलो करता है
- कब:
- अलग-अलग समय पर
- कौन:
- अक्सर अलग-अलग लोग
एक्सप्लोरेटरी टेस्टिंग
charter से गाइडेड · साथ-साथ रिकॉर्ड
- 1कुछ आज़माएँ
- 2नतीजा देखें
- 3नया सवाल बनाएँ
- 4जवाब से अगला टेस्ट डिज़ाइन करें
दोहराता है: चरण 1 पर वापस
- कब:
- एक साथ, कुछ मिनटों के लूप में
- कौन:
- एक ही दिमाग़
ISTQB Foundation Level सिलेबस (CTFL v4.0) exploratory testing को experience-based test techniques में गिनता है, error guessing और checklist-based testing के साथ, और बताता है कि इसे कभी-कभी session-based testing के रूप में संरचित किया जाता है: एक समय-सीमित session जिसे test charter गाइड करता है, जिसमें टेस्ट के उद्देश्य लिखे होते हैं। यही संरचना exploratory testing को ad hoc testing से अलग करती है। दोनों में स्क्रिप्ट नहीं होती; पर जवाबदेही सिर्फ़ एक में होती है।
- यह गाइडेड है — charter (session का मिशन), फ़ीचर के रिस्क और टेस्ट आइडिया देने वाले heuristics से।
- यह रिकॉर्ड होता है — एक्शन, डेटा, ऑब्ज़र्वेशन, सवाल और बग साथ-साथ नोट होते हैं, ताकि session की रिपोर्ट और समीक्षा हो सके।
- यह कौशल पर टिका है — इसकी वैल्यू टेस्टर के प्रोडक्ट ज्ञान, तकनीक और विवेक पर निर्भर है; यही निर्भरता इसकी ताक़त भी है और मुख्य जोखिम भी।
- इसमें भी test design होता है — अच्छा explorer boundary, partition और state model वैसे ही लगाता है जैसे test case लिखने वाला, बस पहले से नहीं बल्कि रियल टाइम में।
एक्सप्लोरेटरी बनाम स्क्रिप्टेड टेस्टिंग: निष्पक्ष तुलना
स्क्रिप्टेड और exploratory testing विरोधी खेमे नहीं हैं; ये अलग-अलग सवालों के जवाब देते हैं। स्क्रिप्टेड टेस्ट किसी ज्ञात अपेक्षा को हर बार एक ही तरह जाँचता है, इसलिए वह दोहराने योग्य, समीक्षा योग्य, दूसरों को सौंपने में आसान और ऑटोमेट करने में आसान होता है। exploratory session वह खोजता है जिसकी किसी ने कल्पना नहीं की थी — ग़लत समझी गई requirement, दो फ़ीचर्स के बीच अजीब इंटरैक्शन, या ऐसा एरर मैसेज जो अंदरूनी कोड दिखा दे — जो स्क्रिप्ट नहीं ढूँढ सकती, क्योंकि स्क्रिप्ट सिर्फ़ वही कवर करती है जो उसके लेखक ने सोचा था।
व्यवहार में ज़्यादातर टेस्टिंग एक स्पेक्ट्रम पर होती है। अस्पष्ट स्टेप वाला test case ("जाँचें कि रिपोर्ट सही दिखती है") पहले से exploration की जगह छोड़ता है; और "आंशिक रूप से शिप हुए ऑर्डर के रिफ़ंड को explore करें" कहने वाला charter पहले से उसे सीमित करता है। उपयोगी सवाल यह नहीं कि कौन-सा तरीका बेहतर है, बल्कि यह कि किसी फ़ीचर, रिस्क लेवल और टीम को हर एक की कितनी ज़रूरत है।
- दोहराव — स्क्रिप्टेड: ऊँचा, हर रन में वही स्टेप और डेटा। Exploratory: जानबूझकर कम; हर session अलग होता है, इसीलिए यह नई समस्याएँ ढूँढता रहता है।
- नए डिफ़ेक्ट ढूँढना — स्क्रिप्टेड: जो पहले से सोचा गया उसी तक सीमित। Exploratory: मज़बूत, ख़ासकर नए या कम स्पेसिफ़ाई किए गए फ़ीचर्स में।
- ऑडिट और traceability के सबूत — स्क्रिप्टेड: मज़बूत, हर केस किसी requirement से जुड़ा। Exploratory: तभी पर्याप्त जब charter, नोट्स और debrief रखे जाएँ।
- टेस्टर पर निर्भरता — स्क्रिप्टेड: execution के समय कम, क्योंकि कौशल डिज़ाइन में लग चुका। Exploratory: पूरे समय ऊँची।
- बदलाव की लागत — स्क्रिप्टेड: हर requirement बदलने पर केस एडिट करने पड़ते हैं। Exploratory: अगले session में charter बदल जाता है।
- ऑटोमेशन — स्पष्ट expected result वाले स्क्रिप्टेड चेक ऑटोमेशन के स्वाभाविक उम्मीदवार हैं; exploration ख़ुद ऑटोमेट नहीं हो सकता, पर वही ऑटोमेट करने लायक चेक पैदा करता है।
एक्सप्लोरेटरी टेस्टिंग कब सबसे ज़्यादा फ़ायदा देती है
exploratory testing वहाँ इस्तेमाल करें जहाँ अनिश्चितता ज़्यादा हो और स्क्रिप्टेड कवरेज पतली, देर से आने वाली या असली रिस्क से अनजान हो। स्क्रिप्टेड टेस्टिंग वहाँ बेहतर है जहाँ वही चेक हूबहू दोहराना हो, जहाँ कोई रेगुलेटर या ग्राहक हर requirement के लिए traceable सबूत माँगे, या जहाँ टेस्टर डोमेन में नए हों और उन्हें लिखित मार्गदर्शन चाहिए।
- नए फ़ीचर — test case बनने से पहले या जब डिज़ाइन अभी बदल रहा हो, exploration आपको फ़ीचर सिखाता है और पहले केस देता है।
- अस्पष्ट या अधूरी requirements — एक छोटा session प्रोडक्ट ओनर के लिए सवाल डॉक्यूमेंट दोबारा पढ़ने से तेज़ निकालता है।
- हाई-रिस्क हिस्से — पेमेंट, ऑथेंटिकेशन, परमिशन, डेटा माइग्रेशन — स्क्रिप्टेड और ऑटोमेटेड चेक के पूरक के रूप में, उनकी जगह कभी नहीं।
- बग फ़िक्स के बाद — फ़िक्स के आसपास explore करें: पड़ोसी रास्तों पर वही डिफ़ेक्ट, और बदलाव के साइड-इफ़ेक्ट।
- इंटीग्रेशन पॉइंट और एरर हैंडलिंग — टाइमआउट, retry, आंशिक विफलताएँ और थर्ड-पार्टी रिस्पॉन्स, जिन्हें स्पेसिफ़िकेशन शायद ही बताते हैं।
Heuristics: explorer टेस्ट आइडिया कैसे बनाते हैं
Heuristic एक ग़लत भी हो सकने वाला अंगूठा-नियम है — टेस्टिंग में, एक संकेत जो सुझाता है कि आगे क्या आज़माएँ। Heuristics बग की गारंटी नहीं देते; वे आपको आइडिया ख़त्म होने से और सिर्फ़ वही रास्ता टेस्ट करने से बचाते हैं जो आप जानते हैं कि चलता है। Elisabeth Hendrickson की किताब Explore It! काफ़ी हद तक ऐसे बदलावों के इर्द-गिर्द बनी है। नीचे के समूह हमारे अपने शब्दों में हैं और शुरुआती बिंदु हैं, पूरी सूची नहीं।
- इनपुट बदलें — ख़ाली, बहुत लंबा, boundary value, ग़लत टाइप, आगे-पीछे स्पेस, स्पेशल कैरेक्टर, अरबी और मिश्रित-दिशा टेक्स्ट, इमोजी, पेस्ट किया कंटेंट, और दूसरे फ़ॉर्मेट की वैल्यू (तारीख़, फ़ोन नंबर, कॉमा वाले दशमलव)।
- स्टेट बदलें — वही एक्शन नए यूज़र के रूप में, ऐसे यूज़र के रूप में जिसका सेशन ख़त्म हो गया, लॉक्ड अकाउंट, पहले से पेड ऑर्डर, दूसरे टैब में बदली गई कार्ट।
- क्रम बदलें — स्टेप उल्टे क्रम में करें, दोहराएँ, एक छोड़ दें, आगे-पीछे जाएँ, दो बार सबमिट करें, सेव के बाद कैंसल करें।
- रुकावट डालें — रिक्वेस्ट के बीच नेटवर्क काटें, टैब बंद करें, ऐप को बैकग्राउंड में भेजें, सेशन टाइमआउट होने दें, डिवाइस घुमाएँ, पेमेंट के दौरान कॉल रिसीव करें।
- डेटा का जीवन-चक्र बदलें — एक ही रिकॉर्ड को अलग-अलग जगहों से create, read, update, delete करें; ऐसी चीज़ डिलीट करें जिसका दूसरे रिकॉर्ड हवाला देते हैं; ऐसा रिकॉर्ड एडिट करें जिसे कोई और देख रहा है।
- कॉन्फ़िगरेशन बदलें — ब्राउज़र, डिवाइस, भाषा, locale और टाइम ज़ोन, स्क्रीन साइज़ और ज़ूम, दी या नकारी गई परमिशन, feature flag चालू और बंद।
- समय और मात्रा बदलें — बहुत तेज़ी से और बहुत धीरे काम करें, आधी रात या महीने के अंत के पास, एक आइटम और हज़ारों आइटम के साथ।
- डेटा का पीछा करें — एक वैल्यू डालें और देखें वह कहाँ-कहाँ दिखती है: कन्फ़र्मेशन पेज, ईमेल, PDF, एडमिन स्क्रीन, एक्सपोर्ट फ़ाइल, API रिस्पॉन्स।
- कोई persona अपनाएँ — जल्दबाज़ यूज़र, पहली बार आए यूज़र, एडमिन, screen reader यूज़र या हमलावर बनकर explore करें।
आज़माएँ: स्पेशल कैरेक्टर डेटासेट जनरेटर आज़माएँ: Unicode डेटासेट जनरेटर आज़माएँ: बाउंड्री वैल्यू जनरेटर आज़माएँ: स्टेट ट्रांज़िशन जनरेटर
Oracles: समस्या को कैसे पहचानें
Oracle वह ज़रिया है जिससे आप समस्या पहचानते हैं; ISTQB glossary test oracle को ऐसे स्रोत के रूप में परिभाषित करता है जिससे expected result तय हो और उसे actual result से मिलाया जा सके। स्क्रिप्टेड टेस्ट का oracle उसके expected result कॉलम में होता है। explorer के पास ज़्यादातर चीज़ों का लिखा हुआ expected result नहीं होता, इसलिए वह एकरूपता (consistency) से तर्क करता है: जो व्यवहार किसी ऐसी चीज़ से मेल नहीं खाता जिससे प्रोडक्ट को मेल खाना चाहिए, वह संभावित समस्या है।
Oracles भी heuristic होते हैं। असंगति जाँच का कारण है, बग का सबूत नहीं — कुछ अंतर जानबूझकर होते हैं। टेस्टर का काम है ध्यान देना, सबूत जुटाना और समझाना कि यह क्यों मायने रख सकता है; डिफ़ेक्ट है या नहीं, यह प्रोडक्ट ओनर तय करता है।
- प्रोडक्ट के भीतर एकरूपता — एक ही चीज़ दो स्क्रीन पर अलग नाम से या अलग तरह से गिनी गई; कार्ट का टोटल इनवॉइस के टोटल से अलग।
- उसके इतिहास से एकरूपता — पिछले रिलीज़ में यह अलग व्यवहार करता था और किसी ने बदलाव की घोषणा नहीं की।
- दावों से एकरूपता — requirement, हेल्प टेक्स्ट, API डॉक्यूमेंटेशन, रिलीज़ नोट्स, या refinement में जो तय हुआ।
- मिलते-जुलते प्रोडक्ट से एकरूपता — मिलते-जुलते प्रोडक्ट या स्थापित प्लेटफ़ॉर्म परंपराएँ बिना बताए कारण के अलग व्यवहार करती हैं।
- उद्देश्य और यूज़र की अपेक्षा से एकरूपता — फ़ीचर तकनीकी रूप से चलता है पर यूज़र को वह करने नहीं देता जिसके लिए वह बना है।
- मानकों और नियमों से एकरूपता — accessibility दिशानिर्देश, डेटा-संरक्षण नियम, तारीख़, संख्या और मुद्रा की स्थानीय परंपराएँ।
- संगठन की छवि से एकरूपता — यूज़र को दोष देने वाले या रूखे एरर मैसेज, टूटा हुआ अरबी टेक्स्ट, ग्राहक को दिखता अंदरूनी एरर कोड।
- समझाने योग्यता — अगर आप किसी सहकर्मी को व्यवहार समझा नहीं पा रहे, तो यही अपने आप में सवाल पूछने लायक है।
Test tours: टूरिस्ट के नक़्शे से exploration
James Whittaker की किताब Exploratory Software Testing अपना तरीका टूरिस्ट और tours के रूपक पर बनाती है: प्रोडक्ट को एक शहर मानें जिसमें टूरिस्ट घूमता है, और एक थीम वाला tour चुनें जो तय करे कि आप कहाँ जाएँगे और क्या देखेंगे। Tour बिना स्टेप लिखे session को आकार देता है, और कई टेस्टरों में exploration बाँटना आसान करता है ताकि सब एक ही गलियों में न घूमें।
किताब tours का बड़ा सेट बताती है, जिसे प्रोडक्ट के "ज़िलों" में बाँटा गया है। नीचे के आइडिया हमारे शब्दों में हैं, जहाँ इस्तेमाल किए वहाँ किताब के नाम के साथ; ये उदाहरण हैं, पूरी या आधिकारिक सूची नहीं, और कई टीमें अपने डोमेन के लिए अपने tours बनाती हैं।
- Guidebook tour — यूज़र मैनुअल, हेल्प पेज या ऑनबोर्डिंग को हूबहू फ़ॉलो करें और जाँचें कि प्रोडक्ट वही करता है जो वे कहते हैं।
- Money tour — वे फ़ीचर चलाएँ जो प्रोडक्ट बेचते हैं या कमाई लाते हैं, जो डेमो में दिखाए जाते हैं।
- Landmark tour — मुख्य फ़ीचर चुनें और उन्हें अलग-अलग क्रम में देखें, उनके बीच की यात्रा जाँचते हुए।
- FedEx tour — डेटा का एक टुकड़ा (पता, ऑर्डर) लें और हर उस स्क्रीन, ईमेल, रिपोर्ट और इंटीग्रेशन तक उसका पीछा करें जो उसे छूता है।
- Back-alley tour — सबसे कम इस्तेमाल होने वाले फ़ीचर और सेटिंग देखें, जहाँ टेस्टिंग आमतौर पर सबसे पतली होती है।
- Saboteur tour — ऐप से वह छीन लें जो उसे चाहिए: नेटवर्क, स्टोरेज, परमिशन, या धीमे जवाब देने वाली dependency।
- Obsessive-compulsive tour — एक ही एक्शन बार-बार दोहराएँ: डबल सबमिशन, वही डायलॉग बार-बार खोलना, एक ही आइटम कई बार जोड़ना।
- Supermodel tour — सिर्फ़ सतह देखें: लेआउट, कटा हुआ टेक्स्ट, अलाइनमेंट, कंट्रास्ट, दाएँ-से-बाएँ मिररिंग, हर भाषा का टेक्स्ट।
उदाहरण: वन-टाइम पासवर्ड वाले लॉगिन को explore करना
उदाहरण के लिए, मान लें एक काल्पनिक बैंकिंग वेब ऐप लॉगिन में दूसरा स्टेप जोड़ता है: पासवर्ड के बाद यूज़र को SMS से छह अंकों का वन-टाइम पासवर्ड (OTP) मिलता है, जो कुछ मिनट वैध रहता है, सीमित प्रयासों और "Resend code" लिंक के साथ। acceptance criteria happy path, ग़लत कोड और एक्सपायर्ड कोड को कवर करते हैं। टेस्टर के पास आधा दिन है। एक लंबे, बिखरे session के बजाय वह "Explore <target> with <resources> to discover <information>" रूप में कुछ charter लिखता है और उन्हें रिस्क के क्रम में रखता है। नीचे के पाँच charter ये चीज़ें explore करते हैं: ग़लत, अधूरे, पेस्ट किए और बिगड़े OTP कोड, ताकि पता चले कि प्रयास कैसे गिने जाते हैं और अकाउंट कब लॉक होता है; धीमे नेटवर्क पर "Resend code" को तेज़ी से बार-बार दबाना, ताकि पता चले कि कौन-सा कोड वैध रहता है और rate limit लगती है या नहीं; idle session, ऐप के background में जाने और पेज reload के साथ OTP की expiry, ताकि countdown और सर्वर के बीच समय के गैप मिलें; एक साथ दो टैब और दो डिवाइस पर OTP स्टेप, ताकि session और state के टकराव मिलें; और अरबी व अंग्रेज़ी में OTP स्क्रीन और SMS टेक्स्ट, RTL, zoom और स्क्रीन रीडर के साथ, ताकि usability और localisation की समस्याएँ मिलें।
Charter 2 के दौरान टेस्टर sequence और interruption heuristics लगाता है: "Resend code" पाँच बार तेज़ी से दबाता है, फिर पहला मिला कोड डालता है। "प्रोडक्ट को अपने ही मैसेज से सहमत होना चाहिए" वाले oracle से वह देखता है कि स्क्रीन कहती है पुराने कोड अब वैध नहीं, जबकि पहला कोड स्वीकार हो जाता है। नोट बग रिपोर्ट बनता है; आइडिया regression चेक बनता है। नीचे के टाइटल दिखाते हैं कि ऐसे session किस तरह की खोजें देते हैं — ये उदाहरण हैं, किसी असली प्रोडक्ट के नतीजे नहीं।
- "Resend के बाद पहले भेजा गया OTP अब भी स्वीकार होता है, जो स्क्रीन के मैसेज के विपरीत है"
- "OTP पेज रीलोड करने पर failed-attempt काउंटर रीसेट हो जाता है, जिससे प्रयास-सीमा बायपास होती है"
- "SMS ऐप से पेस्ट किए कोड के अंत में स्पेस हो तो OTP फ़ील्ड उसे अस्वीकार करता है"
- "अरबी कीबोर्ड से टाइप किए अरबी-इंडिक अंक OTP फ़ील्ड में स्वीकार नहीं होते"
- "काउंटडाउन 00:00 दिखाता है पर कोड लगभग एक मिनट तक स्वीकार होता रहता है"
Charter 1 Explore OTP entry with wrong, partial, pasted and malformed codes
to discover how attempts are counted and when the account locks.
Charter 2 Explore "Resend code" with rapid repeated clicks and a slow network
to discover which code is valid and whether rate limits apply.
Charter 3 Explore OTP expiry with an idle session, backgrounding and page reloads
to discover timing gaps between the countdown and the server.
Charter 4 Explore the OTP step in two tabs and on two devices at once
to discover session and state conflicts.
Charter 5 Explore OTP screens and SMS text in Arabic and English, RTL, zoom
and a screen reader to discover usability and localisation problems.आज़माएँ: AI एज केस जनरेटर आज़माएँ: AI नेगेटिव सिनेरियो जनरेटर
नोट्स से बग रिपोर्ट और regression case तक
नोट्स ही exploration को समीक्षा योग्य बनाते हैं। इन्हें टेस्ट करते समय लिखें, बाद में नहीं: टाइमस्टैम्प, आपने क्या आज़माया, कौन-सा डेटा इस्तेमाल किया, क्या देखा, आपके सवाल, और जो कुछ ग़लत लगा। छोटी, तथ्यात्मक लाइनें काफ़ी हैं। स्क्रीन रिकॉर्डिंग, कैप्चर की गई रिक्वेस्ट या HAR फ़ाइल और कंसोल लॉग बाद में बहुत-सा दोबारा जोड़ने का काम बचाते हैं।
Session के अंत में नोट्स को तीन ढेरों में बाँटें। बग, बग रिपोर्ट बनते हैं: हर एक को एक बार फिर रिप्रोड्यूस करें, स्टेप घटाएँ और टीम के फ़ॉर्मेट में लिखें (बग रिपोर्ट गाइड फ़ील्ड और severity बनाम priority समझाती है)। सवाल प्रोडक्ट ओनर या डेवलपर के पास जाते हैं। जो आइडिया हर रिलीज़ पर जाँचने लायक हैं वे regression case बनते हैं: सटीक expected result वाले सामान्य test case की तरह लिखे जाते हैं, और ऑटोमेट करने लायक पर निशान लगाया जाता है।
- नोट्स के साथ charter, बिल्ड और एनवायरनमेंट दर्ज करें ताकि बाद का पाठक जाने कि क्या कवर हुआ और क्या नहीं।
- जो टेस्ट नहीं कर सके और क्यों (ब्लॉक एनवायरनमेंट, डेटा की कमी) उसे भी लिखें — यह उतना ही अहम है जितना जो टेस्ट किया।
NOTE 10:42 Resend x5 fast, entered 1st code (481207) -> accepted.
Screen says "Previous codes are no longer valid". Bug?
NOTE 10:46 Repeated with 2 resends: same. Staging build 3.8.1, Chrome 129.
BUG Earlier OTP is still accepted after a new code is sent via Resend
Steps: 1) Log in as layla.h@example.com 2) Wait for OTP A
3) Click "Resend code", receive OTP B 4) Enter OTP A
Expected: "Code expired" error (on-screen text and acceptance criterion 4)
Actual: Login succeeds with OTP A
REGRESSION CASE TC-OTP-017 Only the latest OTP is valid after Resend
Expected: earlier codes rejected with "Code expired"; attempt is counted
Automate: yes, at API level (verify endpoint called with a superseded code)आज़माएँ: AI बग विवरण जनरेटर आज़माएँ: AI बग टाइटल जनरेटर आज़माएँ: टेस्ट केस जनरेटर
एक्सप्लोरेटरी टेस्टिंग और ऑटोमेशन साथ कैसे काम करते हैं
ऑटोमेशन और exploration के काम एक-दूसरे के पूरक हैं। ऑटोमेटेड चेक हर बदलाव पर जल्दी पुष्टि करते हैं कि ज्ञात व्यवहार अब भी चलता है, और टेस्टरों को वही regression हाथ से दोहराने से मुक्त करते हैं। exploration उस बचे समय को वहाँ लगाता है जहाँ ऑटोमेशन अंधा है: नया व्यवहार, अनपेक्षित इंटरैक्शन और यह आकलन कि प्रोडक्ट सच में उपयोगी है या नहीं। मैनुअल और ऑटोमेटेड टेस्टिंग के बीच काम का सामान्य बँटवारा और test pyramid, manual vs automated testing गाइड में हैं; Agile Testing quadrants भी exploratory testing को उन business-facing टेस्ट में रखते हैं जो प्रोडक्ट की आलोचनात्मक जाँच करते हैं।
- Exploration ऑटोमेशन को खिलाता है — session में मिला हर बग regression चेक का उम्मीदवार है; जिनका expected result स्पष्ट और स्थिर है उन्हें ऑटोमेट करें, बेहतर हो तो API या unit लेवल पर।
- ऑटोमेशन exploration को खिलाता है — नई विफलता, flaky टेस्ट या कवरेज रिपोर्ट का गैप, सब अच्छे charter हैं।
- स्क्रिप्ट exploration के सहायक — कोड या डेटा जनरेटर से स्टेट रीसेट करें, हज़ार ऑर्डर बनाएँ या मुश्किल स्टेट तक पहुँचें, फिर वहाँ से हाथ से explore करें।
- अंधे हिस्सों को explore करें — विज़ुअल लेआउट, लोकलाइज़ेशन, असली assistive technology के साथ accessibility और एरर से रिकवरी के मज़बूत ऑटोमेटेड oracle शायद ही होते हैं।
- इसे वर्कफ़्लो में रखें — उदाहरण के लिए, हर हाई-रिस्क स्टोरी का बिल्ड टेस्ट एनवायरनमेंट में पहुँचते ही, स्टोरी को done मार्क करने से पहले, एक charter वाला session।
आज़माएँ: AI रिग्रेशन टेस्ट जनरेटर आज़माएँ: रिग्रेशन सिनेरियो जनरेटर आज़माएँ: टेस्ट डेटा फ़ैक्टरी
आम गलतियाँ
- Exploratory testing को बिना प्लान की टेस्टिंग मानना — न charter, न नोट्स, न debrief, और बाद में कोई नहीं बता सकता कि क्या कवर हुआ।
- बहुत चौड़े charter ("ऐप को explore करें") या इतने संकरे कि वे भेस बदली हुई टेस्ट स्क्रिप्ट हों।
- सिर्फ़ वैध डेटा के साथ happy path explore करना, जो वही दोहराता है जो स्क्रिप्टेड टेस्ट पहले से करते हैं।
- बग को अलग किए बिना रिपोर्ट करना — ट्रिगर खोजने में कुछ मिनट एक दिन की आगे-पीछे की बातचीत बचाते हैं।
- Regression चेक की जगह exploration, या exploration की जगह regression चेक रखना; हर एक वह ढूँढता है जो दूसरा चूकता है।
- टेस्टरों को प्रति session बग की संख्या से आँकना, जो मामूली रिपोर्ट को इनाम देता है और मज़बूत निकलने वाले हिस्सों को explore करने की सज़ा।
अक्सर पूछे जाने वाले सवाल
क्या exploratory testing और ad hoc testing एक ही हैं?
नहीं। दोनों में स्क्रिप्ट नहीं होती, पर exploratory testing का एक मिशन (charter) होता है, आमतौर पर समय-सीमा होती है, टेस्ट आइडिया बनाने की सोची-समझी तकनीकें होती हैं और जो कवर हुआ व मिला उसका लिखित रिकॉर्ड होता है। Ad hoc testing में इनमें से कुछ नहीं होता, इसलिए उसके नतीजों की समीक्षा या दोहराव नहीं हो सकता।
क्या exploratory testing को डॉक्यूमेंटेशन चाहिए?
हाँ, पर हल्का: session से पहले charter, दौरान नोट्स (एक्शन, डेटा, ऑब्ज़र्वेशन, सवाल), और बाद में बग रिपोर्ट, issues और नए regression case। मक़सद यह है कि कोई और देख सके कि क्या टेस्ट हुआ, स्टेप-दर-स्टेप स्क्रिप्ट नहीं।
क्या exploratory testing ऑटोमेट हो सकती है?
Exploring ख़ुद नहीं — यह इंसानी सीखने और विवेक पर टिका है। टूल इसकी मदद करते हैं: डेटा जनरेटर, स्टेट सेटअप स्क्रिप्ट, रिकॉर्डिंग और नोट टूल, और AI सहायक जो edge case या negative scenario सुझाते हैं। इसकी खोजों को ऑटोमेटेड regression चेक में जाना चाहिए।
Exploratory session कितना लंबा होना चाहिए?
मूल session-based तरीके में एक normal session एक charter पर लगभग 90 मिनट की बिना रुकावट टेस्टिंग होता है; short session 45 मिनट के क़रीब और long session दो घंटे के क़रीब होता है। Session-based test management गाइड time-boxing को विस्तार से समझाती है।
Test charter क्या है?
Session का एक-दो वाक्य का मिशन जो बताता है कि क्या explore करना है, किन संसाधनों के साथ, और कौन-सी जानकारी खोजनी है — जैसे "OTP resend को तेज़ क्लिक और धीमे नेटवर्क के साथ explore करें ताकि पता चले कौन-सा कोड वैध है"। यह स्टेप तय किए बिना टेस्टर को दिशा देता है।
Exploratory testing को कैसे मापें?
हर हिस्से के लिए पूरे हुए session और charter को उस हिस्से के रिस्क से मिलाकर, असल टेस्टिंग बनाम सेटअप या बग जाँच में लगे समय के हिस्से से, और मिले बग, issues व सवालों से। सिर्फ़ बग की गिनती किसी एक टेस्टर को आँकने का कमज़ोर पैमाना है।
संदर्भ
- ISTQB Certified Tester Foundation Level (CTFL) v4.0सॉफ़्टवेयर टेस्टिंग का फ़ाउंडेशन पाठ्यक्रम: टेस्ट स्तर और प्रकार, टेस्ट डिज़ाइन तकनीकें, टेस्ट प्रबंधन और टूल।
- ISTQB Glossaryटेस्टिंग शब्दों की मानक परिभाषाएँ — टेस्ट केस, रिग्रेशन टेस्टिंग, सेवेरिटी, प्रायोरिटी, बाउंड्री वैल्यू एनालिसिस आदि।
- Explore It! Reduce Risk and Increase Confidence with Exploratory Testing (Elisabeth Hendrickson)एक्सप्लोरेटरी टेस्टिंग का अनुशासन: चार्टर, इनपुट और स्टेट बदलने के ह्यूरिस्टिक, और यह स्क्रिप्टेड टेस्ट का पूरक कैसे है।
- Exploratory Software Testing: Tips, Tricks, Tours, and Techniques to Guide Test Design (James A. Whittaker)वह किताब जिसने exploratory testing को "tours" के इर्द-गिर्द व्यवस्थित किया — फ़ीचर, डेटा और यूज़र यात्राओं को खोजने के संरचित तरीके।
- Session-Based Test Management (Jonathan Bach)session-based test management का मूल विवरण: चार्टर वाले, समय-सीमित exploratory सेशन, session sheet और debrief।
- Lessons Learned in Software Testing: A Context-Driven Approach (Cem Kaner, James Bach, Bret Pettichord)बग रिपोर्टिंग, टेस्ट डिज़ाइन, ऑटोमेशन और टेस्टिंग प्रबंधन पर व्यावहारिक सबक — कॉन्टेक्स्ट-ड्रिवन स्कूल।
- Agile Testing: A Practical Guide for Testers and Agile Teams (Lisa Crispin, Janet Gregory)एजाइल टेस्टिंग क्वाड्रेंट और टेस्टर डिलीवरी टीम के भीतर कैसे काम करते हैं — "सही परत पर टेस्टिंग" का आधार।
अभ्यास
टीम इनविटेशन: session के नोट्स छाँटें और अगले charter लिखें
Task management का एक SaaS ऐप (काल्पनिक) अपने Team plan में members को invite करने का फ़ीचर जोड़ रहा है। Build 4.6.0 staging पर है, और इस फ़ीचर के लिए टीम के पास एक दिन और दो टेस्टर हैं। आपकी सहकर्मी रना ने आज सुबह पहला exploratory session किया; आप दूसरे टेस्टर हैं और बाक़ी दिन यह फ़ीचर आप सँभालेंगे। फ़ीचर brief, उसका charter और उसके नोट्स नीचे हैं।
गाइड एक session के अंत और अगले की शुरुआत के लिए जो बताती है, वही करें: तय करें कि हर नोट क्या है, oracles से समस्याएँ पहचानें, बग के टाइटल लिखें और सबसे अहम बग के लिए एक regression case, फिर अगले sessions के charter ऐसे लिखें कि वे रना के session से मिली जानकारी पर आगे बढ़ें। काग़ज़-कलम काफ़ी है; लगभग 40 मिनट रखें।
FEATURE BRIEF - "Invite members", team workspaces, task-management SaaS (काल्पनिक)
Plan Team plan, 10 seats। Owner, हर member और हर pending invitation
एक-एक seat लेते हैं।
AC1 Owner और admins, Settings > Members से email द्वारा लोगों को invite करते हैं।
AC2 Invitation link 7 दिन वैध है और सिर्फ़ एक बार इस्तेमाल हो सकता है।
AC3 सभी seats भर जाने पर "Invite" disabled हो जाता है और पेज पर
"All 10 seats are in use" दिखता है।
AC4 Invitation cancel करने या member हटाने पर seat तुरंत ख़ाली होती है।
हटाए गए member का workspace access तुरंत ख़त्म होता है।
AC5 Roles: Owner, Admin, Member। सिर्फ़ owner roles बदल सकता है।
AC6 Invitation email भेजने वाले की भाषा में होता है (Arabic या English)।
Build 4.6.0 staging पर (web app)। दो टेस्टर, इस फ़ीचर के लिए एक दिन।
SESSION NOTES - रना, 09:00-10:40
Charter Seat limit के क़रीब वाले workspace में inviting और cancelling को
explore करें ताकि पता चले कि seats कैसे गिनी जाती हैं।
N1 09:05 शुरुआत: owner + 7 members + 1 pending invitation = 9 of 10।
sara@example.com को invite किया -> "10 of 10", "Invite" disabled,
"All 10 seats are in use" दिखा।
N2 09:12 सारा का invitation cancel किया -> Members पर "9 of 10"।
Billing पेज अब भी "10 seats used" कहता है, reload के बाद भी।
N3 09:20 lina@example.com को invite किया -> "10 of 10"। सारा का cancel हुआ
link private window में खोला, sara@example.com से sign up किया ->
workspace join हो गया। Members पर "11 of 10"।
N4 09:41 डेटा reset: owner + 5 members = 6 of 10। omar.ali@example.com को
invite किया -> 7 of 10। वही address दोबारा -> "Already invited"।
वही address spreadsheet से पेस्ट किया, अंत में space के साथ ->
दूसरा pending invitation, 8 of 10।
N5 09:58 Admin (owner नहीं) के रूप में login। Member rows पर role menu enabled।
हुदा को Member से Admin किया -> "Role updated"; reload के बाद भी Admin।
N6 10:10 Owner ने ख़ालिद को हटाया। उसके 4 open tasks अब भी assignee के रूप में
"ख़ालिद" दिखाते हैं, कोई निशान नहीं।
N7 10:22 UI Arabic में, invitation भेजा। Email body Arabic में; subject line
में सिर्फ़ प्रश्नचिह्न: "????? ???? ?????"।
N8 10:35 Seed डेटा का 8 दिन पहले भेजा गया invitation खोला -> "This invitation
has expired. Ask an admin to send a new one."
NOT TESTED हटाए गए member का access (AC4 का दूसरा वाक्य): दूसरा test account
उपलब्ध नहीं था।- Brief और नोट्स पढ़ें। N1 से N8 तक हर नोट के लिए तय करें: यह बग है, product owner के लिए सवाल है, या specified तरीके से काम करने वाला व्यवहार है — और गाइड का वह oracle बताएँ जो आपके फ़ैसले का आधार है।
- हर बग के लिए लिखें कि रिपोर्ट करने से पहले आप क्या एक बार और जाँचेंगे (ट्रिगर अलग करें, डेटा का पीछा करें), फिर एक लाइन का टाइटल लिखें। तय करें कि सबसे पहले कौन-सा बग रिपोर्ट करेंगे और क्यों।
- बाक़ी दिन के अपने sessions के लिए
Explore <target> with <resources> to discover <information>रूप में तीन charter लिखें। उन्हें रिस्क के क्रम में रखें, क्रम का कारण दें, और बताएँ कि हर charter किस heuristic या tour पर टिका है। - N3 को precondition, स्टेप और सटीक expected result वाले regression case में बदलें, और तय करें कि इसे ऑटोमेट करना है या नहीं, और किस लेवल पर।
मॉडल उत्तर दिखाएँ
नोट्स की छँटाई। नीचे oracles के नाम गाइड वाले हैं; जहाँ कोई दूसरा oracle भी फ़िट हो, वह भी सही है। संक्षेप में: N3, N4, N5 और N7 बग हैं, N2 ऐसा बग है जिसे पहले एक जाँच चाहिए, N6 product owner के लिए सवाल है, और N1 व N8 specified तरीके से काम करते हैं।
N1 — specified तरीके से काम करता है। 10 of 10 पर बटन disabled है और मैसेज AC3 से शब्दशः मेल खाता है (दावों से एकरूपता)। कोई नोट सिर्फ़ इसलिए बग नहीं होता कि वह लिखा गया, फिर भी इससे एक follow-up आइडिया मिलता है: क्या limit तब भी टिकती है जब दो admins एक ही पल में invite करें, या आख़िरी ख़ाली seat दो टैब से ली जाए?
N2 — एक जाँच के बाद बग (इसे सवाल मानना भी स्वीकार्य है)। Members और Billing एक ही संख्या पर असहमत हैं (प्रोडक्ट के भीतर एकरूपता), और AC4 कहता है कि seat तुरंत ख़ाली होती है (दावों से एकरूपता)। रिपोर्ट करने से पहले पता करें कि Billing "seats used" से क्या मतलब रखता है: अगर वह जानबूझकर billing period में इस्तेमाल हुई सबसे ज़्यादा seats दिखाता है, तो व्यवहार इरादतन हो सकता है और सिर्फ़ label भ्रामक है। दोनों हालात में सबूत product owner के पास जाते हैं, और फ़ैसला वही करता है; टेस्टर का काम है ध्यान देना, सबूत जुटाना और समझाना कि यह क्यों मायने रखता है।
N3 — बग, और सबसे पहले रिपोर्ट करने लायक। Cancel हुआ invitation अब भी किसी को workspace में आने देता है, और workspace 11 of 10 seats पर पहुँच जाता है। यह दावों (AC3 और AC4), उद्देश्य (cancel इसीलिए है कि invitation वापस लिया जा सके) और समझाने योग्यता ("11 of 10" को कोई समझा नहीं सकता) से मेल नहीं खाता। रिपोर्ट से पहले इसे अलग करें: क्या cancel हुआ link तब भी काम करता है जब एक seat ख़ाली हो? अगर हाँ, तो डिफ़ेक्ट cancel करने में है, और join करते समय seat check का न होना एक दूसरा, अलग डिफ़ेक्ट हो सकता है जिसकी अपनी रिपोर्ट बने।
N4 — बग। प्रोडक्ट हूबहू duplicate को पहले से रोकता है ("Already invited"), इसलिए अंत में space वाला वही address स्वीकार करना प्रोडक्ट के भीतर एकरूपता के ख़िलाफ़ है, और इससे ग्राहक की एक paid seat जाती है (उद्देश्य और यूज़र की अपेक्षा से एकरूपता)। यह "इनपुट बदलें" heuristic का काम है: आगे-पीछे स्पेस वाला पेस्ट किया कंटेंट। रिपोर्ट से पहले डेटा का पीछा करें: जाँचें कि pending सूची में सच में एक ही व्यक्ति के दो invitation दिखते हैं, और क्या उमर को दो email मिलते हैं। आगे आज़माने लायक बदलाव: शुरुआत में स्पेस, एक tab, और वही address capital letters में (तब भी वह वही address माना जाए या नहीं, यह product owner के लिए सवाल है)।
N5 — बग। AC5 role बदलना सिर्फ़ owner के लिए रखता है, फिर भी एक admin ने role बदल दिया, और बदलाव reload के बाद भी बना रहा, यानी सर्वर ने उसे स्वीकार किया: समस्या सिर्फ़ ऐसा menu नहीं है जिसे छिपा होना चाहिए था (दावों से एकरूपता)। यह permission का डिफ़ेक्ट है और N3 के ठीक बाद आता है। रिपोर्ट से पहले डेटा का पीछा करें: पक्का करें कि हुदा को अब सच में admin के अधिकार मिल गए हैं (जैसे वह Settings > Members से लोगों को invite कर सकती है), ताकि रिपोर्ट सिर्फ़ label नहीं, असर भी दिखाए।
N6 — product owner के लिए सवाल। Brief हटाए गए member के tasks के बारे में कुछ नहीं कहता, इसलिए मिलाने के लिए कोई दावा नहीं है; यहाँ oracle है उद्देश्य और यूज़र की अपेक्षा से एकरूपता (टीम को दिखना चाहिए कि किन tasks का अब कोई मालिक नहीं)। पूछें: क्या tasks unassign हों, किसी और को assign हों या उन पर निशान लगे, और हटाए गए member के comments का क्या हो?
N7 — बग। अरबी अक्षरों की जगह प्रश्नचिह्न AC6 और संगठन की छवि (टूटा हुआ अरबी टेक्स्ट) दोनों के ख़िलाफ़ हैं। रिपोर्ट से पहले वही email दूसरे mail client में खोलें और दोनों नतीजे दर्ज करें, ताकि भेजने के डिफ़ेक्ट और किसी एक client की display समस्या में फ़र्क़ कर सकें।
N8 — specified तरीके से काम करता है (AC2)। फिर भी product owner के लिए दो follow-up सवाल बचते हैं: "7 दिन वैध" की boundary ठीक कहाँ है — भेजने से 168 घंटे, या सातवें दिन के अंत तक, और किस टाइम ज़ोन में? और क्या expired invitation अब भी एक seat लेता है, जबकि brief हर pending invitation को गिनता है? NOT TESTED वाली लाइन अच्छी आदत है: जो टेस्ट नहीं हो सका, और क्यों, वही अगला charter बनता है।
पहले N3 और फिर N5 रिपोर्ट करें: दोनों तय करते हैं कि workspace में कौन आ सकता है और वहाँ क्या कर सकता है, इसलिए इनसे किसी टीम का डेटा उजागर हो सकता है, जबकि N2, N4 और N7 पैसे या भरोसे का नुक़सान करते हैं पर कुछ उजागर नहीं करते। उदाहरण टाइटल (आपके शब्द अलग हो सकते हैं; हर टाइटल व्यवहार और शर्त बताए और नोट्स के बिना समझ आए): N3 "Cancel हुआ invitation link अब भी invitee को join करने देता है, workspace 11 of 10 seats पर पहुँचता है"; N5 "Admin किसी member का role बदल सकता है, जबकि role सिर्फ़ owner बदल सकता है"; N2 "Reload के बाद भी Billing पेज cancel हुए invitation को used seat गिनता है"; N4 "अंत में space वाला address duplicate check को बायपास करता है और दूसरी seat लेता है"; N7 "Arabic invitation email के subject में अरबी टेक्स्ट की जगह प्रश्नचिह्न दिखते हैं"।
बाक़ी दिन के आपके sessions के charter, सबसे ज़्यादा रिस्क वाला पहले (ये उदाहरण हैं; वही रिस्क कवर करने वाले कोई भी अच्छी तरह लिखे charter सही हैं)। Charter A: "Invitation links को हर state में — pending, accepted, cancelled, expired, दो बार खोला गया — private window, दूसरे ब्राउज़र, invite किए गए address से अलग address और भरी हुई seat limit के साथ explore करें, ताकि पता चले कि कोई link ऐसा access देता है जो उसे नहीं देना चाहिए, या workspace को 10 seats से आगे ले जाता है।" यह "स्टेट बदलें" और "क्रम बदलें" heuristics (cancel के बाद accept, दो बार accept) और Obsessive-compulsive tour (वही link बार-बार) इस्तेमाल करता है। यह पहले आता है क्योंकि N3 पहले ही दिखा चुका है कि cancel हुआ link लोगों को अंदर आने देता है।
Charter B: "Owner, admin और member के रूप में, UI में और वही बदलाव दो टैब में दोहराकर, role बदलने को explore करें, ताकि पता चले कि owner के अलावा कोई role बदल सकता है या नहीं, अपना या owner का role भी।" Heuristics: कोई persona अपनाएँ, स्टेट बदलें। N5 ने दिखाया कि सर्वर admin का किया role बदलाव स्वीकार करता है; अगला सवाल है कि यह कहाँ तक जाता है — क्या admin ख़ुद को owner बना सकता है, या owner को हटा सकता है?
Charter C: "किसी member को तब हटाने को explore करें जब वह दूसरे ब्राउज़र में सक्रिय हो — task एडिट करते, comment जोड़ते, फ़ाइल अपलोड करते, धीमे नेटवर्क पर — ताकि पता चले कि हटाया गया member कितनी जल्दी access खोता है और उसके काम का क्या होता है।" Heuristics: रुकावट डालें, डेटा का जीवन-चक्र बदलें। यह NOT TESTED लाइन (AC4) कवर करता है और N6 वाले सवाल के लिए सबूत जुटाता है; session शुरू होने से पहले दूसरा test account माँग लें। C को B से ऊपर रखना भी ठीक है, क्योंकि यह भी access से जुड़ा है।
बाद के लिए चौथा charter: "एक seat की यात्रा को invitation से accept, हटाने और Billing पेज तक, भेजने वाले की भाषा पहले Arabic और फिर English रखकर explore करें, ताकि पता चले कि seat की गिनती या भाषा कहाँ मेल नहीं खाती।" यह FedEx tour (डेटा का पीछा करें) है, Arabic emails और पेजों के लिए Supermodel tour के साथ। यह N2 और N7 को आगे बढ़ाता है, जो पैसे या भरोसे का नुक़सान करते हैं पर डेटा उजागर नहीं करते, इसलिए यह आख़िर में आता है।
N3 से regression case — TC-INV-021 "Cancel हुए invitation link से join नहीं किया जा सकता"। Precondition: Team plan वाला workspace जिसमें एक seat ख़ाली हो और sara@example.com के लिए pending invitation हो; उस address का कोई account न हो। स्टेप: 1) owner के रूप में invitation cancel करें; 2) उसका link private window में खोलें; 3) sara@example.com से sign up करके join करने की कोशिश करें। Expected result: join करने से मना किया जाता है और मैसेज बताता है कि invitation अब वैध नहीं है (सटीक टेक्स्ट product owner से पूछें और case में लिखें), सारा Members में नहीं दिखती, और seat की गिनती वही रहती है जो स्टेप 1 के बाद थी। एक दूसरा case भी जोड़ें जिसमें स्टेप 2 से पहले कोई नया invitation ख़ाली हुई seat ले ले, ताकि सभी 10 seats भरी हों, क्योंकि N3 limit पर हुआ था। Automate: हाँ, इसका expected result स्पष्ट और स्थिर है; इसे API लेवल पर जाँचें (cancel हुए invitation को accept करना reject हो और member count न बदले), और मैसेज के लिए एक UI चेक रखें। Fix आने पर इसे पहले confirmation test के रूप में चलाएँ; उसके बाद यह regression suite में जाता है।
अपना काम जाँचें: हर नोट का फ़ैसला और oracle लिखा है, और आपने N1 या N8 को सिर्फ़ इसलिए बग नहीं कहा कि वे लिखे गए थे; N3 सबसे पहले रिपोर्ट होता है, उसे अलग करने वाली जाँच के साथ; हर बग टाइटल व्यवहार और शर्त बताता है; हर charter में target, resources और खोजने वाली जानकारी है, वह एक-दो वाक्य का है, न "ऐप को explore करें" है न स्टेप की सूची, और रना के session से मिली जानकारी पर टिका है; और आपका regression case कोई भी चलाए, उसे वही pass या fail मिले।
इस topic में आपकी प्रगति
प्रगति ट्रैक करने के लिए साइन इन करें
Topics पूर्ण चिह्नित करें, जहाँ छोड़ा था वहीं से जारी रखें और specialisation परीक्षाएँ खोलें।
QA रोडमैप का हिस्सा
इस topic से पहले
अगले topics
इस मॉड्यूल के दूसरे topics
इस गाइड में बताए गए टूल्स
किसी फ़ीचर के लिए functional, negative, security, usability और compatibility पहलुओं को कवर करने वाले उच्च-स्तरीय टेस्ट सिनेरियो जनरेट करें।
Mutqan AI से किसी फ़ीचर, API या फ़ॉर्म के edge case और corner case खोजें।
Mutqan AI से किसी फ़ीचर के लिए रचनात्मक negative और दुरुपयोग (abuse) सिनेरियो जनरेट करें।
स्पेशल कैरेक्टर से भरे इनपुट जनरेट करें: कोट, SQL/HTML/JSON मेटाकैरेक्टर, कंट्रोल कैरेक्टर, emoji और path की चालाकियाँ।
कई लिपियों (अरबी, देवनागरी, CJK, सिरिलिक), emoji, संयोजक चिह्न और normalisation रूपों में Unicode टेस्ट स्ट्रिंग जनरेट करें।
states और events परिभाषित करें, फिर transition तालिका, वैध/अमान्य transition टेस्ट और 0-switch/1-switch coverage जनरेट करें।
दो API रिस्पॉन्स (जैसे staging बनाम production) की तुलना करें और हर संरचनात्मक तथा वैल्यू का अंतर देखें।
मोटे-मोटे नोट्स को पूरी बग रिपोर्ट में बदलें: reproduce करने के स्टेप, अपेक्षित बनाम वास्तविक, environment, गंभीरता और attachments चेकलिस्ट।
Mutqan AI से किसी change विवरण, diff सारांश या release notes से regression टेस्ट सूट जनरेट करें।