ஆதாயங்கள்:
- AI உடன் அலகு சோதனை, விளிம்பு நிலைகள் மற்றும் கவரேஜ் இடைவெளி பகுப்பாய்வு ஆகியவற்றை உருவாக்கும் திறன்
- குறியீட்டின் தற்போதைய நடத்தை அல்ல, விவரக்குறிப்பின் அடிப்படையில் சோதனை எதிர்பார்ப்புகளை அச்சிடும் திறன்
- ஒரு சோதனை உண்மையில் பிழைகளை உட்செலுத்துவதன் மூலம் பாதுகாக்கிறதா என்பதை சோதிக்கும் திறன்
சோதனைகளை எழுதுவது என்பது பெரும்பாலான டெவலப்பர்கள் தள்ளிப்போடும் மிகவும் மதிப்பு-உற்பத்தி செய்யும் பணிகளில் ஒன்றாகும். ஒரு நல்ல சோதனைத் தொகுப்பு, குறியீடு எதிர்பார்த்தபடி செயல்படுகிறது என்பதற்கான சான்று மற்றும் எதிர்கால மாற்றங்களுக்கான உயிர்நாடியாகும். பிரச்சனை என்னவென்றால், சோதனைகளை எழுதுவது மீண்டும் மீண்டும் மற்றும் நேரத்தை எடுத்துக்கொள்ளும் - AI பிரகாசிக்கும் வேலை. ஆனால் ஒரு கேட்ச் உள்ளது: AI பெரும்பாலும் குறியீட்டின் தற்போதைய நடத்தையை சோதிக்கிறது, அது இருக்க வேண்டிய நடத்தை அல்ல. இந்த வித்தியாசத்தை நிர்வகிப்பது இந்த அலகின் சாராம்சம்.
இந்த யூனிட்டில், யூனிட் டெஸ்டிங் (தனியாக, தனிமையில் ஒரு செயல்பாட்டைச் சோதிக்கும் சோதனை), எட்ஜ் கேஸ் சோதனைகள் மற்றும் AI உடன் சோதனைத் தரவை உருவாக்குதல் ஆகியவற்றைக் கற்றுக்கொள்வீர்கள்; சோதனை கவரேஜில் இடைவெளிகளை மூடுதல்; AI சோதனைகளை கண்மூடித்தனமாக நம்புவது ஏன் ஆபத்தானது.
சோதனையின் இரு பக்கங்கள்: ஃபிக்சிங் பிஹேவியர் vs. சரிபார்ப்பு
ஒரு சோதனை இரண்டு வெவ்வேறு நோக்கங்களுக்கு உதவும். முதலாவது சரிபார்ப்பு: குறியீடு சரியானதா, விவரக்குறிப்புடன் இணங்குகிறதா என்று சோதிக்கிறது. இரண்டாவது பின்னடைவு பாதுகாப்பு: இது இன்று குறியீட்டின் நடத்தையை முடக்குகிறது, எனவே யாராவது தற்செயலாக நாளை அதை மாற்றினால், சோதனை உடைந்து அறிவிக்கும்.
AI பிந்தையதில் மிகவும் நல்லது; இது குறியீட்டைப் பார்த்து, "இப்போது என்ன செய்கிறது" என்று சோதிக்கும் கேஸ்களை உருவாக்குகிறது. ஆனால் தொடக்கத்திலிருந்தே குறியீடு தவறாக இருந்தால், AI அந்த தவறான நடத்தையை "சரியானது" என்று பொருத்த முடியும். எனவே AI உருவாக்கும் ஒவ்வொரு சோதனையின் உறுதிமொழியையும் நீங்கள் மதிப்பாய்வு செய்ய வேண்டும்: "குறியீடு 42 ஐத் தருகிறது மற்றும் சோதனை 42 ஐ எதிர்பார்க்கிறது" என்பது 42 சரியான பதில் என்று அர்த்தமல்ல.
எச்சரிக்கை: AI சோதனையில் தேர்ச்சி பெற்றால், குறியீடு "செயல்படுகிறது" என்று அர்த்தமல்ல; இது "AI எதிர்பார்க்கும் விதத்தில் செயல்படுகிறது" என்று அர்த்தம். விவரக்குறிப்பைப் பார்த்து எதிர்பார்ப்பு சரியானதா இல்லையா என்பதை நீங்கள் தீர்மானிக்கிறீர்கள்.
படிப்படியாக: AI உடன் வலுவான சோதனைகளை எழுதுதல்
- குறியீட்டை மட்டும் குறிப்பிடாமல், விவரக்குறிப்பைக் கொடுங்கள். "இந்த செயல்பாடு இதைச் செய்ய வேண்டும்" என்ற தகவலைச் சேர்த்தால், AI சரியான எதிர்பார்ப்பை எழுதலாம்; நீங்கள் குறியீட்டை வழங்கினால், அது தற்போதைய நடத்தையை சோதிக்கும்.
- விளிம்பு வழக்குகளைக் கேளுங்கள். வெற்று, பூஜ்யம், பூஜ்யம், எதிர்மறை, மிகப் பெரியது, மோசமான வடிவம், ஒத்திசைவு - மகிழ்ச்சியான பாதையை வெளிப்படையாகக் கோருங்கள்.
- சோதனை கட்டமைப்பையும் பாணியையும் குறிப்பிடவும். "பைடெஸ்டைப் பயன்படுத்து", "ஏற்பாடு-செயல்-உறுதிப்படுத்தல் முறை", "ஒவ்வொரு சோதனையும் ஒரு விஷயத்தைச் சோதிக்கட்டும்" போன்றவை.
- எதிர்பார்ப்புகளைச் சரிபார்க்கவும் (உறுதிப்படுத்தல்). ஒவ்வொரு வலியுறுத்தலும் சரியான மதிப்பைச் சரிபார்க்கும் விவரக்குறிப்புடன் ஒப்பிடுக.
- நோக்கத்தில் இடைவெளிகளை மூடு. ஏற்கனவே உள்ள சோதனைகளைக் கொடுத்து, "எந்த கிளைகள் மற்றும் வழக்குகள் சோதிக்கப்படவில்லை?" உன்னைக் கேட்கச் செய்; பின்னர் தயாரிக்கப்பட்ட கூடுதல் சோதனைகளை சரிபார்க்கவும்.
மூன்று சிறிய வழக்குகள்
வழக்கு 1 - கவரேஜ் 52% முதல் 85% வரை. ஒரு சேவை தொகுதியின் சோதனை கவரேஜ் 52% ஆகும். குழு ஏற்கனவே உள்ள சோதனைகளை AI க்கு அளித்தது, அது சோதிக்கப்படாத கிளைகளை பட்டியலிட்டு அவற்றுக்கான சோதனைகளை உருவாக்கியது. மனித மதிப்பாய்வின் மூலம், கவரேஜ் 85% ஆக அதிகரித்தது; இந்தச் செயல்பாட்டில், இதுவரை சோதிக்கப்படாத ஒரு பிழைக் கிளையில் ஒரு உண்மையான பிழையை (தவறான பிழைக் குறியீட்டைத் திரும்பப் பெற்ற பாதை) AI கண்டறிந்தது.
வழக்கு 2 - தவறான எதிர்பார்ப்பு நிர்ணய பொறி. ஒரு பணம் சுற்றிய செயல்பாடு உண்மையில் தவறானது; 2.675 க்கு 2.67 க்கு பதிலாக, 2.68 க்கு பதிலாக 2.67 ரவுண்டிங் ஆனது. AI குறியீட்டைப் பார்த்து, assert round_money(2.675) == 2.67 - பிழையை "உண்மை" என்று முடக்கியது. டெவலப்பர் விவரக்குறிப்பைப் படித்தபோது, அவர் எதிர்பார்ப்பை சரிசெய்து உண்மையான பிழையைப் பிடித்தார். விதியை சோதிப்பது, குறியீடு அல்ல, வித்தியாசத்தை ஏற்படுத்தியது.
வழக்கு 3 - எட்ஜ் ஸ்டேட் வெடிப்பு. தேதி வரம்பு செயல்பாட்டிற்கான "எட்ஜ் கேஸ்கள்" மட்டும் AIயிடம் கேட்கும் போது; இது தொடக்கம்=முடிவு, தலைகீழ் இடைவெளி, லீப் ஆண்டு பிப்ரவரி 29, வெவ்வேறு நேர மண்டலங்கள் மற்றும் பூஜ்ய இடைவெளி போன்ற 8 நிகழ்வுகளை உருவாக்கியது. இவற்றில் இரண்டு (தலைகீழ் இடைவெளி மற்றும் லீப் ஆண்டு) உண்மையில் பிழையை ஏற்படுத்துகின்றன. இந்த வழக்குகளை கைமுறையாக பரிசீலிப்பது பெரும்பாலும் தவிர்க்கப்படுகிறது; AI இங்கு "எட்ஜ்-கேஸ் மூளைச்சலவை" கூட்டாளராக மாறியது.
நான்கு நகலெடுக்கக்கூடிய டெம்ப்ளேட்கள்
விவரக்குறிப்பு அடிப்படையிலான சோதனை உருவாக்கம்:
பங்கு: சோதனைகளை எழுதும் டெவலப்பர். கட்டமைப்பு: {{pytest/JUnit/Jest...}}. செயல்பாடு என்ன செய்ய வேண்டும் (குறிப்பிடுதல்): {{rule}}பின்வரும் செயல்பாட்டிற்கான சோதனைகளை எழுதவும். குறியீட்டின் தற்போதைய வெளியீடு அல்ல, விவரக்குறிப்பின்படி எதிர்பார்ப்புகளை எழுதவும். மகிழ்ச்சியான பாதை + குறைந்தது 4 எட்ஜ் கேஸ்களைச் சேர்க்கவும். ஒவ்வொரு சோதனையும் ஒரு விஷயத்தைச் சோதிக்கட்டும், விளக்கமான பெயரைப் பயன்படுத்தவும். {{செயல்பாடு}}
எட்ஜ் கேஸ் மூளைச்சலவை:
இந்தச் செயல்பாட்டிற்கான சோதனையில் (பூஜ்ய, பூஜ்ய, முறிவுப் புள்ளிகள், மோசமான வடிவம், ஒத்திசைவு, வெளிப்புறப் பிழை) சோதனை செய்ய வேண்டிய விளிம்பு/தோல்வி வழக்குகளைப் பட்டியலிடுங்கள். ஒவ்வொரு சந்தர்ப்பத்திற்கும்: உள்ளீடு, எதிர்பார்க்கப்படும் நடத்தை. இன்னும் குறியீட்டை எழுத வேண்டாம், பட்டியலிடுங்கள்.{{function}}
கவரேஜ் இடைவெளி பகுப்பாய்வு:
செயல்பாடுகள் மற்றும் கிடைக்கக்கூடிய சோதனைகள் கீழே உள்ளன. எந்த கிளைகள், நிபந்தனைகள் மற்றும் வழக்குகள் சோதிக்கப்படவில்லை? குறைபாடுகளை பட்டியலிட்டு, குறைபாடுகளுக்கு மட்டும் புதிய தேர்வுகளை எழுதுங்கள். ஏற்கனவே உள்ளவற்றை மீண்டும் செய்ய வேண்டாம். செயல்பாடு:{{function}}சோதனைகள்:{{existing_tests}}
சோதனை தரவு / போலி பொருள் உருவாக்கம்:
{{function/service}} சோதனைகளுக்கான யதார்த்தமான சோதனைத் தரவை உருவாக்கவும்: சரியான மாதிரிகள், பார்டர் மாதிரிகள் மற்றும் தவறான மாதிரிகள் தனித்தனியாக. வெளிப்புற சார்பு {{X}}க்கு ஒரு எளிய போலி நடத்தையை பரிந்துரைக்கவும். உண்மையான ரகசிய தரவு/PII ஐப் பயன்படுத்துதல்; போலியான தரவுகளை உருவாக்குங்கள்.
பலவீனமான வரியில் / வலுவான வரியில்
பலவீனம்: "இந்தச் செயல்பாட்டிற்கு ஒரு சோதனை எழுதவும்."
வலுவானது: "பைடெஸ்டுடன். செயல்பாடு apply_discount(மொத்தம், சதவீதம்) - விதி: தள்ளுபடி 0%–30% ஆக இருக்க வேண்டும், வரம்புக்கு வெளியே ValueError ஐ எறிய வேண்டும், முடிவு 2 தசமங்களாக இருக்க வேண்டும். எதிர்பார்ப்புகளை இந்த விதி மூலம் எழுதவும் (குறியீடு மூலம் அல்ல). மகிழ்ச்சியான பாதை + இந்த விளிம்பு நிலைகள்: 0%, மொத்தம். 31 30 [குறியீடு]"
அவர் வலுவான வெளியீட்டு விதியை அளித்து, "குறியீட்டை அல்ல, விதியின்படி எதிர்பார்ப்பை எழுதுங்கள்" என்று கூறுகிறார்; இந்த ஒற்றை வாக்கியம் AI சரிசெய்தல் தவறான நடத்தையின் பொறியை மூடுகிறது.
சோதனை வகை
AI பங்களிப்பு
மனித கட்டுப்பாடு
மகிழ்ச்சியான சாலை அலகு சோதனை
வேகமான எலும்புக்கூடு
எதிர்பார்ப்பு சரியா?
விளிம்பு வழக்குகள்
விரிவான மூளைச்சலவை
பொருத்தமற்றதை அகற்றவும்
ஸ்கோப் இடைவெளி நிரப்புதல்
தவிர்க்கப்பட்ட கிளைகளைக் கண்டறிகிறது
முக்கியத்துவத்தை உறுதிப்படுத்தவும்
சோதனை தரவு / போலி
யதார்த்தமான மாதிரியை உருவாக்குகிறது
PII இல்லை, ரியலிசம் கட்டுப்பாடு
சோதனைகள் தரத்தை நிர்வகிக்கின்றன, உத்தரவாதம் அல்ல
உயர் சோதனை கவரேஜ் நம்பிக்கையை அளிக்கிறது, ஆனால் இது தவறாக வழிநடத்தும்: 100 சதவீத கவரேஜ் என்பது "ஒவ்வொரு வரியும் இயக்கப்பட்டது", "ஒவ்வொரு வரியும் சரியானது" அல்ல. AI உடன் கவரேஜை அதிகரிப்பது எளிது; அர்த்தமுள்ள எதிர்பார்ப்புகளை எழுதுவதே உண்மையான மதிப்பு. ஒரு சோதனையின் மதிப்பு என்பது குறியீடு உடைக்கப்படும்போது அதை உடைத்து உங்களை எச்சரிக்கும் திறன் ஆகும். அதனால்தான் AI-உருவாக்கப்பட்ட சோதனைகள் "குறியீடு மாறும்போது உண்மையில் உடைகிறதா?" என்ற கேள்வியை அடிப்படையாகக் கொண்டது. கேள்வியுடன் அதை சோதிக்கவும்; வேண்டுமென்றே ஒரு கோட்டை உடைத்து, சோதனை இடைவேளையைப் பார்ப்பது (பிறழ்வு யோசனை) சோதனை வேலை செய்தது என்பதற்கு சான்றாகும்.
உதவிக்குறிப்பு: AI எழுதும் சோதனை செயல்படுகிறதா என்பதைப் பார்க்க, குறியீட்டில் ஒரு சிறிய பிழையை உருவாக்கவும் (எ.கா. a + to a -) மற்றும் சோதனை முறிந்ததா என்பதைப் பார்க்கவும். அது உடைக்கவில்லை என்றால், அந்த சோதனை உங்களைப் பாதுகாக்காது.
பொதுவான தவறுகள்
- ஆட்சியைக் கொடுக்காமல் சோதனை கேட்கிறது. மாதிரி தற்போதைய நடத்தை உறைகிறது; பிழையை "உண்மை" என்று சரிசெய்கிறது.
- எதிர்பார்ப்புகளைப் படிக்காமல் ஏற்றுக்கொள்வது. உறுதிமொழிகள் சரியான மதிப்பை சரிபார்க்கின்றனவா என்பதை நீங்கள் சரிபார்க்கவில்லை என்றால், சோதனை தவறாக வழிநடத்தும்.
- மகிழ்ச்சியான பாதையை சோதிக்கிறது. உண்மையான பிழைகள் விளிம்புகளில் வாழ்கின்றன; எட்ஜ் கேஸ்களை வெளிப்படையாகக் கேளுங்கள்.
- நோக்கத்திற்கான நோக்கத்தைத் தவறாகப் புரிந்துகொள்வது. அதிக சதவீதம் சரியான நடத்தைக்கு உத்தரவாதம் இல்லை.
- உண்மையான/மறைக்கப்பட்ட தரவை சோதனைத் தரவாக உருவாக்குதல். வாடிக்கையாளர் தரவு அல்லது ரகசியங்கள் சோதனை மற்றும் சேமிப்பகத்தில் நுழையக்கூடாது; செயற்கைத் தரவை உருவாக்கவும்.
சுருக்கமாக
AI ஆனது சோதனைகளை எழுதுவதில் இருந்து மீண்டும் மீண்டும் வரும் சுமையை எடுத்துக்கொள்கிறது: இது வேகமான எலும்புக்கூடுகள், விளிம்பு நிலைகளின் பெரிய பட்டியல்கள் மற்றும் கவரேஜ் இடைவெளி பகுப்பாய்வுகளை உருவாக்குகிறது. ஆனால் மிக முக்கியமான புள்ளி எதிர்பார்ப்புகள்: AI ஆனது குறியீட்டின் தற்போதைய நடத்தையை சோதிக்க முனைகிறது, அதேசமயம் சோதனை விவரக்குறிப்பின் படி எழுதப்பட வேண்டும். விதியைக் கொடுங்கள், எதிர்பார்ப்புகளைச் சரிபார்த்து, எட்ஜ் கேஸ்களைச் செயல்படுத்தி, சோதனைகள் உண்மையில் ஒரு பிழையை உட்செலுத்துவதன் மூலம் பாதுகாக்கப்படுகிறதா என்று சோதிக்கவும். சோதனை கவரேஜ் ஒரு கருவி, ஒரு இலக்கு அல்ல.
விண்ணப்ப பணி
ஒரு செயல்பாட்டைத் தேர்ந்தெடுத்து, முதலில் அதன் குறியீட்டைக் கொடுத்து AI க்கு ஒரு சோதனையை அச்சிடவும்; எதிர்பார்ப்புகளைக் கவனியுங்கள். பின்னர் சோதனையை மீண்டும் அச்சிட்டு, அதே செயல்பாட்டிற்கான விவரக்குறிப்பை (தேவையான நடத்தை) கொடுக்கவும். இரண்டு சோதனைத் தொகுப்புகளின் எதிர்பார்ப்புகளை ஒப்பிடுக: வேறு ஏதேனும் உள்ளதா, எது உண்மையான பிழையை வெளிப்படுத்துகிறது? இறுதியாக, குறியீட்டில் வேண்டுமென்றே பிழையைச் சேர்ப்பதன் மூலமும் சோதனை முறிவைப் பார்ப்பதன் மூலமும் உருவாக்கப்பட்ட சோதனைகளில் ஒன்று செயல்பட்டதா என்பதைச் சரிபார்க்கவும்.
சரிபார்ப்பு பட்டியல்
- [ ] சோதனையானது நடத்தையை சரிசெய்வதா அல்லது சரிபார்ப்பதா என்பதை நான் வேறுபடுத்துகிறேன்.
- [ ] நான் ஒரு சோதனையைக் கோரும்போது, குறியீட்டை அல்ல, அந்த விதியை (விவரக்குறிப்பு) தருகிறேன்.
- [ ] நான் உருவாக்கப்படும் ஒவ்வொரு வலியுறுத்தலையும் விவரக்குறிப்புடன் ஒப்பிடுகிறேன்.
- [ ] விளிம்பு மற்றும் தோல்வி வழக்குகளை நான் வெளிப்படையாகக் கோருகிறேன்.
- [ ] நான் சதவீத கவரேஜை ஒரு கருவியாக பார்க்கிறேன், இலக்காக அல்ல.
- [ ] சோதனையானது பிழைகளை உட்செலுத்துவதன் மூலம் உண்மையில் பாதுகாக்கிறதா என்பதை நான் சோதிக்கிறேன்.