लाभ:
- स्वीकृति नियमबाट स्वतन्त्र रूपमा एकाइ परीक्षणहरूमा अपेक्षित मूल्य गणना गरेर गलत व्यवहारलाई 'सही' रूपमा स्वीकार गर्न कृत्रिम बुद्धिमत्तालाई रोक्न सक्ने क्षमता।
- AAA र FIRST सिद्धान्तहरू लागू गरेर र बाह्य निर्भरताहरू खिल्ली उडाएर छिटो, स्वतन्त्र र दोहोरिने योग्य परीक्षणहरू प्रिन्ट गर्ने क्षमता
- उत्परिवर्तन (कोड तोड्ने) को साथ परीक्षणहरू परीक्षण गर्ने क्षमता र डिजाइन गन्धको रूपमा गाह्रो-परीक्षण कोड पहिचान गर्ने क्षमता
परीक्षण पिरामिडको सबैभन्दा ठूलो र सबैभन्दा छिटो तह एकाइ परीक्षण हो - परीक्षण जसले कुनै प्रकार्य वा कोडको सानो टुक्रालाई अरू सबैबाट अलग्याएर प्रमाणित गर्दछ। हजारौं एकाइ परीक्षणहरू सेकेन्डमा चल्छन् र कोड अझै विकासकर्ताको स्क्रिनमा हुँदा बग समात्छन्। आर्टिफिसियल इन्टेलिजेन्स (एआई) एकाइ परीक्षणहरू उत्पादन गर्नमा सायद सबैभन्दा कुशल छ: तपाईंले यसलाई एक प्रकार्य दिनुहुन्छ, एआईले दर्जनौं परीक्षणहरू उत्पादन गर्दछ। तर यो धेरै सुविधाले सबैभन्दा ठूलो जाललाई जन्म दिन्छ: AI ले सजिलैसँग परीक्षणहरू उत्पादन गर्दछ जुन "हरियो चमक तर केहि प्रमाणित गर्दैन" वा कोडको वर्तमान (सम्भव दोषपूर्ण) व्यवहारलाई "सही" भनी स्वीकार गर्दछ। यस एकाइमा तपाईंले AI सँग साँच्चै सुरक्षात्मक एकाइ परीक्षणहरू र परीक्षणयोग्य कोड र AI बीचको सम्बन्ध कसरी लेख्ने भनेर सिक्नुहुनेछ।
राम्रो इकाई परीक्षणको गुणहरू: पहिलो
राम्रो एकाइ परीक्षणहरूले FIRST सिद्धान्तहरू पछ्याउँछन्: छिटो, स्वतन्त्र (परीक्षणहरू एकअर्कामा निर्भर हुनु हुँदैन), दोहोर्याउन मिल्ने (दोहोर्याउन मिल्ने — कुनै पनि वातावरणमा समान परिणाम), स्व-प्रमाणीकरण (स्पष्ट पास/फेल), समयमै (समयमै)। AI उत्पादन परीक्षणहरू गर्दा यी सिद्धान्तहरू आफैलाई सम्झाउनुहोस्; विशेष गरी सोध्नुहोस् कि परीक्षण "स्वतन्त्र" र "दोहोरिने योग्य" हुन बाहिरी संसार (वास्तविक डाटाबेस, नेटवर्क, घडी) मा निर्भर छैन।
AAA ढाँचा र अभिव्यक्त जोर
ठोस एकाइ परीक्षणले AAA संरचनालाई पछ्याउँछ: व्यवस्थित गर्नुहोस् (तयार गर्नुहोस् — इनपुटहरू र निर्भरताहरू सेट गर्नुहोस्), ऐन (कार्यान्वयन गर्नुहोस् — परीक्षण अन्तर्गत प्रकार्यलाई कल गर्नुहोस्), दाबी गर्नुहोस् (मान्यता गर्नुहोस् — अपेक्षित मानसँग परिणाम तुलना गर्नुहोस्)। आलोचनात्मक एक दाबी छ। AI ले गरेको सबैभन्दा सामान्य गल्ती भनेको परीक्षण अन्तर्गत कोडको आउटपुटबाट दावी निकाल्नु हो - "जे पनि कोड फर्काउँछ सत्य हो" तर्क। यसले परीक्षा अर्थहीन बनाउँछ। सही तरिका भनेको अपेक्षित मान स्वतन्त्र रूपमा निर्धारण गर्नु हो (स्वीकृति मापदण्डबाट, यसलाई म्यानुअल रूपमा गणना गर्नुहोस्)।
ध्यान दिनुहोस्: यदि तपाईंले AI लाई "यस प्रकार्यको लागि परीक्षण लेख्नुहोस्" भन्नुभयो भने, AI ले प्रकार्य चलाउन सक्छ र यसको आउटपुट "अपेक्षित" को रूपमा लेख्न सक्छ। कार्य गलत भए पनि यो परीक्षण पास हुन्छ। यसको सट्टा, भन्नुहोस् "तपाईले यी नियमहरू अनुसार अपेक्षित परिणामहरू गणना गर्नुहुन्छ, प्रकार्यको हालको आउटपुटलाई सन्दर्भ नगर्नुहोस्।"
नक्कली, स्टब र निर्भरता
एकाइ परीक्षण अलगाव आवश्यक छ। यदि तपाईंको प्रकार्य डाटाबेस वा API मा निर्भर छ भने, तिनीहरू परीक्षणमा नकली वस्तुहरू (नक्कल/स्टब — एक नियन्त्रित, वास्तविक निर्भरताको लागि डमी विकल्प) द्वारा प्रतिस्थापित हुन्छन्। यसले परीक्षणलाई छिटो, स्वतन्त्र र पुन: उत्पादन योग्य बनाउँछ। एआई नक्कली स्थापना उत्पादन गर्न सक्छ; तर अत्याधिक ठट्टाबाट सावधान रहनुहोस्: यदि तपाइँ सबै कुराको खिल्ली उडाउनुहुन्छ भने, परीक्षणले "नक्कलले के फर्काउँछ" मात्र प्रमाणित गर्नेछ, वास्तविक तर्क होइन। सन्तुलन: बाहिरी संसारको अनुकरण गर्नुहोस्, वास्तविक तर्कलाई परीक्षण अन्तर्गत कार्यान्वयन गर्नुहोस्।
परीक्षण योग्यता र एआई
त्यहाँ एउटा चाखलाग्दो प्रतिक्रिया छ: परीक्षण गर्न गाह्रो हुने कोड प्राय: खराब डिजाइन गरिएको कोड हो। यदि AI लाई प्रकार्य (धेरै धेरै निर्भरताहरू, लुकेको विश्वव्यापी अवस्था, साइड इफेक्टहरू) मा परीक्षणहरू लेख्न समस्या छ भने, त्यो डिजाइन गन्ध हो। AI लाई सोध्दा "तपाईले यो कोडलाई परीक्षणयोग्य बनाउन कसरी रिफ्याक्टर गर्नुहुन्छ" राम्रो परीक्षण र राम्रो कोड दुवैतर्फ जान्छ।
प्यारामिटराइज्ड परीक्षण र डेटा विविधता
फरक-फरक इनपुटहरूको साथ एउटै नियम प्रमाणित गर्न प्रत्येक पटक छुट्टै परीक्षण लेख्नु कठिन र कायम राख्न गाह्रो छ। प्यारामिटराइज्ड टेस्टिङ — इनपुट र अपेक्षित नतिजाहरूको सूचीमा बारम्बार एउटै परीक्षण तर्क चलाउने संरचना — यो दोहोरिनेलाई हटाउँछ: एकल परीक्षण शरीर दर्जनौं इनपुट जोडीहरूसँग खुवाइन्छ। AI यी इनपुट-अपेक्षित परिणाम तालिकाहरू उत्पादन गर्नमा धेरै कुशल छ जब तपाईंले यसलाई आफ्नो स्वीकृति नियमहरू दिनुहुन्छ; विशेष गरी, यसले व्यवस्थित रूपमा सीमा मानहरू र समानता वर्गहरू तालिकाबद्ध गर्दछ।
तर यहाँ पनि एउटा जाल छ: AI ले परीक्षण अन्तर्गत कोडबाट उत्पन्न तालिकामा अपेक्षित परिणामहरू प्राप्त गर्न खोज्छ। यो त्रुटि प्यारामिटराइज्ड परीक्षणमा अझ खतरनाक छ, किनभने एकल गलत तर्कले दर्जनौं रेखाहरूलाई अमान्य बनाउँछ। त्यसकारण, सधैँ अपेक्षित परिणाम स्तम्भ स्वीकृति नियम अनुसार स्वतन्त्र रूपमा गणना गर्नुहोस् र कम्तिमा केही पङ्क्तिहरू म्यानुअल रूपमा मान्य गर्नुहोस्। साथै वर्णन स्तम्भ "प्रत्येक पङ्क्तिले के प्रतिनिधित्व गर्दछ" सोध्नुहोस्; त्यसोभए जब पङ्क्ति भाँचिन्छ तपाईले तुरुन्तै कुन राज्य भाँचिएको छ हेर्नुहोस्।
सुझाव: प्यारामिटराइज गरिएको परीक्षण तालिकामा जानाजानी "ट्र्याप रो" थप्नुहोस् — त्यो हो, जानीजानी नतिजा गलत टाइप गर्नुहोस्। यदि तपाइँ परीक्षण चलाउँदा त्यो रेखा रातो भएन भने, तपाइँको परीक्षणले वास्तवमा त्यो स्थिति प्रमाणित गरिरहेको छैन। यो द्रुत नक्कली-पास जाँच हो।
कमजोर प्रम्प्ट / बलियो प्रम्प्ट
कमजोर: "यस प्रकार्यको लागि एक एकाइ परीक्षण लेख्नुहोस्।"
बलियो: "कर गणना(रकम, दर) प्रकार्यको लागि [भाषा/ढाँचा] एकाइ परीक्षणहरू लेख्नुहोस्। स्वीकृति नियम: परिणाम = रकम * दर, 2 दशमलवमा राउन्ड गरिएको; ऋणात्मक रकम वा दरले त्रुटि फ्याँक्छ; यदि दर ० छ भने ० फर्काउँछ। AAA संरचना प्रयोग गर्नुहोस्। म्यानुअल रूपमा गणना गर्नुहोस् अपेक्षित नियमहरू; THE को अनुसार हालको नियमहरू आउटपुट नगर्नुहोस्। र नकारात्मक केसहरू (0, ऋणात्मक, धेरै ठूलो, दशमलव सम्म) प्रत्येक परीक्षणको नामले बाह्य निर्भरता प्रमाणित गर्दछ।
शक्तिशाली प्रम्प्ट; यसले स्वीकृति नियम, स्वतन्त्र अपेक्षित मूल्य अपेक्षा, संरचना र किनारा केसहरू दिन्छ। यसरी, परीक्षा नियमको संरक्षक बन्छ, कोडको ऐना होइन।
एकाइ परीक्षण गुणस्तर तालिका
लक्षण
खराब परीक्षण (नक्कली-विश्वास)
राम्रो परीक्षण
दाबी गर्नुहोस्
कुनै पनि वा "नल होइन"
अपेक्षित ठोस मूल्य
अपेक्षित मूल्य स्रोत
प्रकार्यको आउटपुट
स्वीकृति नियम / म्यानुअल गणना
लत
वास्तविक DB/नेटवर्क/घण्टा
नक्कली/स्टबको साथ इन्सुलेटेड
किनारा मामला
केवल खुसी बाटो
सीमा, नकारात्मक, त्रुटि
जब तपाइँ कोड तोड्नु हुन्छ
हरियो रहन्छ
रातो हुन्छ
नाम
test1, परीक्षण विधि
यसले पुष्टि गर्ने नियमको वर्णन गर्दछ
चार प्रतिलिपि गर्न मिल्ने टेम्प्लेटहरू
1) नियम-संचालित एकाइ परीक्षण:
तपाईंको भूमिका: वरिष्ठ सफ्टवेयर परीक्षण इन्जिनियर। [भाषा/ढाँचा] को साथ निम्न प्रकार्यमा एक एकाइ परीक्षण लेख्नुहोस्: [हस्ताक्षर]। स्वीकृति नियमहरू: [नियमहरू]।- AAA संरचना प्रयोग गर्नुहोस्।- यी नियमहरू अनुसार म्यानुअल रूपमा अपेक्षित मानहरू गणना गर्नुहोस्; प्रकार्यको हालको आउटपुटलाई सन्दर्भ नगर्नुहोस्। - अलग-अलग परीक्षणहरूको साथ सीमा, नकारात्मक, त्रुटि र खुशी मार्ग कभर गर्नुहोस्। - प्रत्येक परीक्षण नामले प्रमाणित गर्ने नियमको वर्णन गरौं। - नक्कली बाह्य निर्भरता; वास्तविक तर्क काम गर्नुहोस्।
2) उत्परिवर्तन प्रतिरोध नियन्त्रण:
यी एकाइ परीक्षणहरू हेर्नुहोस्। मैले परीक्षण अन्तर्गत कोडमा गर्न सक्ने ५ साना ट्वीकहरू सूचीबद्ध गर्नुहोस् (a - a + को सट्टा, a >= a > को सट्टा, एक बाउन्ड्री शिफ्ट) र मलाई भन्नुहोस् कि यी मध्ये कुन परीक्षण रातो हुनेछ? यदि कुनै पनि फिर्ता भएन भने, परीक्षण अपर्याप्त छ। कोड + परीक्षणहरू: [पेस्ट]
3) परीक्षण योग्यता समीक्षा:
यो प्रकार्यको लागि एकाइ परीक्षण लेख्न किन गाह्रो छ? लुकेको लत, ग्लोबल स्टेटस, साइड इफेक्ट, धेरै जिम्मेवारी छ? यसलाई परीक्षणयोग्य बनाउन न्यूनतम रिफ्याक्टरिङको सुझाव दिनुहोस्; व्यवहार परिवर्तन नगर्नुहोस्। कोड: [पेस्ट]
4) अपूर्ण परिदृश्य पूरा:
निम्न प्रकार्य र उपलब्ध परीक्षणहरू दिइएको छ। कुन व्यवहार/एजकेस कहिल्यै परीक्षण गरिएको छैन (स्कोप ग्याप) सूचीबद्ध गर्नुहोस् र प्रत्येकको लागि परीक्षण थप्नुहोस्। प्रकार्य + परीक्षणहरू: [पेस्ट]
तीन मिनी केसहरू
केस 1 - कोड मिररिङ परीक्षण। एक विकासकर्ताले एआईलाई राउन्डिङ प्रकार्यको लागि परीक्षण लेखेको थियो; 10 परीक्षणहरू हरियो थिए। वास्तवमा, प्रकार्य गलत दिशामा घुमिरहेको थियो, तर AI ले प्रकार्यको आउटपुटबाट अपेक्षित मानहरू लिएको थियो, त्यसैले परीक्षणहरूले त्रुटिलाई "सत्य" माने। जब अपेक्षित मानहरू "नियम-संचालित" टेम्प्लेटसँग म्यानुअल रूपमा गणना गरियो, 4 परीक्षणहरू रातो भयो र वास्तविक त्रुटि प्रकट भयो।
केस २ - उत्परिवर्तन नियन्त्रणको मूल्य। एउटा टोलीले ४५ इकाई परीक्षणमा भर परेको थियो। "म्युटेशन रोबस्टनेस चेक" को साथ कोडमा 20 साना ट्वीकहरू प्रयास गरियो; तीमध्ये ११ जना मात्रै परीक्षणमा परेका थिए। बाँकी ९ अवरोध चुपचाप पार भयो । टोली कमजोर परीक्षण बलियो; अर्को विमोचनमा यी परिष्कृत परीक्षणहरूद्वारा वास्तविक गणना त्रुटि समातिएको थियो।
केस 3 - अस्थिरता एक डिजाइन गन्ध हो। AI ले अर्डरिंग प्रकार्यको लागि परीक्षणहरू लेख्न सकेन, यसलाई निरन्तर वास्तविक डाटाबेस चाहिन्छ। "testability समीक्षा" टेम्प्लेटले देखाउँछ कि प्रकार्यले डेटाबेस पहुँच सम्मिलित गरेको छ। जब निर्भरता इंजेक्शन हटाइयो, परीक्षणहरू लेख्न सकिन्छ र कोड क्लिनर भयो।
सामान्य गल्तीहरू
- कोडबाट अपेक्षित मान प्राप्त गर्दै। AI ले प्रकार्य आउटपुटलाई "सही" को रूपमा स्वीकार गर्दछ; त्रुटिपूर्ण कोड पुष्टि गर्ने परीक्षण।
- दाबी बिना वा मामूली दावी संग परीक्षण। "उनले गल्ती गरेनन्, उ पास भयो" तर्क; यसले केहि पुष्टि गर्दैन।
- चरम ठट्टा। सबै कुराको खिल्ली उडाउने र नक्कलीले के फर्काउँछ भनेर मात्र परीक्षण गर्ने; वास्तविक तर्क परीक्षण गरिएको छैन।
- बस खुशी बाटो। सीमा, नकारात्मक र त्रुटि राज्यहरू बाइपास गर्दै।
- कोड तोडेर परीक्षण गर्दैन। उत्परिवर्तनको लागि जाँच नगरी हरियोलाई विश्वास गर्दै।
- अस्थिरतालाई बेवास्ता गर्दै। नराम्रो डिजाइन पहिचान नगर्ने र कडा परिक्षण गर्नुको सट्टा सुधार गर्ने।
संक्षेपमा
एकाइ परीक्षणहरू परीक्षण पिरामिडको सबैभन्दा छिटो र सबैभन्दा ठूलो तह हुन्; यसले सस्तो क्षणमा गल्ती समात्छ। एआई एकाइ परीक्षणहरू उत्पादन गर्न धेरै सक्षम छ, तर यसको सबैभन्दा ठूलो समस्या भनेको परीक्षणहरू लेख्नु हो जसले कोडबाट अपेक्षित मूल्य प्राप्त गरेर गलत व्यवहारलाई "सही" मान्छ। समाधान: स्वीकृति नियमहरू दिनुहोस्, अपेक्षित मानहरू म्यानुअल रूपमा गणना गर्नुहोस्, AAA र FIRST सिद्धान्तहरू लागू गर्नुहोस्, बाहिरी संसारको मजाक गर्नुहोस् र वास्तविक तर्क चलाउनुहोस्, र उत्परिवर्तन (कोड तोड्दै) द्वारा प्रत्येक परीक्षणको परीक्षण गर्नुहोस्। परीक्षण गर्न गाह्रो भएको कोड एक डिजाइन चिन्ह हो जसलाई फिक्स गर्न आवश्यक छ।
आवेदन कार्य
तपाईंको आफ्नै परियोजनाबाट व्यापार नियम समावेश गर्ने प्रकार्य चयन गर्नुहोस्। स्वीकृति नियमहरू लेख्नुहोस् र "नियम-संचालित इकाई परीक्षण" टेम्प्लेटको साथ एआई लेखन परीक्षणहरू लिनुहोस्; अपेक्षित मानहरू म्यानुअल रूपमा गणना गर्नुहोस्। त्यसपछि "उत्परिवर्तन बलियोपन जाँच" लागू गर्नुहोस्: कोडमा कम्तिमा 5 साना ब्रेकहरू बनाउनुहोस् र कतिवटा परीक्षणहरू रातो भए मापन गर्नुहोस्। नभेटिएका भ्रष्टाचारका लागि नयाँ परीक्षण थप्नुहोस्। कति अवरोधहरू समातिए (जस्तै उत्परिवर्तन स्कोर) रिपोर्ट गर्नुहोस्।
चेकलिस्ट
- [ ] मैले स्वीकृति नियमहरू दिएँ र अपेक्षित मानहरू म्यानुअल रूपमा गणना गरें।
- [ ] मैले यो सुनिश्चित गरें कि परीक्षणहरूले कोडबाट अपेक्षित मान प्राप्त गरेनन्।
- [ ] मैले AAA र FIRST दिशानिर्देशहरू पछ्याएर स्वतन्त्र परीक्षण स्थापना गरेको छु।
- [ ] मैले बाह्य निर्भरताहरूको खिल्ली उडाएँ र वास्तविक तर्क चलाएँ।
- [] मैले सीमा, नकारात्मक र त्रुटि केसहरू कभर गरें।
- [ ] कोड (म्युटेशन) तोडेर मैले प्रमाणित गरें कि परीक्षणहरूले वास्तवमा सुरक्षा गर्दछ।