ऑटो टेस्ट जेनरेशन
यूनिट, इंटीग्रेशन, E2E टेस्ट्स -- कोड को OpenClaw को दे, टेस्ट केसेस अपने आप तैयार हो जाते हैं
टेस्टिंग - इसे करने वाला अपनी दर्द जानता है
फीचर्स को लॉन्च करने की जल्दबाज़ी है, टेस्ट्स हमेशा "अगला वर्जन में" होते हैं। फिर लॉन्च के बाद सब कुछ फूट जाता है क्योंकि एज केस्स कवर ही नहीं थीं।
Mock डेटा लिखते-लिखते जान निकल जाती है - एक API तीन सर्विसेस पर डिपेंड करती है, सिर्फ mock डेटा लिखने में आधा घंटा लगता है, बिजनेस कोड से भी ज्यादा।
कवरेज रिपोर्ट में 30% दिख रहा है, बॉस से पूछा जाता है तो बस यही कहना पड़ता है "कोर लॉजिक तो टेस्ट है"। असल में happy path भी पूरी तरह टेस्ट नहीं है।
OpenClaw टेस्टिंग को कैसे हल करता है
OpenClaw सिर्फ कुछ test cases बना नहीं देता। यह फंक्शन सिग्नेचर, ब्रांच लॉजिक, एक्सेप्शन हैंडलिंग को एनालाइज करके, अपने आप एज कंडीशन्स और एक्सेप्शन सीन्स आइडेंटिफाई करता है।
तुम्हारे फंक्शन में null चेक है? Null इनपुट की टेस्ट जेनरेट करेगा। लूप है? इम्प्टी एरे, सिंगल एलिमेंट, बहुत सारा डेटा टेस्ट करेगा। Try-catch है? एक्सेप्शन ट्रिगर करने वाली इनपुट बनाएगा।
और यह समझता है कि तुम्हारी प्रोजेक्ट किस टेस्टिंग फ्रेमवर्क यूज़ करती है -- Jest, Pytest, JUnit, Vitest, सब में सीधा रन होने वाला कोड जेनरेट करता है, कोई फॉर्मेट चेंज नहीं करना पड़ता।
सीधा यूज़ कर सकने वाली टेस्टिंग Prompt्स
तीन Prompt्स - यूनिट टेस्टिंग, E2E टेस्टिंग, लोड टेस्टिंग। जो जरूरी हो वह चुन।
इस मॉड्यूल के सभी exported फंक्शन्स और क्लास मेथड्स को एनालाइज करो।
हर फंक्शन के लिए कंप्लीट यूनिट टेस्ट्स जेनरेट करो, जरूरी है कि:
1. कवरेज टार्गेट 90% से ऊपर (स्टेटमेंट कवरेज + ब्रांच कवरेज)
2. हर फंक्शन के लिए कम से कम: नॉर्मल इनपुट, एज वैल्यूज, एक्सेप्शन इनपुट
3. एक्सटर्नल डिपेंडेंसीज के लिए mock यूज़ करो, रियल DB या नेटवर्क पर डिपेंड मत करो
4. टेस्ट नेमिंग क्लीयर होनी चाहिए, "should xxx when xxx" फॉर्मेट यूज़ करो
5. ज़रूरी setup/teardown जोड़।
इस प्रोजेक्ट की टेस्टिंग फ्रेमवर्क और assertion लाइब्रेरी यूज़ करो, स्टाइल कंसिस्टेंट रखो।
Playwright से इस लॉगिन फ्लो के लिए E2E टेस्ट्स लिखो:
टेस्ट सीन्स:
1. नॉर्मल लॉगिन: सही यूजरनेम-पासवर्ड, होमपेज पर रीडायरेक्ट हो गया वेरिफाई करो
2. वॉंग पासवर्ड: गलत पासवर्ड, एरर मेसेज दिख रहा है वेरिफाई करो
3. खाली फॉर्म सबमिट: कोई इनपुट न डालकर सबमिट करो, फॉर्म वेलिडेशन वेरिफाई करो
4. मुझे याद रखो: "Remember me" चेक करो, फिर बंद करके दोबारा खोलो - लॉगिन स्टेट चेक करो
5. लॉग आउट: लॉग इन करके एक्जिट दबाओ, लॉगिन पेज पर वापस गए वेरिफाई करो
जरूरी है कि:
- Page Object Model पैटर्न यूज़ करो
- अच्छे wait स्ट्रेटेजीज लगा, sleep मत यूज़ करो
- फेल सीन्स के स्क्रीनशॉट्स लो डिबग करने के लिए
इन API एंडपॉइंट्स के लिए लोड टेस्टिंग स्क्रिप्ट जेनरेट करो (k6 या Artillery यूज़ करके):
टेस्ट कॉन्फिग:
1. ग्रेजुअल लोड: 10 कॉन्करेंट्स से शुरू करो, हर 30 सेकंड 10 और बढ़ाओ, मैक्स 200 कॉन्करेंट्स
2. टाइम डिूरेशन: कुल 5 मिनट
3. रिक्वेस्ट डिस्ट्रिब्यूशन: 70% रीड ऑपरेशन्स, 20% राइट, 10% अपडेट
4. मेट्रिक्स रिकॉर्ड करो: P50/P95/P99 लेटेंसी, एरर रेट, थ्रूपुट
रिजल्ट एनालिसिस स्क्रिप्ट जेनरेट करो, परफॉर्मेंस बॉटलनेक रिपोर्ट दे।
अगर P99 > 500ms या एरर रेट > 1%, तो ऑप्टिमाइजेशन की जरूरत मार्क करो।
टेस्ट जेनरेशन: OpenClaw vs Copilot
दोनों टेस्ट्स जेनरेट कर सकते हैं, पर क्वालिटी में काफी फर्क है।
- पूरी फंक्शन लॉजिक और ब्रांच पाथ्स को एनालाइज करता है, एज केस्स पूरी तरह कवर होते हैं
- क्रॉस-फाइल डिपेंडेंसीज को समझता है, mock्स सही बनते हैं
- स्पेसिफिक कवरेज टार्गेट्स सेट कर सकते हो, अगर नहीं पहुँचे तो मोर टेस्ट्स जोड़ेगा
- E2E, लोड टेस्टिंग जैसे कॉम्प्लेक्स सीन्स के लिए कंप्लीट स्क्रिप्ट्स जेनरेट करता है
- सिर्फ करंट फाइल के हिसाब से जेनरेट करता है, क्रॉस-फाइल डिपेंडेंसीज मिस कर सकते हैं
- ज्यादातर happy path टेस्ट्स जेनरेट करता है, एज केस्स कवरेज कम होती है
- Mock अक्सर मैनुअली फिक्स करने पड़ते हैं
- कॉम्प्लेक्स टेस्टिंग सीन्स (E2E, लोड टेस्टिंग) के लिए सपोर्ट सीमित है