ஆதாயங்கள்:
- போலி நம்பிக்கையின் மூன்று முகங்களை அடையாளம் காணும் திறன் (உறுதிப்படுத்தாத, சுய-உறுதிப்படுத்தல், அற்பமான உறுதிப்பாடு) மற்றும் மாற்று மருந்துகளைப் பயன்படுத்துதல்
- கருவி அல்லது கை மூலம் சதவீத கவரேஜைக் காட்டிலும், பிறழ்வு சோதனை மற்றும் பிறழ்வு மதிப்பெண்ணை தரத்தின் துல்லியமான அளவீடாகப் பயன்படுத்துவதற்கான திறன்
- சோதனைக்கு எதிராக AI ஐ சிவப்பு அணியாக நிலைநிறுத்தும் திறன் மற்றும் பாராட்டு வலையில் விழாமல் சோதனை ஓட்டைகளை வேட்டையாடும் திறன்
இந்த தொகுதியின் மையத்தில் ஒரு தொடர்ச்சியான எச்சரிக்கை உள்ளது: ஒரு பச்சை ஒளிரும் சோதனை குழு தரத்திற்கு ஆதாரமாக இல்லை. உங்கள் சோதனைகள் உங்களுக்கு நம்பிக்கையை அளித்தால், அந்த நம்பிக்கை உண்மையானதா அல்லது போலியானதா என்பதை நீங்கள் தெரிந்து கொள்ள வேண்டும். செயற்கை நுண்ணறிவு (AI) யுகத்தில், இந்தக் கேள்வி முன்னெப்போதையும் விட மிகவும் முக்கியமானது, ஏனெனில் AI திரவம், மென்மையான தோற்றம் கொண்ட ஆனால் வெற்று சோதனைகளை தயாரிப்பதில் திறமையானது. தவறான நம்பிக்கை — சோதனைகள் பச்சையாக இருப்பதால், மென்பொருளை சரியானது என்று நம்புவது, உண்மையில் சோதனைகள் எதையும் சரிபார்க்காதபோது—ஒரு QA குழுவிற்கு ஏற்படக்கூடிய மிகவும் ஆபத்தான விஷயம்; ஏனென்றால் அது பிழைகள் இல்லை என்பதை மறைக்கிறது, ஆனால் நீங்கள் பிழைகளைப் பார்க்க முடியாது. இந்த அலகு முழு தொகுதியின் சரிபார்ப்புத் தத்துவத்தையும் ஒரு துறையாகக் கொண்டுவருகிறது: உங்கள் சோதனைகளைச் சோதித்தல்.
சோதனையின் தரத்தை அளவிடுவதற்கான தங்கத் தரநிலை: பிறழ்வு சோதனை
ஒரு சோதனை உண்மையில் பாதுகாக்கிறதா இல்லையா என்பதைப் புரிந்துகொள்வதற்கான மிக சக்திவாய்ந்த வழி பிறழ்வு சோதனை (பிறழ்வு சோதனை - மூலக் குறியீட்டில் வேண்டுமென்றே சிறிய சிதைவுகள்/பிறழ்வுகளை உருவாக்கும் மற்றும் சோதனைகள் இந்த சிதைவுகளைக் கண்டறிகிறதா என்பதை அளவிடும் ஒரு நுட்பம்). தர்க்கம் எளிது: நீங்கள் வேண்டுமென்றே குறியீட்டை உடைத்தால் (ஒரு + ஆக -, a > ஆக >=, உண்மையை பொய்யாக மாற்றினால்), ஒரு நல்ல சோதனைத் தொகுப்பு அந்த ஊழலைப் பிடித்து சிவப்பு நிறமாக மாறும். அவ்வாறு செய்யாவிட்டால், அந்த இடையூறு பிழைத்திருக்கும் விகாரமாகும் - எனவே உங்கள் சோதனைகள் உண்மையில் அந்த நடத்தையைப் பாதுகாக்கவில்லை.
பிறழ்வு மதிப்பெண் = பிறழ்வு கொல்லப்பட்டது / மொத்த பிறழ்வு. 90% வரி கவரேஜ் கொண்ட ஒரு தொகுப்பு 40% பிறழ்வு மதிப்பெண்ணைக் கொண்டிருக்கலாம்; கோடுகள் செயல்படுகின்றன, ஆனால் நடத்தை சரிபார்க்கப்படவில்லை என்பதை இது குறிக்கிறது. பிறழ்வு மதிப்பெண் என்பது சதவீத கவரேஜைக் காட்டிலும் மிகவும் நேர்மையான தர அளவீடு ஆகும்.
உதவிக்குறிப்பு: தானியங்கி பிறழ்வு கருவிகள் உள்ளன (ஜாவாவிற்கு PIT/Pitest, JavaScript/TypeScriptக்கு ஸ்ட்ரைக்கர், .NETக்கு Stryker.NET, பைத்தானுக்கு mutmut). இவை தானாகவே நூற்றுக்கணக்கான பிறழ்வுகளை உருவாக்கி சோதிக்கின்றன. உங்களிடம் கருவி இல்லை என்றால், கையேடு "குறியீடு சோதனையை உடைத்தல்" முறை கூட முக்கியமான செயல்பாடுகளுக்கு விலைமதிப்பற்றது.
போலி நம்பிக்கையின் மூன்று முகங்களும் அதன் மாற்று மருந்தும்
போலி நம்பிக்கை வடிவம்
அறிகுறி
மாற்று மருந்து
உறுதி இல்லாமல் சோதிக்கவும்
குறியீடு வேலை செய்கிறது, எதுவும் சரிபார்க்கப்படவில்லை
ஒவ்வொரு சோதனையிலும் உண்மையான உறுதிப்பாடு; பிறழ்வுடன் சோதனை
தன்னை உறுதிப்படுத்தும் சோதனை
எதிர்பார்க்கப்பட்டது = குறியீட்டின் வெளியீடு
எதிர்பார்க்கப்படும் மதிப்பை சுயாதீனமாக கணக்கிடுங்கள்
அற்பமான கூற்று
"பூஜ்யமாக இல்லை", "200 திரும்பியது"
வணிக விதி/உண்மையான முடிவைச் சரிபார்க்கவும்
உயர் நோக்கம் தவறு
90% கோடுகள், குறைந்த பாதுகாப்பு
பிறழ்வு மதிப்பெண்ணைப் பாருங்கள்
பலவீனமான சோதனை சகிப்புத்தன்மை
"மீண்டும் சிக்கிக்கொண்டேன், கடந்து செல்லுங்கள்"
மூல காரணம் + உறுதியான சோதனை
AI ஐ "சிவப்பு அணியாக" பயன்படுத்துதல்
AI ஆனது போலி நம்பிக்கையை உருவாக்குவதோடு அதை வேட்டையாடுவதில் சக்திவாய்ந்த கூட்டாளியாகவும் இருக்கும். உங்கள் சொந்த சோதனைகளுக்கு எதிராக AI ஐ சிவப்பு அணியாகப் பயன்படுத்தவும்: "இந்தச் சோதனைகளில் தேர்ச்சி பெற்ற ஆனால் தவறான குறியீட்டை எழுதுங்கள்" அல்லது "இந்த சோதனைகளை ஏமாற்றும் ஒரு துணையைக் கண்டறியவும்" என்று கேட்கவும். AI உங்கள் சோதனைகளில் ஓட்டைகளைக் கண்டறிந்தால், அந்த ஓட்டைகள் உண்மையான ஆபத்துகளாகும்.
எச்சரிக்கை: AIயிடம் "எனது சோதனைத் தரம் நன்றாக உள்ளதா?" என்று கேட்காதீர்கள். மற்றும் "ஆம், அருமை" என்ற பதிலை உத்தரவாதமாக எடுத்துக் கொள்ளுங்கள். AI அன்பாக இருக்க முனைகிறது. அதற்கு பதிலாக, ஒரு உறுதியான பணிக்கு AIக்கு சவால் விடுங்கள்: "இந்த சோதனைகளில் தேர்ச்சி பெறும் பிழையை உருவாக்கவும்." அது அதை உருவாக்க முடிந்தால், உங்கள் சோதனைகள் அந்த பிழைக்கு கண்மூடித்தனமாக இருக்கும்.
ஸ்கோரின் சமமான பிறழ்வுகள் மற்றும் வரம்புகள்
பிறழ்வு சோதனை சக்தி வாய்ந்தது, ஆனால் அது ஒரு கேட்ச் உள்ளது: சில பிறழ்வுகள் குறியீட்டின் நடத்தையை மாற்றாது. இவை சமமான பிறழ்வுகள் என்று அழைக்கப்படுகின்றன (சமமான பிறழ்வு - சிதைந்த குறியீடு, அசல் போலவே அதே முடிவை உருவாக்கும் பிறழ்வு). எடுத்துக்காட்டாக, ஒருபோதும் பயன்படுத்தப்படாத மாறியின் ஆரம்ப மதிப்பை மாற்றுவது வெளியீட்டைப் பாதிக்காது; எந்த சோதனையும் இதை பிடிக்க முடியாது மற்றும் பிடிக்கக்கூடாது. எனவே, 100% பிறழ்வு மதிப்பெண் பெரும்பாலும் நடைமுறையில் அடைய முடியாதது மற்றும் இலக்கு அல்ல. கையால் சமமான பிறழ்வுகளை களையெடுப்பது உழைப்பு தீவிரமானது; எனவே பிறழ்வு மதிப்பெண்ணை ஒரு முழுமையான தேர்வு மதிப்பெண்ணாக படிக்க வேண்டாம், ஆனால் "எனது சோதனைகள் உண்மையில் பாதுகாக்கிறதா?"
நடைமுறை அணுகுமுறை இதுதான்: முழு குறியீடு அடிப்படையிலும் தொடர்ந்து பிறழ்வு சோதனையை இயக்குவதற்குப் பதிலாக, அதிக ஆபத்து மற்றும் மிகவும் சிக்கலான வணிக விதிகளைக் கொண்ட தொகுதிக்கூறுகளில் அதை இயக்கவும். இந்த தொகுதிகளில் எஞ்சியிருக்கும் பிறழ்வுகளை ஒவ்வொன்றாக ஆராயுங்கள்; இது உண்மையான இடைவெளியாக இருந்தால், ஒரு சோதனையைச் சேர்க்கவும்; அது ஒரு சமமான பிறழ்வாக இருந்தால், அதை நியாயப்படுத்திக் குறியிட்டு அனுப்பவும். எஞ்சியிருக்கும் பிறழ்வு சமமானதா என்பதை மதிப்பிடுவதில் AI ஆரம்பத் திரையிடலைச் செய்ய முடியும்; ஆனால் குறியீடு என்ன செய்கிறது என்பதை அறிந்த உங்களால் இறுதி முடிவு எடுக்கப்படும்.
எச்சரிக்கை: பிறழ்வு சோதனையானது கணக்கீட்டு ரீதியாக விலை உயர்ந்தது (ஒவ்வொரு பிறழ்வுக்கும் தொடர்புடைய அனைத்து சோதனைகளும் மீண்டும் இயக்கப்படும்). எனவே ஒரு பொதுவான மற்றும் நியாயமான மூலோபாயம், ஒவ்வொரு இணைப்பிற்கும் பதிலாக, முக்கியமான தொகுதிகளுக்கு வாராந்திர அல்லது முன்-வெளியீட்டு ஆழமான காசோலையாக திட்டமிடுவதாகும்.
பலவீனமான வரியில் / வலுவான வரியில்
பலவீனம்: "எனது சோதனைகள் போதுமானதா?"
வலிமையானது: "இந்தச் செயல்பாடு மற்றும் சோதனைத் தொகுப்பிற்கு சிவப்புக் குழுவாகச் செயல்படவும். (1) கொல்லப்படக்கூடிய குறியீட்டில் 8 பிறழ்வுகளை உருவாக்கவும் (ஆப்பரேட்டர் மாற்று, எல்லை மாற்றம், நிபந்தனை தலைகீழ், திரும்ப மதிப்பு மாற்று). (2) ஒவ்வொரு பிறழ்வுக்கும், இருக்கும் சோதனைகளில் எது பிடிக்கும், எது கொல்லப்படாது என்பதைக் குறிப்பிடவும். (3) ஒவ்வொரு பிறழ்வுக்கும், அதைக் காட்டலாம். இந்த சோதனைகள் அனைத்திலும் தேர்ச்சி பெறுகிறது ஆனால் வணிக விதி+சோதனைகளை மீறுகிறது: [ஒட்டு]"
சக்திவாய்ந்த உடனடி; இது AI ஐ ஒரு சோதனை முறியடிக்கும் தேர்வாளராக நிலைநிறுத்துகிறது, ஒரு பாராட்டு இயந்திரம் அல்ல.
நகலெடுக்கக்கூடிய நான்கு வார்ப்புருக்கள்
1) கைமுறை பிறழ்வு கட்டுப்பாடு:
இந்தக் குறியீட்டிற்கு 8 குறிப்பிடத்தக்க பிறழ்வுகளை (சிறிய வேண்டுமென்றே இடையூறுகள்) உருவாக்கவும்: எண்கணித ஆபரேட்டர் மாற்றீடு, ஒப்பீட்டு வரம்பு (> vs >=), லாஜிக்கல் இன்வெர்ஷன், ரிட்டர்ன்/கான்ஸ்டன்ட் மாற்று, நிபந்தனை ஸ்கிப்பிங். ஒவ்வொரு பிறழ்வுக்கும், கிடைக்கக்கூடிய சோதனைகளில் எது பிடிக்கும் இல்லையா என்பதைக் கணிக்கவும். குறியீடு+சோதனைகள்: [ஒட்டு]
2) எஞ்சியிருக்கும் பிறழ்வைக் கொல்வது:
பின்வரும் பிறழ்வு சோதனை அறிக்கையில் எஞ்சியிருக்கும் (பிடிக்கப்படாத) பிறழ்வுகள் உள்ளன: [பட்டியல்/அறிக்கை]. ஒவ்வொன்றிற்கும், அந்த பிறழ்வைக் கொல்லும் குறைந்தபட்ச சோதனையை எழுதுங்கள் (அவ்வாறு உடைக்கப்படும் போது குறியீடு சிவப்பு நிறமாக மாறும்). சோதனை எந்த நடத்தையை உறுதிப்படுத்துகிறது என்பதைப் பற்றி கருத்து தெரிவிக்கவும்.
3) சிவப்பு அணி - இரத்த பரிசோதனை:
பின்வரும் அனைத்து சோதனைகளிலும் தேர்ச்சி பெற்ற, ஆனால் பின்வரும் வணிக விதியை மீறும் குறியீட்டை எழுத முடியுமா: [வணிக விதி]. அப்படியானால், இந்த சோதனைகளில் உள்ள எந்த ஓட்டை இதை அனுமதிக்கிறது? அந்த ஓட்டையை மூடும் சோதனையைச் சேர்க்கவும். சோதனைகள்: [ஒட்டு]
4) சோதனை தர ஆய்வு:
தரத்திற்கு இந்த சோதனைத் தொகுப்பைச் சரிபார்க்கவும். ஒவ்வொரு சோதனைக்கும் டிக் செய்யவும்:- உண்மையான உறுதிப்பாடு உள்ளதா அல்லது அது ஆதாரமா?- எதிர்பார்க்கப்படும் மதிப்பு சுயாதீனமானதா, குறியீட்டிலிருந்து பெறப்பட்டதா?- இது வணிக விதியை அல்லது அற்பமான ஒன்றைச் சரிபார்க்கிறதா? இறுதியாக மதிப்பிடப்பட்ட "உண்மையான உறுதியான மதிப்பெண்" மற்றும் 3 பலவீனமான சோதனைகளைக் கொடுங்கள். சோதனைகள்: [ஒட்டு]
மூன்று சிறிய வழக்குகள்
வழக்கு 1 — கவரேஜ் 92%, பிறழ்வு மதிப்பெண் 38%. ஒரு குழு அதிக கவரேஜை நம்பியிருந்தது. ஸ்ட்ரைக்கருடன் பிறழ்வு சோதனை நடத்தப்பட்டபோது, மதிப்பெண் 38%: உருவாக்கப்பட்ட பிறழ்வுகளில் பெரும்பாலானவை உயிர் பிழைத்தன. சோதனைகள் கோடுகளை இயக்கவில்லை மற்றும் நடத்தை சரிபார்க்கவில்லை என்பதற்கு இது சான்றாகும். தரத்தை சோதிக்க குழு மூன்று வாரங்கள் முதலீடு செய்தது; பிறழ்வு மதிப்பெண் 81% ஆக அதிகரித்தது, மேலும் இரண்டு உண்மையான கணக்கீடு பிழைகள் அடுத்த வெளியீட்டில் இந்த மாட்டிறைச்சி சோதனைகளால் பிடிக்கப்பட்டன.
வழக்கு 2 - AI சோதனையை ஏமாற்றியது. "சிவப்பு அணி" டெம்ப்ளேட்டுடன், ஒரு நிபுணர் ஏற்கனவே உள்ள சோதனைகளில் தேர்ச்சி பெற்ற ஆனால் தள்ளுபடி விதியை மீறிய குறியீட்டை AI யிடம் கேட்டார். AI எப்போதும் பூஜ்ஜியத்தின் தள்ளுபடியை வழங்கும் குறியீட்டை எழுதியது - மேலும் அனைத்து சோதனைகளும் பச்சை நிறத்தில் இருந்தன, ஏனெனில் எந்த சோதனைகளும் உண்மையான தள்ளுபடி மதிப்பை சரிபார்க்கவில்லை. இடைவெளி காணப்பட்டது, உண்மையான உறுதிப்பாடுகள் சேர்க்கப்பட்டன.
வழக்கு 3 - பாராட்டு பொறி. ஒரு ஜூனியர் சோதனையாளர் AIயிடம், "எனது சோதனைகள் நன்றாக உள்ளதா?" "மிக விரிவானது" என்ற பதிலைக் கேட்டு நிம்மதியடைந்தேன். அவரது மூத்த சக ஊழியர் அதே சோதனைகளை "சோதனை தர தணிக்கை" டெம்ப்ளேட்டைப் பயன்படுத்தி தணிக்கை செய்தார்; 20 சோதனைகளில் 12 அலங்காரம் (உறுதிப்படுத்துதல் அல்லது குப்பை இல்லாமல்) என்று மாறியது. சரியான கேள்வி சரியான பதிலை தந்தது.
பொதுவான தவறுகள்
- தரத்திற்கான தவறான நோக்கம். அதிக வரிசை கவரேஜை நம்பி, பிறழ்வு மதிப்பெண்ணைப் பார்க்கவே இல்லை.
- AI இன் பாராட்டுகளை நம்புதல். "உங்கள் சோதனைகள் நன்றாக உள்ளதா?" மற்றும் நேர்மறையான பதிலை உத்தரவாதமாக கருதுகிறது.
- குறியீட்டிலிருந்து எதிர்பார்க்கப்படும் மதிப்பைப் பெறுதல். தவறான குறியீட்டை உறுதிப்படுத்தும் சுய சரிபார்ப்பு சோதனைகள்.
- அற்பமான கூற்றுகளில் திருப்தியடையுங்கள். "பூஜ்யமாக இல்லை", "200 திரும்பியது" போன்ற உண்மையான விதியை சரிபார்க்காத காசோலைகள்.
- எஞ்சியிருக்கும் பிறழ்வுகளைப் புறக்கணித்தல். பிறழ்வு அறிக்கையில் பிடிபடாததை புறக்கணித்தல்.
- முக்கியமான குறியீட்டை கைமுறையாக மாற்றவும் முயற்சிக்கவில்லை. கருவி கிடைக்கவில்லை என்றால் "குறியீட்டை உடைத்து சோதனை" படியைத் தவிர்க்கவும்.
சுருக்கமாக
சோதனைகள் பச்சையாக இருப்பதால் மென்பொருள் சரியானது என்று போலி நம்பிக்கை நம்புகிறது; அதேசமயம் சோதனைகள் எதையும் உறுதிப்படுத்தாது. இதை அளவிடுவதற்கான தங்கத் தரநிலை பிறழ்வு சோதனை: வேண்டுமென்றே குறியீட்டை உடைத்து, சோதனைகள் அதைப் பிடிக்கிறதா என்பதை அளவிடுதல். பிறழ்வு மதிப்பெண் என்பது சதவீத கவரேஜைக் காட்டிலும் மிகவும் நேர்மையான தர அளவீடு ஆகும். AI இரண்டும் போலி நம்பிக்கையை உருவாக்குகிறது மற்றும் அதை வேட்டையாடுவதில் சக்திவாய்ந்த சிவப்பு அணியாக மாறுகிறது - "இந்த சோதனைகளில் தேர்ச்சி பெறும் ஒரு பிழையை உருவாக்குங்கள்" என்று கேளுங்கள். உங்கள் சோதனைகளைச் சோதிக்கவும்: உண்மையான உறுதிப்பாடு, சுயாதீன எதிர்பார்க்கப்படும் மதிப்பு, வணிக விதி சரிபார்ப்பு மற்றும் கொல்லப்பட்ட பிறழ்வுகள்.
விண்ணப்ப பணி
உங்கள் சொந்த திட்டத்திலிருந்து வணிக விதி மற்றும் அதன் சோதனைகள் அடங்கிய செயல்பாட்டை இறக்குமதி செய்யவும். முடிந்தால், ஒரு பிறழ்வு கருவியை (ஸ்ட்ரைக்கர்/பிடெஸ்ட்/மட்மட்) இயக்கி, பிறழ்வு மதிப்பெண்ணை அளவிடவும்; கருவி இல்லை என்றால், "கையேடு பிறழ்வு கட்டுப்பாடு" டெம்ப்ளேட்டுடன் குறைந்தது 8 பிறழ்வுகளை உருவாக்கி அவற்றை கைமுறையாக முயற்சிக்கவும். எஞ்சியிருக்கும் ஒவ்வொரு பிறழ்வுக்கும், "உயிர் பிழைக்கும் பிறழ்வைக் கொல்லுங்கள்" டெம்ப்ளேட்டுடன் ஒரு புதிய தேர்வை எழுதவும். இறுதியாக, "சிவப்பு அணி" வடிவத்துடன், உங்கள் சோதனைகளை ஏமாற்றும் குறியீட்டை AI உருவாக்க முடியுமா என்பதைப் பார்க்கவும். உங்கள் தொடக்க மற்றும் முடிவின் பிறழ்வு மதிப்பெண்ணை (அல்லது பிடிக்கப்பட்ட/மொத்த பிறழ்வு விகிதம்) தெரிவிக்கவும்.
சரிபார்ப்பு பட்டியல்
- [ ] நான் சோதனை தரத்தை பிறழ்வு மதிப்பெண் மூலம் மதிப்பீடு செய்தேன், கவரேஜ் அல்ல.
- [ ] முக்கியமான குறியீட்டிற்கான பிறழ்வு சோதனையை (கருவி மூலமாகவோ அல்லது கைமுறையாகவோ) இயக்கினேன்.
- [ ] எஞ்சியிருக்கும் ஒவ்வொரு பிறழ்வுக்கும் புதிய சோதனைகளை எழுதினேன்.
- [ ] நான் AI ஐ சிவப்பு அணியாகப் பயன்படுத்தினேன் மேலும் எனது சோதனைகளில் ஓட்டைகளைத் தேடினேன்.
- [ ] AI இன் "உங்கள் சோதனைகள் நன்றாக உள்ளன" என்ற புகழை நான் உறுதியளிப்பதாக எடுத்துக்கொள்ளவில்லை.
- [ ] ஒவ்வொரு சோதனையும் உண்மையான உறுதிப்பாடு, சுயாதீன எதிர்பார்க்கப்படும் மதிப்பு மற்றும் வணிக விதி ஆகியவற்றைச் சரிபார்க்கிறதா என்பதைச் சரிபார்த்தேன்.