एकाइहरू
1. सफ्टवेयर परीक्षण र QA मा कृत्रिम बुद्धिमत्ताको परिचय: भूमिका, सीमा, नकली जोखिम, र प्रमाणीकरण 2. परीक्षण परिदृश्य र परीक्षण केस जेनेरेसन: आवश्यकता देखि व्यापक नियन्त्रण सम्म 3. अन्वेषण परीक्षण र परीक्षण आइडिया जेनेरेसन: एआईसँग क्रिएटिभ बग हन्टिङ 4. UI परीक्षण स्वचालन: AI को साथ सेलेनियम, प्लेराइट र साइप्रस कोड उत्पन्न गर्दै 5. एपीआई परीक्षण स्वचालन: एआईसँग सम्झौता, योजना र अन्त-देखि-अन्त प्रमाणीकरण 6. एकाइ परीक्षण उत्पादन र परीक्षण योग्यता: एआईसँग बलियो परीक्षण 7. त्रुटि रिपोर्ट लेखन र प्राथमिकता: स्पष्ट, AI संग पुन: उत्पादन योग्य रेकर्डहरू 8. परीक्षण कभरेज विश्लेषण र जोखिम-आधारित परीक्षण: AI संग सही लक्ष्य 9. प्रतिगमन परीक्षण, परीक्षण मर्मत, र कमजोर परीक्षणहरू लड्न 10. गलत-विश्वास जोखिम, परीक्षण गुणस्तर, र उत्परिवर्तन परीक्षण: परीक्षण परीक्षण 11. अन्त-देखि-अन्त कार्यप्रवाह, CI/CD एकीकरण, नैतिकता र सुरक्षा: जिम्मेवारीपूर्वक एआई प्रयोग गर्दै
एकाइ 10 / 11

गलत-विश्वास जोखिम, परीक्षण गुणस्तर, र उत्परिवर्तन परीक्षण: परीक्षण परीक्षण

लाभ:

  • छद्म-विश्वासका तीनवटा अनुहारहरू चिन्न सक्ने क्षमता (गैर-आश्वासक, आत्म-जोस, तुच्छ दाबी) र एन्टिडोटहरू लागू गर्न
  • उपकरण वा हातले प्रतिशत कभरेज भन्दा गुणस्तरको अधिक सटीक मापनको रूपमा उत्परिवर्तन परीक्षण र उत्परिवर्तन स्कोर प्रयोग गर्ने क्षमता
  • परीक्षणको बिरूद्ध रातो टोलीको रूपमा एआईलाई स्थान दिने क्षमता र प्रशंसाको जालमा नपरिकन त्रुटिहरू परीक्षण गर्न खोज्ने क्षमता

यस मोड्युलको मुटुमा पुनरावर्ती चेतावनी छ: हरियो चमक परीक्षण प्यानल गुणस्तरको प्रमाण होइन। यदि तपाइँको परीक्षणहरूले तपाइँलाई आत्मविश्वास दिन्छ भने, तपाइँलाई थाहा छ कि त्यो विश्वास वास्तविक हो वा नक्कली। आर्टिफिसियल इन्टेलिजेन्स (एआई) को युगमा, यो प्रश्न पहिले भन्दा धेरै महत्वपूर्ण छ, किनभने एआई तरल पदार्थ उत्पादन गर्न माहिर छ, चिल्लो देखिने तर खोक्रो परीक्षण। झूटो आत्मविश्वास - सफ्टवेयरलाई विश्वास गर्नु सही छ किनभने परीक्षणहरू हरियो छन्, जब वास्तवमा परीक्षणहरूले कुनै पनि कुरा प्रमाणित गर्दैन - QA टोलीमा हुन सक्ने सबैभन्दा खतरनाक कुरा हो; किनभने यसले लुकाउँदैन कि त्यहाँ कुनै त्रुटिहरू छैनन्, तर तपाईले त्रुटिहरू देख्न सक्नुहुन्न। यो एकाइले सम्पूर्ण मोड्युलको प्रमाणीकरण दर्शनलाई एउटै अनुशासनमा ल्याउँछ: तपाईंको परीक्षणहरू परीक्षण गर्दै।

