नफा:
- AI सह अर्थपूर्ण प्रतिपादनासह युनिट, इंटिग्रेशन आणि एज केस चाचण्या तयार करण्याची क्षमता
- एआय समर्थनासह चाचणी कव्हरेज, मर्यादा मूल्ये आणि नकारात्मक परिस्थिती पद्धतशीरपणे काढण्याची क्षमता
- AI द्वारे तयार केलेल्या चाचण्या प्रत्यक्षात वर्तन सत्यापित करतात आणि विद्यमान कोडची पुनरावृत्ती करत नाहीत हे सत्यापित करण्याची क्षमता
चाचणी ही अशी यंत्रणा आहे जी हे सिद्ध करते की सॉफ्टवेअर प्रत्यक्षात वचन दिल्याप्रमाणे वागते. एक चांगला चाचणी संच तुम्हाला काही सेकंदात सांगते की बदलामुळे काहीतरी खंडित होते की नाही आणि अभियंत्याला आत्मविश्वासाने कार्य करण्याचे स्वातंत्र्य देते. AI चाचणी लेखनाचा सर्वात कंटाळवाणा आणि सर्वात वगळलेला भाग वाढवते: अनेक परिस्थिती, ब्रेकपॉइंट्स आणि नकारात्मक प्रकरणे निर्माण करणे. परंतु येथे एक गुप्त सापळा आहे: AI चाचण्या लिहू शकते जे कोडच्या वर्तमान (कदाचित सदोष) वर्तनाची पडताळणी करते, त्याचे अपेक्षित वर्तन नाही; किंवा ते रिकाम्या चाचण्या तयार करू शकतात जे नेहमी उत्तीर्ण होतात, प्रत्यक्षात काहीही तपासत नाहीत. चाचणीचे मूल्य ती उत्तीर्ण होते की नाही यामध्ये असते, परंतु ती योग्य गोष्ट तपासते की नाही आणि चूक झाल्यावर ती लाल होते.
या युनिटमध्ये, तुम्ही अर्थपूर्ण विधानांसह युनिट, इंटिग्रेशन आणि एज केस चाचण्या कशा तयार करायच्या हे शिकाल; पद्धतशीरपणे चाचणी कव्हरेज, ब्रेकपॉइंट्स आणि डाउनसाइड परिस्थिती कशी काढायची; आणि AI ने तयार केलेल्या चाचण्या प्रत्यक्षात वर्तन प्रमाणित करतात हे तुम्ही कसे तपासू शकता ते आम्ही पाहू.
संकल्पना: युनिट चाचणी: एकल फंक्शन/क्लास अलगावमध्ये तपासते. एकत्रीकरण चाचणी: अनेक भाग एकत्र योग्यरित्या कार्य करतात अशा चाचण्या. ठामपणे: एक विधान जे तपासते की परिणाम अपेक्षित होता त्या बरोबरीचा आहे; हे परीक्षेचे हृदय आहे. कव्हरेज: चाचण्यांद्वारे किती कोड चालवला जातो; उच्च कव्हरेज गुणवत्ता हमी देत नाही.
अर्थपूर्ण चाचण्या तयार करणे
चांगली चाचणी तीन गोष्टी स्पष्टपणे करते: ते एक राज्य स्थापित करते, ती एक कृती करते, ती परिणामावर ठाम असते. AI वर चाचण्या मुद्रित करताना, तुम्हाला कोणती वर्तणूक सत्यापित करायची आहे आणि त्यात कोणत्या परिस्थितींचा समावेश असावा हे निर्दिष्ट करा; अन्यथा, ते वरवरच्या चाचण्या तयार करते जे नेहमी उत्तीर्ण होतात.
- चाचणी करण्यासाठी वर्तन परिभाषित करा. "काय बरोबर आहे?" प्रश्नाचे स्पष्ट उत्तर द्या.
- परिस्थितीचे प्रकार विचारा. सामान्य, मर्यादा, नकारात्मक, त्रुटी स्थिती.
- अर्थपूर्ण प्रतिपादन आयात करा. त्याने फक्त "एरर फेकली नाही" तर "योग्य मूल्य परत केले".
- चाचणीची अचूकता तपासा. जेव्हा तुम्ही कोड जाणीवपूर्वक तोडता तेव्हा चाचणी लाल होते का?
सर्वसमावेशक चाचणी जनरेशन प्रॉम्प्ट: "खालील 'अप्लायडिस्काउंट(रक्कम, कूपन)' फंक्शनसाठी युनिट चाचण्या लिहा. खालील श्रेणींमध्ये किमान एक परिस्थिती असू द्या: (1) सामान्य वैध कूपन, (2) ब्रेकपॉइंट्स (0 रक्कम, 100% सवलत), (3) नकारात्मक (अवैध रक्कम, कूपन) (नकारार्थी रक्कम म्हणून) (अवैध रक्कम) प्रत्येक चाचणीमध्ये काँक्रीट अपेक्षित मूल्य (फक्त 'काम केलेले' नाही) चाचण्यांना नाव द्या: [कोड]"
सीमा मूल्य एक्स्ट्रॅक्शन प्रॉम्प्ट: "या फंक्शनच्या इनपुटसाठी सीमा मूल्य विश्लेषण करा. प्रत्येक पॅरामीटरसाठी, 'फक्त सीमेवर', 'सीमेच्या अगदी खाली', 'सीमेच्या अगदी वर' ही मूल्ये सारणी म्हणून काढा. नंतर या सीमांना कव्हर करणाऱ्या चाचणी परिस्थितींची यादी करा. अद्याप कोडेनासिस आणि फंक्शन लिहू नका. [स्वाक्षरी]"
खबरदारी: उच्च चाचणी कव्हरेज (उदा. 90%) कोड बरोबर असल्याचे सिद्ध करत नाही. कव्हरेज मोजते की किती पंक्ती अंमलात आणल्या गेल्या; असे नाही की त्या ओळी योग्य परिणाम देतात. अर्थपूर्ण प्रतिपादनाशिवाय चाचणी कव्हरेज वाढवते परंतु कशाचीही हमी देत नाही. प्रतिपादनाची सामग्री गुणवत्तेवर अवलंबून असते, प्रतिपादनांची संख्या नव्हे.
चाचणी स्वतः चाचणी करणे: उत्परिवर्तनाचे तर्क
AI-व्युत्पन्न चाचणी प्रत्यक्षात कार्य करते की नाही हे समजून घेण्याचा सर्वात व्यावहारिक मार्ग म्हणजे मुद्दाम कोड (उत्परिवर्तन चाचणी तर्क) तोडणे. अट उलट करा, + चिन्ह करा -; कोणत्याही चाचण्या लाल झाल्या नाहीत तर, तुमच्या चाचण्या प्रत्यक्षात ते वर्तन राखत नाहीत.
चाचणी भेद्यता शिकार प्रॉम्प्ट: "मला सांगा की या कोडमधील कोणते संभाव्य बग खालील चाचण्या पकडू शकत नाहीत. कोडमध्ये केले जाऊ शकणारे 5 लहान उत्परिवर्तन सुचवा (उदा. >= ऐवजी >, - ऐवजी +) आणि विद्यमान चाचण्या ते पकडतील की नाही ते प्रत्येकासाठी सूचित करा. ज्यांना पकडले गेले नाही त्यांच्यासाठी, [कोड जोडले जावेत असे चाचणी सुचवा:" Code:" Code.
कमकुवत प्रॉम्प्ट / मजबूत प्रॉम्प्ट
कमजोर: "या कार्यासाठी चाचणी लिहा." (परिणाम: सामान्यत: एक आनंदी परिस्थिती, कमकुवत प्रतिपादन; चुका चुकतात.) स्ट्राँग: "या 'पासवर्डस्ट्राँग' फंक्शनसाठी चाचणी लिहा. नियम: किमान 8 वर्ण, 1 अप्परकेस अक्षर, 1 अंक आवश्यक आहे. खालील परिस्थिती वेगळ्या चाचण्या म्हणून कव्हर करा: नक्की 8 वर्ण (मर्यादा), 7 अक्षरे कमी नाहीत, 7 अक्षरे नाहीत. रिकामी स्ट्रिंग, फक्त मोकळी जागा, खूप लांब (1000 वर्ण) प्रत्येक चाचणीमध्ये अपेक्षित सत्य/असत्य मूल्य स्पष्टपणे सांगा आणि चाचणी जे तपासते त्यानुसार नाव द्या."
शक्तिशाली प्रॉम्प्ट नियम आणि पूर्ण सीमा परिस्थिती देते. "नक्की 8 / 7 वर्ण" सारख्या सीमा जोड्या चुका करण्यासाठी सर्वात सामान्य ठिकाणे आहेत (गोंधळात टाकणारे > = सह). कमकुवत प्रॉम्प्ट या सीमांना बायपास करते आणि त्रुटी उत्पादनात घेऊन जाते.
चाचणी प्रकार आणि कुठे वापरायचे
चाचणी प्रकार
ते कशाची पुष्टी करते?
AI योगदान
लक्ष द्या
युनिट
सिंगल फंक्शन/क्लास
बहु-परिदृश्ये जलद व्युत्पन्न करते
अर्थपूर्ण प्रतिपादन आवश्यक आहे
एकीकरण
भाग एकत्र काम करत आहेत
परिस्थिती आणि मॉक डेटा मसुदा
खरे व्यसनाधीन वर्तन
समाप्त / स्वीकार
संपूर्ण वापरकर्ता प्रवाह
चरण यादी आणि अपेक्षा
ठिसूळपणाला प्रवण
प्रतिगमन
जुनी त्रुटी परत येत नाही
दोष विशिष्ट चाचणी
प्रत्येक निराकरणात जोडले पाहिजे
मिनी केसेस
केस 1 - नेहमी उत्तीर्ण होणारी चाचणी. एआय फंक्शनसाठी 12 चाचण्या लिहिते आणि त्या सर्व पास होतात. अभियंता संशयास्पद बनतो आणि फंक्शनचे रिटर्न व्हॅल्यू जाणूनबुजून विकृत करतो; फक्त 3 चाचण्या लाल होतात. इतर 9 चाचण्यांमध्ये अर्थपूर्ण दावे नाहीत. उत्परिवर्तन शिकार करून चाचणी मजबूत केली जाते; वास्तविक संरक्षण 9 परिस्थितींमध्ये प्राप्त होते.
केस 2 - सीमा त्रुटी. वय पडताळणी फंक्शनमध्ये "18 आणि त्याहून अधिक वैध आहे" असे म्हटले पाहिजे परंतु >18 लिहिलेले आहे, म्हणजे वय 18 नाकारले आहे. चाचणीमध्ये त्रुटी ताबडतोब दिसून येते कारण एआय ब्रेकपॉईंट विश्लेषणाद्वारे "अगदी 18" परिस्थिती निर्माण करते. एकल मर्यादा चाचणी कोणत्याही वास्तविक वापरकर्त्याच्या तक्रारींना प्रतिबंधित करते.
केस 3 - वर्तमान वर्तन निश्चित करणे. जेव्हा AI ला "या कोडवर आधारित चाचणी लिहा" असे सांगितले जाते, तेव्हा ते एक चाचणी तयार करते जी कोडमध्ये आधीपासून अस्तित्वात असलेली गोलाकार त्रुटी "बरोबर" म्हणून स्वीकारते. जेव्हा अभियंता आवश्यकतेनुसार (अपेक्षित योग्य मूल्य) चाचणी मुद्रित करतो आणि कोड नाही, तेव्हा चाचणी लाल होते आणि वास्तविक त्रुटी उद्भवते. चाचण्या अपेक्षेतून घ्याव्यात, कोडमधून नव्हे.
सामान्य चुका
- निरर्थक प्रतिपादन. "एरर टाकली नाही" पुरेसे नाही; योग्य मूल्य सत्यापित करणे आवश्यक आहे.
- गुणवत्तेसह गोंधळात टाकणारी व्याप्ती. उच्च कव्हरेज अचूक परिणामांची हमी नाही.
- कोडद्वारे चाचणी मुद्रित करणे. वर्तमान त्रुटी "सत्य" मध्ये निश्चित करते; चाचण्या अपेक्षेतून मिळायला हव्यात.
- मर्यादा मूल्ये वगळणे. गोंधळात टाकणारी > सह >= ही सर्वात सामान्य चूक आहे; सीमा जोड्यांची चाचणी करणे आवश्यक आहे.
- चाचणीचेच ऑडिट करत नाही. तुम्ही कोड तोडल्यावर लाल होत नाही अशी चाचणी संरक्षण पुरवत नाही.
सारांशात
एक चांगला चाचणी संच आत्मविश्वासाने बदल करण्याची गुरुकिल्ली आहे. एआय त्वरीत अनेक परिस्थिती, सीमा आणि नकारात्मक परिस्थिती निर्माण करते; परंतु जर ते आवश्यकतेऐवजी कोडमधून चाचण्या घेत असेल, तर ते विद्यमान दोषांचे निराकरण करू शकते किंवा नेहमी उत्तीर्ण होणाऱ्या निरर्थक चाचण्या लिहू शकते. प्रत्येक चाचणीमध्ये ठोस अपेक्षित मूल्य निश्चित करा, जोडलेल्या जोड्यांचा समावेश करा आणि कोड जाणूनबुजून तोडून तुमच्या चाचण्या खरोखर संरक्षित करतात याची पडताळणी करा. दाव्याची सामग्री, व्याप्तीची संख्या नव्हे, गुणवत्ता निर्धारित करते.
अर्ज कार्य
एक फंक्शन निवडा आणि सर्वसमावेशक चाचणी जनरेशन प्रॉम्प्टसह चार श्रेणींमध्ये (सामान्य, मर्यादा, नकारात्मक, त्रुटी) चाचण्या तयार करा; प्रत्येक चाचणीमध्ये ठोस अपेक्षित मूल्य निश्चित करा. नंतर चाचणी भेद्यता शिकार प्रॉम्प्ट चालवा, कोडमध्ये 5 लहान उत्परिवर्तन सुचवा आणि ते कोणते पकडतात हे तपासण्यासाठी चाचण्या चालवा. कमीत कमी एका उत्परिवर्तनासाठी नवीन चाचणी जोडा जे पकडले गेले नाही आणि ते आता लाल रंगात असल्याचे दर्शवा.
चेकलिस्ट
- [ ] मी अपेक्षित/योग्य वर्तनावर आधारित चाचण्या छापल्या आहेत, कोडवर नाही.
- [ ] मी सामान्य, मर्यादा, नकारात्मक आणि त्रुटी परिस्थिती समाविष्ट केल्या आहेत.
- [ ] मी प्रत्येक चाचणीमध्ये ठोस अपेक्षित मूल्य ठामपणे मांडले.
- मी सीमा जोड्यांची चाचणी केली (फक्त वर-खाली / फक्त वर-खाली).
- [ ] मुद्दाम कोड मोडून, मी पुष्टी केली की चाचण्या लाल झाल्या आहेत.
- [ ] मी न सापडलेल्या उत्परिवर्तनांसाठी एक नवीन चाचणी जोडली आहे.