ஆதாயங்கள்:
- சோதனை பிரமிடு மற்றும் கவர் வரம்பு மற்றும் பிழை சூழ்நிலைகள் மற்றும் மகிழ்ச்சியான சூழ்நிலைகளுக்கு ஏற்ப செயற்கை நுண்ணறிவுடன் அலகு, ஒருங்கிணைப்பு மற்றும் UI சோதனைகளை உருவாக்கும் திறன்
- வெற்று/பயனற்ற சோதனைகள் மற்றும் வீங்கிய கவரேஜை அகற்றும் திறன், உருவாக்கப்படும் ஒவ்வொரு சோதனையும் உண்மையில் ஒரு நடத்தையை சரிபார்க்கிறது.
- சோதனையானது பிழையைப் பிடிப்பதை உறுதிசெய்து, குறியீடு என்ன செய்ய வேண்டும் என்று AI க்குக் கூறுவதன் மூலம் பிழையை சரிசெய்வதைத் தடுக்கிறது
குறியீடு எழுதுவது பாதி வேலை; குறியீடு சரியாக வேலை செய்கிறது என்பதை நிரூபிப்பது மற்ற பாதி. மொபைல் பயன்பாடுகள் நூற்றுக்கணக்கான வெவ்வேறு சாதனங்கள், திரை அளவுகள், இயக்க முறைமை பதிப்புகள் மற்றும் பயனர் நடத்தைகளை சந்திக்கின்றன. இவை அனைத்தையும் கைமுறையாகச் சோதிப்பது இயலாது; அதனால்தான் தானியங்கி சோதனை (குறியீடு சோதனைக் குறியீடு - மனித கிளிக் இல்லாமல் இயங்கும் சோதனை) மொபைல் தரத்தின் முதுகெலும்பாகும். சோதனைகளை எழுதுவதில் AI நம்பமுடியாத அளவிற்கு திறமையானது, ஏனெனில் சோதனைகளை எழுதுவது அது விரும்பும் மாதிரி வேலை: குறிப்பிட்ட உள்ளீடுகளுக்கு ஒரு குறிப்பிட்ட நடத்தையை சரிபார்க்கிறது. இந்த யூனிட்டில், AI உடன் யூனிட் டெஸ்டிங், இன்டர்ஃபேஸ் டெஸ்டிங் மற்றும் ஆட்டோமேஷனை எப்படி விரைவுபடுத்துவது என்பதைக் கற்றுக்கொள்வோம், ஆனால் மனிதக் கண்கள் மூலம் சோதனையின் தரத்தை உறுதிசெய்வோம்.
சோதனை பிரமிடு: என்ன சோதிக்க வேண்டும் மற்றும் எவ்வளவு
ஒரு ஆரோக்கியமான சோதனை உத்தி ஒரு பிரமிட்டை ஒத்திருக்கிறது. அடிப்படையானது அதிக எண்ணிக்கையிலான யூனிட் சோதனைகளை உள்ளடக்கியது (விரைவான சோதனையானது ஒரு செயல்பாடு அல்லது வகுப்பை தனிமையில் சோதிக்கிறது); அவை வேகமானவை மற்றும் மலிவானவை. நடுவில் குறைவான ஒருங்கிணைப்பு சோதனை உள்ளது (பல பாகங்கள் எவ்வாறு ஒன்றாக வேலை செய்கின்றன என்பதை சோதித்தல்). மேலே குறைந்தபட்ச UI/எண்ட்-டு-எண்ட் சோதனை உள்ளது (பயனர் செய்வது போல் திரையில் கிளிக் செய்வதன் மூலம் சோதனை செய்யப்படுகிறது); அவை யதார்த்தமானவை ஆனால் மெதுவானவை மற்றும் உடையக்கூடியவை. AI ஒவ்வொரு அடுக்கிலும் உதவுகிறது, ஆனால் அதிக மதிப்பு அடித்தளத்தில் உள்ளது: வணிக தர்க்கத்தின் அலகு சோதனைகளை விரைவாக உருவாக்குகிறது.
சோதனை வகை
நோக்கம்
வேகம்
AI செயல்திறன்
அலகு சோதனை
ஒற்றை செயல்பாடு/வகுப்பு
மிக வேகமாக
மிக உயர்ந்தது
ஒருங்கிணைப்பு
இடை அடுக்கு
நடுத்தர
உயர்
UI / முடிவு முதல் இறுதி வரை
அனைத்து திரை ஸ்ட்ரீம்
மெதுவாக
நடுத்தர (பலவீனமான)
உதவிக்குறிப்பு: "இந்தச் செயல்பாட்டிற்கான சோதனைகளை உருவாக்கு" என்று AIயிடம் கூறும்போது, எட்ஜ் கேஸ்களை வெளிப்படையாகக் கேட்கவும்: வெற்று உள்ளீடு, பூஜ்யம், எதிர்மறை எண், மிகப் பெரிய மதிப்பு, நெட்வொர்க் பிழை. AI மகிழ்ச்சியான பாதையை எளிதாக உருவாக்குகிறது; உண்மையான தவறுகள் எல்லைகளுக்குள் ஒளிந்துகொண்டு, அங்கு நீங்கள் விரும்பவில்லை என்றால் வெளியே குதித்துவிடும்.
AI உடன் தேர்வு எழுதுவதற்கான படிகள்
- சோதிக்கப்பட வேண்டிய நடத்தையை வரையறுக்கவும். "இந்த செயல்பாடு இந்த உள்ளீட்டிற்கு இந்த வெளியீட்டைக் கொடுக்க வேண்டும்."
- கட்டமைப்பைக் குறிப்பிடவும். Android இல் JUnit + MockK, iOS இல் XCTest, Espresso (Android) அல்லது UIக்கான XCUITest (iOS).
- வரம்பு மாநிலங்களைக் கேளுங்கள். மகிழ்ச்சியான சூழ்நிலை + பிழை + முறிவு புள்ளிகள்.
- போலி பொருட்களை நிர்வகிக்கவும். நெட்வொர்க் மற்றும் தரவுத்தளம் போன்ற வெளிப்புற சார்புகள் சோதனைக்காக பின்பற்றப்படுகின்றன (உண்மையான சேவைக்கு பதிலாக போலி - கட்டுப்படுத்தப்பட்ட மாக்).
- சோதனையை இயக்கி சரிபார்க்கவும். சோதனை தேர்ச்சி பெற்றதா, அது உண்மையிலேயே அர்த்தமுள்ள எதையும் உறுதிப்படுத்துகிறதா?
ஐந்தாவது படி முக்கியமானது. AI சில நேரங்களில் "எப்போதும் கடந்து செல்லும்" பயனற்ற சோதனைகளை உருவாக்குகிறது; எடுத்துக்காட்டாக, எதையும் சரிபார்க்காத அல்லது அதன் சொந்த போலித் தரவைச் சரிபார்க்கும் சோதனை. தேர்ச்சிப் பரீட்சை மற்றும் பெறுமதியான சோதனை என்பது வெவ்வேறு விஷயங்கள்.
எச்சரிக்கை: AI உருவாக்க முடியும் என்பதால் சோதனை சரியானது என்று அர்த்தமல்ல. சில நேரங்களில் AI குறியீட்டின் தற்போதைய (ஒருவேளை தவறான) நடத்தையை "சரியானது" என்று ஏற்றுக்கொண்டு அதற்கேற்ப சோதனைகளை எழுதுகிறது. இத்தகைய சோதனை பிழையைப் பிடிப்பதை விட பிழையை சரிசெய்கிறது. சோதனை என்ன எதிர்பார்க்கிறது என்பதை நீங்கள் தீர்மானிக்கிறீர்கள்; AI என்ன செய்ய வேண்டும் என்று சொல்லுங்கள், குறியீடு என்ன செய்கிறது என்பதை அல்ல.
சோதனை கவரேஜ் அளவீடு மற்றும் தவறு
சோதனைக் கவரேஜ் (குறியீட்டின் சதவீதம் சோதனைகளால் இயக்கப்படுகிறது) ஒரு பயனுள்ள ஆனால் தவறாக வழிநடத்தும் அளவீடு ஆகும். 90% கவரேஜ் 90% குறியீடு செயல்படுத்தப்பட்டதைக் குறிக்கிறது; ஆனால் அந்த வரிகள் சரியாக வேலை செய்கிறதா என்று சரிபார்க்கப்படவில்லை. ஒரு வரியை இயக்கும் மற்றும் முடிவைச் சரிபார்க்காத ஒரு சோதனை நோக்கத்தை உயர்த்துகிறது ஆனால் பாதுகாப்பை வழங்காது. இலக்கு அதிக எண்கள் அல்ல, ஆனால் அர்த்தமுள்ள சரிபார்ப்பு. நீங்கள் AI உடன் விரைவாக அளவிட முடியும், ஆனால் ஒவ்வொரு சோதனையும் உண்மையில் ஒரு நடத்தையை சோதிக்கிறது என்பதை உறுதிப்படுத்தவும்.
மூன்று சிறிய வழக்குகள்
வழக்கு 1 - எல்லை நிலைமை பிடிபட்டது. வங்கிப் பயன்பாட்டில் பணப் பரிமாற்றச் செயல்பாட்டிற்கான சோதனைகளுக்கு AI கேட்கப்பட்டது, மேலும் குறிப்பாக "எதிர்மறைத் தொகை" மற்றும் "இருப்பினை விட அதிகமான" காட்சிகள் சேர்க்கப்பட்டன. எதிர்மறையான தொகையுடன் பரிமாற்றம் தடுக்கப்படவில்லை என்பதை சோதனை வெளிப்படுத்தியது; இது உற்பத்தியில் ஒரு பெரிய பாதுகாப்பு பாதிப்பாக இருக்கும். ஒரு வரி கட்டுப்பாட்டைச் சேர்ப்பதன் மூலம் மூடப்பட்டது. பாடம்: எல்லை சோதனைகள் மிகவும் மதிப்புமிக்க சோதனைகள்.
வழக்கு 2 - போலி சோதனை. AI ஆல் தயாரிக்கப்பட்ட 40 யூனிட் சோதனைகள் மூலம் கவரேஜை 85% ஆக அதிகரிக்க ஒரு குழு நிம்மதியடைந்தது. ஆய்வின் போது, பெரும்பாலான சோதனைகள் உண்மையில் எந்த வெளியீட்டையும் சரிபார்க்கவில்லை என்பது தெரிந்தது, அவை செயல்பாட்டை அழைத்து, assertTrue(true) என்று எழுதப்பட்டது. கவரேஜ் அதிகமாக இருந்தது ஆனால் பாதுகாப்பு பூஜ்ஜியமாக இருந்தது. சோதனைகள் மாற்றியமைக்கப்பட்டு உண்மையான சரிபார்ப்புகளுடன் மீண்டும் எழுதப்பட்டன. பாடம்: கவரேஜ் எண்கள் பொய்யாக இருக்கலாம்.
வழக்கு 3 - UI சோதனை துரிதப்படுத்தப்பட்டது. ஒரு ஈ-காமர்ஸ் குழு 20 நிமிடங்களில் AI உடன் ஆட்-டு-கார்ட் ஃப்ளோவின் XCUITest ஸ்கிரிப்டை எழுதியது; கையால் எழுதினால் பாதி நாள் ஆகும். AI யூகித்த திரை உறுப்பு அடையாளங்காட்டிகள்; குழு அவற்றை உண்மையான குறியீட்டுடன் பொருத்தி அவற்றை சரிசெய்தது. வரைவு வேகம் உண்மையானது, ஆனால் அடையாளங்காட்டி சரிபார்ப்பு மனித வேலை.
பலவீனமான வரியில் / வலுவான வரியில்
பலவீனமான வரியில்: "இந்தச் செயல்பாட்டிற்கு ஒரு சோதனை எழுதவும்."
சக்திவாய்ந்த அறிவுறுத்தல்: "JUnit5 + MockK உடன் இந்த Kotlin செயல்பாட்டிற்கான யூனிட் சோதனைகளை உருவாக்கவும். செயல்பாடு: பணப் பரிமாற்றம் (தொகை, ஆதாரம், இலக்கு) சோதனை செய்வதற்கான நடத்தைகள் (குறியீடு என்ன செய்ய வேண்டும்):- செல்லுபடியாகும் பரிமாற்றம் வெற்றிகரமாக இருக்க வேண்டும்- எதிர்மறை அல்லது பூஜ்ஜியத் தொகை நிராகரிக்கப்பட வேண்டும்- சமநிலையை விட அதிகமான தொகை நிராகரிக்கப்பட வேண்டும்- ஒவ்வொரு சோதனைப் பிழையும் நிராகரிக்கப்பட வேண்டும். விளக்கமான, வெளிப்புற சேவையை கேலி செய்கிறேன்.
நகலெடுக்கக்கூடிய வார்ப்புருக்கள்
அலகு சோதனை டெம்ப்ளேட்: "[மொழி] இந்தச் செயல்பாட்டிற்கு [JUnit/XCTest] யூனிட் சோதனைகளை உருவாக்கவும். எதிர்பார்க்கப்படும் நடத்தை: [என்ன செய்வது]. இதில் அடங்கும்: மகிழ்ச்சியான சூழ்நிலை, பூஜ்ய உள்ளீடு, முறிவுப் புள்ளிகள், பிழை வழக்கு. ஒவ்வொரு சோதனையும் ஒற்றை நடத்தையை சரிபார்க்கட்டும்; அர்த்தமுள்ள உறுதிமொழியைப் பயன்படுத்தவும்; போலி. [குறியீடு]"
UI சோதனை டெம்ப்ளேட்: "பின்வரும் ஓட்டத்தின் UI சோதனையை [Espresso/XCUITest] மூலம் எழுதவும்: [பயனர் ஓட்டம் படிப்படியாக]. அணுகல்தன்மை ஐடியுடன் திரை உறுப்புகளைத் தேர்ந்தெடுங்கள், உரைக்குப் பதிலாக ஐடியைப் பயன்படுத்தவும். காத்திருப்பு உத்தியைச் சேர்க்கவும். உறுப்பு ஐடிகளை உண்மையான குறியீட்டுடன் பொருத்த நினைவூட்டவும்."
சோதனை தணிக்கை டெம்ப்ளேட்:"இந்த சோதனைகளை ஆராயவும்:1) அவை உண்மையில் ஒரு வெளியீடு/நடத்தையை சரிபார்க்கின்றனவா அல்லது அவை பூஜ்யமா?2) வரம்புக்குட்பட்ட நிகழ்வுகளை உள்ளடக்குகின்றனவா?3) அவை குறியீட்டை பிழை திருத்தமா அல்லது சரியான நடத்தையை எதிர்பார்க்கின்றனவா? பலவீனமான சோதனைகளைக் கொடியிட்டு பலப்படுத்துகின்றன. [சோதனைகள்]"
கவரேஜ் ஆப்டிமைசேஷன் டெம்ப்ளேட்: "இந்த வகுப்பின் சோதிக்கப்படாத பகுதிகளைக் கண்டறிந்து, அர்த்தமுள்ள சோதனைகளைப் பரிந்துரைக்கவும். கவரேஜ்களின் எண்ணிக்கையை மட்டும் அல்ல, உண்மையான ஆபத்துள்ள பாதைகளுக்கு முன்னுரிமை கொடுங்கள். [குறியீடு]"
பொதுவான தவறுகள்
- மகிழ்ச்சியான சூழ்நிலையை சோதிக்கிறேன். பிழைகள் வரம்பு நிலைகளில் சேமிக்கப்படுகின்றன; அவர்களிடம் வெளிப்படையாகக் கேளுங்கள்.
- வெற்று/பயனற்ற சோதனையை ஏற்றுக்கொள்வது. assertTrue(true) வகையின் சோதனைகள் நோக்கத்தை உயர்த்தி பாதுகாப்பை வழங்காது.
- குறியீடு என்ன செய்கிறது என்பதை AI சரிபார்க்க வேண்டும். குறியீடு என்ன செய்ய வேண்டும் என்பதை சோதனை எதிர்பார்க்க வேண்டும்; இல்லையெனில் அது பிழையை சரிசெய்கிறது.
- நோக்கத்திற்காக ஸ்கோப் எண்ணைத் தவறாகப் பயன்படுத்துதல். 90% கவரேஜ் என்பது 90% துல்லியத்தைக் குறிக்காது.
- UI சோதனையில் உரையுடன் இணைக்கிறது. உரை மாறும்போது சோதனை முறிந்தது; நிலையான அடையாளங்காட்டியை (ஐடி) பயன்படுத்தவும்.
- போலிகளை தவறாக அமைத்தல். உண்மையான சேவையை அழைக்கும் "அலகு சோதனை" மெதுவாகவும் உடையக்கூடியதாகவும் இருக்கும்.
சுருக்கமாக
சோதனை என்பது மொபைல் தரத்தின் முதுகெலும்பாகும், மேலும் இந்த பகுதியில் AI மிகவும் திறமையானது, குறிப்பாக யூனிட் சோதனையில். சோதனை பிரமிடைப் பின்பற்றவும்: பல அலகுகள், நடுத்தர ஒருங்கிணைப்பு, சிறிய UI சோதனை. மகிழ்ச்சியான சூழ்நிலை மற்றும் வரம்புக்குட்பட்ட வழக்குகள் மற்றும் பிழை பாதைகளுக்கு AIயிடம் வெளிப்படையாகக் கேளுங்கள். உருவாக்கப்படும் ஒவ்வொரு சோதனையும் உண்மையில் ஒரு நடத்தையை சரிபார்க்கிறது என்பதை உறுதிப்படுத்தவும்; வெற்று சோதனைகள் மற்றும் உயர்த்தப்பட்ட கவரேஜ் தவறானவை. மிக முக்கியமாக, AI க்கு குறியீடு என்ன செய்ய வேண்டும் என்று சொல்லுங்கள், அது என்ன செய்கிறது என்பதை அல்ல, எனவே சோதனை பிழையைப் பிடிக்கிறது, அதை சரிசெய்யாது.
விண்ணப்ப பணி
வணிக லாஜிக் செயல்பாட்டிற்காக "அலகு சோதனை டெம்ப்ளேட்டை" பயன்படுத்தி AI இலிருந்து சோதனைகளைக் கோரவும் (எ.கா. தள்ளுபடி கணக்கீடு அல்லது படிவ சரிபார்ப்பு) மற்றும் வரம்பு வழக்குகளை (பூஜ்ய, எதிர்மறை, மிகப் பெரியது) வெளிப்படையாகக் குறிப்பிடவும். உருவாக்கப்பட்ட சோதனைகளை இயக்கவும், பின்னர் அதே சோதனைகளை "சோதனை தணிக்கை டெம்ப்ளேட்" மூலம் தணிக்கை செய்யவும். குறைந்த பட்சம் ஒரு பலவீனமான சோதனையைக் கண்டறிந்து, அதை வலுப்படுத்தி, சோதனைகள் செயல்பாட்டின் உண்மையான பிழையைப் பிடிக்கிறதா என்று சோதிக்கவும் (சிறிய பிழையைச் சேர்ப்பதன் மூலம்).
சரிபார்ப்பு பட்டியல்
- [ ] சோதனை பிரமிடுக்கான பொருத்தமான அடுக்கைத் தேர்ந்தெடுத்தேன் (முன்னுரிமை அலகு)
- [ ] மகிழ்ச்சியான சூழ்நிலையைத் தவிர வரம்பு மற்றும் பிழை வழக்குகளை நான் விரும்பினேன்
- [ ] ஒவ்வொரு சோதனையிலும் ஒரு அர்த்தமுள்ள கூற்று இருப்பதை நான் சரிபார்த்தேன்
- குறியீடு என்ன செய்ய வேண்டும் என்பதை நான் AI க்கு சொன்னேன், அது என்ன செய்கிறது என்பதை அல்ல
- [ ] நான் உண்மையான இடர் பாதைகளில் கவனம் செலுத்தினேன், கவரேஜ்களின் எண்ணிக்கையில் அல்ல
- [ ] நான் UI சோதனைகளில் நிலையான அடையாளங்காட்டியைப் பயன்படுத்தினேன், நான் உரையுடன் பிணைக்கவில்லை