परीक्षणको गुणस्तर मापनको लागि सुनको मानक: उत्परिवर्तन परीक्षण

परीक्षणले वास्तवमा संरक्षण गर्छ वा गर्दैन भनेर बुझ्ने सबैभन्दा शक्तिशाली तरिका भनेको उत्परिवर्तन परीक्षण हो (उत्परिवर्तन परीक्षण - एक प्रविधि जसले स्रोत कोडमा जानाजानी साना विकृतिहरू/उत्परिवर्तनहरू उत्पादन गर्दछ र परीक्षणहरूले यी विकृतिहरू पत्ता लगाउँछन् कि मापन गर्दछ)। तर्क सरल छ: यदि तपाईंले जानाजानी कोड (a + into -, a > into >=, a true लाई false बनाउनु भयो भने), राम्रो परीक्षण सुइटले त्यो भ्रष्टाचार समात्नु पर्छ र रातो हुन्छ। यदि यो गर्दैन भने, त्यो अवरोध एक जीवित उत्परिवर्तन हो - त्यसैले तपाईंको परीक्षणहरूले वास्तवमा त्यो व्यवहारलाई सुरक्षित गर्दैनन्।

उत्परिवर्तन स्कोर = उत्परिवर्तन मारिएको / कुल उत्परिवर्तन। 90% लाइन कभरेज भएको प्याकेजमा 40% को उत्परिवर्तन स्कोर हुन सक्छ; यसले संकेत गर्छ कि लाइनहरूले काम गरिरहेको छ तर व्यवहार प्रमाणित गरिएको छैन। उत्परिवर्तन स्कोर प्रतिशत कभरेज भन्दा गुणस्तरको धेरै इमानदार उपाय हो।

सुझाव: त्यहाँ स्वचालित उत्परिवर्तन उपकरणहरू छन् (जाभाको लागि PIT/Pitest, JavaScript/TypeScript को लागि Stryker, .NET को लागि Stryker.NET, Python को लागि mutmut)। यी स्वचालित रूपमा उत्पन्न र सयौं उत्परिवर्तन परीक्षण। यदि तपाईंसँग उपकरण छैन भने, म्यानुअल "ब्रेक द कोड टेस्ट" विधि पनि महत्वपूर्ण कार्यहरूको लागि अमूल्य छ।

छद्म-विश्वासका तीनवटा अनुहार र यसको उपचार

छद्म-विश्वास फारम

लक्षण

औषधि

दाबी बिना परीक्षण

कोडले काम गर्छ, केहि पनि मान्य छैन

हरेक परीक्षामा साँचो दाबी; उत्परिवर्तन संग परीक्षण

आत्म-पुष्टि परीक्षण

अपेक्षित = कोडको आउटपुट

स्वतन्त्र रूपमा अपेक्षित मूल्य गणना गर्नुहोस्

तुच्छ दावी

"नल होइन", "२०० फर्कियो"

व्यापार नियम/वास्तविक परिणाम प्रमाणित गर्नुहोस्

उच्च दायरा भ्रम

90% लाइनहरू, कम सुरक्षा

उत्परिवर्तन स्कोर हेर्नुहोस्

कमजोर परीक्षण सहिष्णुता

"फेरि अड्कियो, पास"

मूल कारण + निर्धारणात्मक परीक्षण

एआईलाई "रातो टोली" को रूपमा प्रयोग गर्दै

एआईले छद्म-विश्वास उत्पन्न गर्न सक्छ र यसलाई शिकार गर्न एक शक्तिशाली सहयोगी हुन सक्छ। तपाईंको आफ्नै परीक्षणहरू विरुद्ध रातो टोलीको रूपमा AI प्रयोग गर्नुहोस्: सोध्नुहोस् "यी परीक्षणहरू पास गर्ने कोड लेख्नुहोस् तर गलत छ" वा "यी परीक्षणहरूलाई मूर्ख बनाउने एउटा विद्रोह खोज्नुहोस्।" यदि AI ले तपाइँको परीक्षणहरूमा त्रुटिहरू फेला पार्छ भने, ती त्रुटिहरू वास्तविक जोखिमहरू हुन्।

सावधानी: AI लाई नसोध्नुहोस् "के मेरो परीक्षणको गुणस्तर राम्रो छ?" र आश्वासनको रूपमा जवाफ "हो, महान" लिनुहोस्। AI दयालु हुन जान्छ। बरु, AI लाई ठोस कार्यमा चुनौती दिनुहोस्: "यी परीक्षणहरू पास गर्ने बग उत्पादन गर्नुहोस्।" यदि यसले यसलाई उत्पादन गर्न सक्छ भने, तपाइँको परीक्षणहरू त्यो त्रुटिमा अन्धा छन्।

बराबरको उत्परिवर्तन र स्कोरको सीमा

उत्परिवर्तन परीक्षण शक्तिशाली छ, तर यसको एक क्याच छ: केहि उत्परिवर्तनले कोडको व्यवहारलाई परिवर्तन गर्दैन। यसलाई समतुल्य उत्परिवर्तन भनिन्छ (समान उत्परिवर्तन - भ्रष्ट कोड, उत्परिवर्तन जसले मूल जस्तै ठ्याक्कै उस्तै परिणामहरू उत्पादन गर्दछ)। उदाहरणका लागि, कहिल्यै प्रयोग नगरिएको चरको प्रारम्भिक मान परिवर्तन गर्दा आउटपुटलाई असर गर्दैन; कुनै परीक्षणले यसलाई समात्न सक्दैन र गर्नु हुँदैन। त्यसकारण, 100% उत्परिवर्तन स्कोर प्रायः अभ्यासमा प्राप्त गर्न सकिँदैन र लक्ष्य होइन। हातले समान उत्परिवर्तनहरू हटाउन श्रम गहन छ; त्यसोभए उत्परिवर्तन स्कोरलाई निरपेक्ष परीक्षा स्कोरको रूपमा नपढ्नुहोस्, तर "के मेरो परीक्षणहरूले वास्तवमा सुरक्षा गर्दछ?" को इमानदार सूचकको रूपमा।

व्यावहारिक दृष्टिकोण यो हो: सम्पूर्ण कोड आधारमा निरन्तर उत्परिवर्तन परीक्षण चलाउनुको सट्टा, यसलाई उच्च जोखिम र सबैभन्दा जटिल व्यापार नियमहरू समावेश गर्ने मोड्युलहरूमा चलाउनुहोस्। यी मोड्युलहरूमा एक-एक गरेर जीवित उत्परिवर्तनहरू जाँच गर्नुहोस्; यदि यो वास्तविक अंतर हो भने, एक परीक्षण थप्नुहोस्; यदि यो एक बराबर उत्परिवर्तन हो भने, यसलाई औचित्य र पासको साथ चिन्ह लगाउनुहोस्। AI ले जीवित उत्परिवर्तन बराबर छ कि छैन भनेर मूल्याङ्कन गर्न प्रारम्भिक स्क्रीनिंग गर्न सक्छ; तर अन्तिम निर्णय तपाईं द्वारा गरिन्छ जसलाई कोडले के गर्छ थाहा छ।

सावधानी: उत्परिवर्तन परीक्षण गणनात्मक रूपमा महँगो छ (सबै सान्दर्भिक परीक्षणहरू प्रत्येक उत्परिवर्तनको लागि पुन: चलाइन्छ)। त्यसोभए एक साझा र उचित रणनीति भनेको यसलाई साप्ताहिक वा प्रि-रिलीज गहिरो जाँचको रूपमा महत्वपूर्ण मोड्युलहरूको लागि अनुसूचित गर्नु हो, प्रत्येक मर्जको सट्टा।

कमजोर प्रम्प्ट / बलियो प्रम्प्ट

कमजोर: "के मेरो परीक्षणहरू पर्याप्त छन्?"
बलियो: "यस प्रकार्य र परीक्षण सुइटको लागि रातो टोलीको रूपमा कार्य गर्नुहोस्। (1) मार्न सकिने कोडमा 8 उत्परिवर्तनहरू उत्पन्न गर्नुहोस् (अपरेटर प्रतिस्थापन, सीमा परिवर्तन, अवस्था उल्टो, रिटर्न मान प्रतिस्थापन)। (2) प्रत्येक उत्परिवर्तनको लागि, कुन अवस्थित परीक्षणहरूले यसलाई समात्नेछ र कुनले गर्दैन भनेर संकेत गर्नुहोस्। (3) प्रत्येक परीक्षणको लागि नयाँ लेख्नुहोस्। (४) यदि तपाइँ यी सबै परीक्षणहरू पास गर्ने तर व्यवसायको कोड + परीक्षणहरू उल्लङ्घन गर्ने कोड उदाहरण उत्पादन गर्न सक्नुहुन्छ भने देखाउनुहोस्: [पेस्ट]"।

शक्तिशाली प्रम्प्ट; यसले एआईलाई परीक्षण-ब्रेकिङ परीक्षकको रूपमा राख्छ, प्रशंसा मेसिन होइन।

चार प्रतिलिपि गर्न मिल्ने टेम्प्लेटहरू

1) म्यानुअल उत्परिवर्तन नियन्त्रण:

यस कोडको लागि 8 महत्त्वपूर्ण उत्परिवर्तनहरू (सानो जानाजानी अवरोधहरू) उत्पन्न गर्नुहोस्: अंकगणित अपरेटर प्रतिस्थापन, तुलना सीमा (> बनाम >=), तार्किक उल्टो, फिर्ता / स्थिर प्रतिस्थापन, अवस्था स्किपिङ। प्रत्येक उत्परिवर्तनको लागि, कुन उपलब्ध परीक्षणहरूले यसलाई समात्नेछ वा गर्दैन भनेर भविष्यवाणी गर्नुहोस्। कोड + परीक्षणहरू: [टाँस्नुहोस्]

२) जीवित उत्परिवर्तनलाई मार्ने:

निम्न उत्परिवर्तन परीक्षण प्रतिवेदनले जीवित (अपराशित) उत्परिवर्तनहरू समावेश गर्दछ: [सूची/रिपोर्ट]। प्रत्येकको लागि, एउटा न्यूनतम परीक्षण लेख्नुहोस् जसले त्यो उत्परिवर्तनलाई मार्नेछ (कोड त्यसरी तोड्दा रातो हुनेछ)। परीक्षणले कस्तो व्यवहार पुष्टि गर्छ भनेर टिप्पणी गर्नुहोस्।

3) रातो टोली - रगत परीक्षण:

के तपाइँ निम्न सबै परीक्षणहरू पास गर्ने कोड लेख्न सक्नुहुन्छ, तर निम्न व्यवसाय नियमहरू उल्लङ्घन गर्दछ: [व्यापार नियम]। यदि त्यसो हो भने, यी परीक्षणहरूमा कुन कमीले यसलाई अनुमति दिन्छ? त्यो लूफोल बन्द गर्ने परीक्षण थप्नुहोस्। परीक्षणहरू: [पेस्ट]

4) परीक्षण गुणस्तर निरीक्षण:

गुणस्तरको लागि यो परीक्षण सुइट जाँच गर्नुहोस्। प्रत्येक परीक्षणको लागि टिक गर्नुहोस्: - त्यहाँ एक साँचो दाबी छ वा यो प्रोप्स छ? - अपेक्षित मूल्य स्वतन्त्र, कोडबाट व्युत्पन्न छ? - के यसले व्यापार नियम वा केहि मामूली प्रमाणित गर्दछ? अन्तमा अनुमानित "साँचो दावी स्कोर" र 3 कमजोर परीक्षणहरू दिनुहोस्। परीक्षणहरू: [पेस्ट]

तीन मिनी केसहरू

केस १ - कभरेज ९२%, उत्परिवर्तन स्कोर ३८%। एउटा टोली उच्च कभरेजमा भर पर्यो। जब उत्परिवर्तन परीक्षण स्ट्राइकरसँग चलाइएको थियो, स्कोर 38% थियो: धेरै जसो उत्परिवर्तनहरू बाँचेका थिए। यो प्रमाण थियो कि परीक्षणहरू लाइनहरू चलिरहेको थिएन र व्यवहार प्रमाणित गर्दै। टोलीले गुणस्तर परीक्षणमा तीन हप्ता लगानी गर्‍यो; उत्परिवर्तन स्कोर 81% मा बढ्यो, र दुई वास्तविक गणना त्रुटिहरू अर्को रिलीजमा यी बीफ-अप परीक्षणहरूद्वारा समातिए।

केस २ - एआईले परीक्षणलाई छल गर्यो। "रातो टोली" टेम्प्लेटको साथ, एक विशेषज्ञले AI लाई कोडको लागि सोध्यो जसले अवस्थित परीक्षणहरू पास गर्यो तर छुट नियमको उल्लङ्घन गर्यो। AI ले कोड लेख्यो जसले सधैं शून्यको छुट फिर्ता गर्‍यो - र सबै परीक्षणहरू हरियो रह्यो किनभने कुनै पनि परीक्षणहरूले वास्तविक छुट मूल्य प्रमाणित गर्दैनन्। ग्याप देखियो, वास्तविक दावीहरू थपियो।

केस 3 - प्रशंसा जाल। एक जुनियर परीक्षकले AI लाई सोधे, "के मेरो परीक्षण राम्रो छ?" र "धेरै व्यापक" को जवाफ सुनेर राहत पाए। उहाँका वरिष्ठ सहकर्मीले "परीक्षण गुणस्तर लेखा परीक्षा" टेम्प्लेट प्रयोग गरेर लेखा परीक्षाहरू लेखाएका थिए; यो बाहिरियो कि 20 मध्ये 12 परीक्षणहरू सजावट थिए (जोर वा जंक बिना)। सहि प्रश्नले सहि उत्तर ल्यायो ।

सामान्य गल्तीहरू

  • गुणस्तरको लागि गलत दायरा। उच्च पङ्क्ति कभरेजमा भर पर्दै र उत्परिवर्तन स्कोरलाई हेर्दै छैन।
  • AI को प्रशंसामा भरोसा गर्दै। सोध्दै "तपाईको परीक्षण राम्रो छ?" र सकारात्मक जवाफलाई आश्वासनको रूपमा विचार गर्दै।
  • कोडबाट अपेक्षित मान प्राप्त गर्दै। त्रुटिपूर्ण कोड पुष्टि गर्ने स्व-प्रमाणीकरण परीक्षणहरू।
  • तुच्छ दावीहरूमा सन्तुष्ट हुनुहोस्। जाँचहरू जसले वास्तविक नियमलाई प्रमाणित गर्दैन, जस्तै "नल होइन", "२०० फर्कियो"।
  • जीवित उत्परिवर्तनलाई बेवास्ता गर्दै। उत्परिवर्तन प्रतिवेदनमा नआएको कुरालाई बेवास्ता गर्दै।
  • क्रिटिकल कोडलाई म्यानुअल रूपले म्युटेट गर्ने प्रयास पनि गरिरहेको छैन। यदि उपकरण उपलब्ध छैन भने "कोड तोड्नुहोस् र परीक्षण गर्नुहोस्" चरण छोड्नुहोस्।

संक्षेपमा

स्यूडो-ट्रस्टले सफ्टवेयर सही छ भन्ने विश्वास गर्दैछ किनभने परीक्षणहरू हरियो छन्; जबकि परीक्षणहरूले केहि पुष्टि गर्न सक्दैन। यो मापनको लागि सुनको मानक उत्परिवर्तन परीक्षण हो: जानाजानी कोड तोड्ने र परीक्षणहरूले यसलाई समात्ने कि गर्दैन भनेर नाप्ने। उत्परिवर्तन स्कोर प्रतिशत कभरेज भन्दा गुणस्तरको धेरै इमानदार उपाय हो। AI दुबै छद्म-विश्वास उत्पादन गर्दछ र यसलाई खोज्नको लागि एक शक्तिशाली रातो टोली बन्छ - सोध्नुहोस् "यी परीक्षणहरू पास गर्ने बग उत्पादन गर्नुहोस्।" तपाईंको परीक्षणहरू परीक्षण गर्नुहोस्: साँचो दाबी, स्वतन्त्र अपेक्षित मूल्य, व्यापार नियम प्रमाणीकरण, र मारिएका उत्परिवर्तनहरू।

आवेदन कार्य

तपाईंको आफ्नै परियोजनाबाट व्यापार नियम र यसको परीक्षणहरू समावेश भएको प्रकार्य आयात गर्नुहोस्। यदि सम्भव छ भने, एक उत्परिवर्तन उपकरण (स्ट्राइकर/पिटेस्ट/mutmut) चलाउनुहोस् र उत्परिवर्तन स्कोर मापन गर्नुहोस्; यदि त्यहाँ कुनै उपकरण छैन भने, "म्यानुअल उत्परिवर्तन नियन्त्रण" टेम्प्लेटको साथ कम्तिमा 8 उत्परिवर्तनहरू उत्पन्न गर्नुहोस् र तिनीहरूलाई म्यानुअल रूपमा प्रयास गर्नुहोस्। प्रत्येक जीवित उत्परिवर्तनको लागि, "किल जीवित उत्परिवर्तन" टेम्प्लेटको साथ नयाँ परीक्षण लेख्नुहोस्। अन्तमा, "रातो टोली" ढाँचाको साथ, हेर्नुहोस् कि एआईले कोड उत्पादन गर्न सक्छ जसले तपाइँको परीक्षणलाई मूर्ख बनाउँछ। तपाइँको सुरु र अन्त्य उत्परिवर्तन स्कोर (वा पकडिएको/कुल उत्परिवर्तन दर) रिपोर्ट गर्नुहोस्।

चेकलिस्ट

  • [] मैले परीक्षणको गुणस्तर उत्परिवर्तन स्कोर द्वारा मूल्याङ्कन गरें, कभरेज होइन।
  • [ ] मैले क्रिटिकल कोडको लागि उत्परिवर्तन परीक्षण (या त उपकरण वा म्यानुअल रूपमा) चलाएँ।
  • [ ] मैले प्रत्येक जीवित उत्परिवर्तनको लागि नयाँ परीक्षणहरू लेखें।
  • [ ] मैले AI लाई रातो टोलीको रूपमा प्रयोग गरें र मेरो परीक्षणहरूमा त्रुटिहरू खोजे।
  • मैले एआईको "तपाईंको परीक्षण राम्रो छ" प्रशंसालाई आश्वासनको रूपमा लिएको छैन।
  • [ ] मैले जाँच गरें कि प्रत्येक परीक्षणले वास्तविक दाबी, स्वतन्त्र अपेक्षित मूल्य, र व्यापार नियम प्रमाणित गर्दछ।