Random testing
சீரற்ற சோதனை என்பது ஒரு கருப்பு பெட்டி மென்பொருள் சோதனை நுட்பமாகும், அங்கு நிரல்கள் சீரற்ற, சுயாதீனமான உள்ளீடுகளை உருவாக்குவதன் மூலம் சோதிக்கப்படுகின்றன. சோதனை வெளியீடு தேர்ச்சி பெற்றதா அல்லது தோல்வியடைந்ததா என்பதை சரிபார்க்க வெளியீட்டின் முடிவுகள் மென்பொருள் விவரக்குறிப்புகளுடன் ஒப்பிடப்படுகின்றன. விவரக்குறிப்புகள் இல்லாத நிலையில் மொழியின் விதிவிலக்குகள் பயன்படுத்தப்படுகின்றன, அதாவது சோதனை நிறைவேற்றத்தின் போது ஒரு விதிவிலக்கு ஏற்பட்டால், நிரலில் ஒரு தவறு இருப்பதாக அர்த்தம், இது பக்கச்சார்பான சோதனையைத் தவிர்ப்பதற்கான ஒரு வழியாகவும் பயன்படுத்தப்படுகிறது. வன்பொருளுக்கான சீரற்ற சோதனையின் வரலாறு 1971 ஆம் ஆண்டில் மெல்வின் ப்ரூயர் என்பவரால் முதன்முதலில் ஆராயப்பட்டது, மேலும் அதன் செயல்திறனை மதிப்பிடுவதற்கான ஆரம்ப முயற்சி 1975 ஆம் ஆண்டில் பிரதிமா மற்றும் விஸ்வனி அகர்வால் ஆகியோரால் செய்யப்பட்டது. மென்பொருளில், டுரான் மற்றும் என்டாஃபோஸ் 1984 இல் சீரற்ற சோதனையை ஆய்வு செய்தனர். சீரற்ற சோதனைக்கு ஒரு தத்துவார்த்த அடிப்படையாக கருதுகோள் சோதனையின் பயன்பாடு செயல்பாட்டு சோதனை மற்றும் பகுப்பாய்வில் ஹோவ்டனால் விவரிக்கப்பட்டது. 1/n ஐ விட பெரியதாக இல்லாத தோல்வி விகிதத்தில் குறைந்தது 1-1/n நம்பிக்கையைக் கொண்டிருக்க வேண்டிய சோதனைகளின் எண்ணிக்கையை மதிப்பிடுவதற்கான ஒரு எளிய சூத்திரத்தின் வளர்ச்சியும் இந்த புத்தகத்தில் உள்ளது. இந்த சூத்திரம் லோயர் பௌண்ட் ந்லாக்ன் ஆகும், இது ஒரு மிதமான தோல்வி விகிதத்தில் மிதமான நம்பிக்கையைக் கொண்டிருக்க அதிக எண்ணிக்கையிலான தோல்வி இல்லாத சோதனைகளைக் குறிக்கிறது. கண்ணோட்டம் பின்வரும் சி + + செயல்பாட்டைக் கவனியுங்கள்ஃ இன்ட் மைஆப்ஸ் (இன்ட் x) {என்றால் (x> 0) {ரிட்டர்ன் x;} இல்லையெனில் {ரிட்டர்ன் x;// பிழைஃ '-x'} ஆக இருக்க வேண்டும்} இப்போது இந்த செயல்பாட்டிற்கான சீரற்ற சோதனைகள் {123,36,-35,48,0} ஆக இருக்கலாம். '-35' மதிப்பு மட்டுமே பிழையைத் தூண்டுகிறது. முடிவைச் சரிபார்க்க குறிப்பு செயல்படுத்தல் இல்லையென்றால், பிழை இன்னும் கவனிக்கப்படாமல் போகலாம். இருப்பினும், முடிவுகளைச் சரிபார்க்க ஒரு கூற்றைச் சேர்க்கலாம், அதாவதுஃ வெற்றிட சோதனைஆப்ஸ் (இன்டன்) {for (இன்டன் i = 0; i <n; i + +) {இன்டன் x = பெட்ராண்டம்இன்பூட் (); இன்டன் முடிவு = மைஆப்ஸ் (x); வலியுறுத்தல் (முடிவு> = 0);} குறிப்பு செயல்படுத்தல் சில நேரங்களில் கிடைக்கிறது, எ. கா. சிறந்த செயல்திறனுக்காக ஒரு எளிய வழிமுறையை மிகவும் சிக்கலான முறையில் செயல்படுத்தும்போது. எடுத்துக்காட்டாக, ஷொன்ஹேஜ்-ஸ்ட்ராஸ்சென் வழிமுறையின் செயல்பாட்டைச் சோதிக்க, முழு எண்களில் நிலையான "*" செயல்பாட்டைப் பயன்படுத்தலாம்ஃ (int i = 0; i <n; i + +) {long x = getRandomInput (); long y = getRandomInput (); long விளைவாக (x, y); வலியுறுத்தல் (x * y = = = முடிவு)] இந்த எடுத்துக்காட்டு எளிய வகைகளுக்கு மட்டுப்படுத்தப்பட்டிருந்தாலும் (இதற்காக ஒரு எளிய சீரற்ற ஜெனரேட்டரைப் பயன்படுத்தலாம்), பொருள் சார்ந்த மொழிகளை இலக்காகக் கொண்ட கருவிகள் பொதுவாக நிரலை ஆராய்கின்றன. இத்தகைய அணுகுமுறைகள் சீரற்ற முறையில் உருவாக்கப்பட்ட பொருட்களின் தொகுப்பை பராமரிக்கின்றன, மேலும் உருவாக்கப்பட்ட பொருளை மீண்டும் பயன்படுத்துவதற்கோ அல்லது புதிய ஒன்றை உருவாக்குவதற்கோ நிகழ்தகவைப் பயன்படுத்துகின்றன. டி. ஹேம்லெட்டின் சீரற்ற சோதனை குறித்த ஆரம்பக் கட்டுரையின்படி, "சீரற்ற சோதனை" என்பதன் தொழில்நுட்ப, கணித அர்த்தம் சோதனைத் தரவைத் தேர்ந்தெடுப்பதில் "அமைப்பு" வெளிப்படையாக இல்லாததைக் குறிக்கிறது, இதனால் வெவ்வேறு சோதனைகளுக்கு இடையே எந்த தொடர்பும் இல்லை. பலம் மற்றும் பலவீனங்கள் சீரற்ற சோதனை பின்வரும் பலங்களுக்காக பாராட்டப்படுகிறதுஃ இது பயன்படுத்த மலிவானதுஃ சோதனையின் கீழ் உள்ள நிரலைப் பற்றி புத்திசாலித்தனமாக இருக்க வேண்டிய அவசியமில்லை. இது எந்த சார்பையும் கொண்டிருக்கவில்லைஃ கையேடு சோதனையைப் போலல்லாமல், சில குறியீடுகளில் தவறான நம்பிக்கை இருப்பதால் இது பிழைகளை கவனிக்காது. பிழை வேட்பாளர்களைக் கண்டுபிடிப்பது விரைவானதுஃ ஒரு சோதனை அமர்வைச் செய்ய பொதுவாக இரண்டு நிமிடங்கள் ஆகும். மென்பொருள் சரியாக குறிப்பிடப்பட்டிருந்தால்ஃ அது உண்மையான பிழைகளைக் கண்டறிகிறது. பின்வரும் பலவீனங்கள் விவரிக்கப்பட்டுள்ளனஃ இது அடிப்படை பிழைகளை மட்டுமே கண்டறிகிறது (எ. கா. பூஜ்ய சுட்டிக்காட்டி குறிப்பு நீக்குதல்). விவரக்குறிப்புகள் மற்றும் விவரக்குறிப்புகள் பொதுவாக துல்லியமற்றவை என்பதால் இது துல்லியமானது. பிழைகளைக் கண்டுபிடிப்பதற்கான பிற நுட்பங்களுடன் இது மோசமாக ஒப்பிடுகிறது (எ. கா. நிலையான நிரல் பகுப்பாய்வு). ஒவ்வொரு சோதனை ஓட்டத்திலும் வெவ்வேறு உள்ளீடுகள் தோராயமாக தேர்ந்தெடுக்கப்பட்டால், இது தொடர்ச்சியான ஒருங்கிணைப்புக்கான சிக்கல்களை உருவாக்கலாம், ஏனெனில் அதே சோதனைகள் தோராயமாக தேர்ச்சி பெறும் அல்லது தோல்வியடையும். சீரற்ற தன்மையை நம்புவதை விட, கைமுறையாக கட்டப்பட்ட சோதனைகளுடன் தொடர்புடைய அனைத்து நிகழ்வுகளையும் சிந்தனையுடன் வெள்ளை பெட்டி பாணியில் மறைப்பது நல்லது என்று சிலர் வாதிடுகின்றனர். மிதமான தோல்வி விகிதங்களில் மிதமான அளவிலான நம்பிக்கைக்கு மிகப் பெரிய எண்ணிக்கையிலான சோதனைகள் தேவைப்படலாம். எடுத்துக்காட்டாக, தோல்வியின் நிகழ்தகவு 1/100 ஐ விட குறைவாக உள்ளது என்று குறைந்தது 99 சதவீதம் நம்புவதற்கு 459 தோல்வி இல்லாத சோதனைகள் தேவைப்படும். சீரற்ற சோதனையின் வகைகள் உள்ளீடு சீரற்ற உள்ளீட்டு வரிசை உருவாக்கம் (அதாவது. முறை அழைப்புகளின் வரிசை) தரவு உள்ளீடுகளின் சீரற்ற வரிசை (சில நேரங்களில் சீரற்ற சோதனை என்று அழைக்கப்படுகிறது)-எ. கா. முறையின் சீரற்ற வரிசை தற்போதுள்ள தரவுத்தளத்திலிருந்து சீரற்ற தரவுத் தேர்வை அழைக்கிறது வழிகாட்டப்பட்ட எதிராக வழிகாட்டப்படாத சீரற்ற சோதனை தலைமுறை-அதன் தேடலை வழிநடத்த சீரற்ற சோதனை தலைமுறையை வழிநடத்த எந்த ஆய்வும் இல்லை-எ. கா. "பின்னூட்ட-இயக்க சீரற்ற சோதனை உருவாக்கம்" மற்றும் "தகவமைப்பு சீரற்ற சோதனை" அமலாக்கங்கள் சீரற்ற சோதனையை செயல்படுத்தும் சில கருவிகள்ஃ குவிக் செக்-ஒரு பிரபலமான சோதனை கருவி, முதலில் ஹாஸ்கெல்லுக்காக உருவாக்கப்பட்டது, ஆனால் பல மொழிகளுக்கு அனுப்பப்பட்டது, இது ஒரு மாதிரியின் அடிப்படையில் ஏபிஐ அழைப்புகளின் சீரற்ற வரிசைகளை உருவாக்குகிறது மற்றும் ஒவ்வொரு ஓட்டத்திற்கும் பிறகு உண்மையாக இருக்க வேண்டிய கணினி பண்புகளை சரிபார்க்கிறது. ராண்டூப்-சோதனையின் கீழ் உள்ள வகுப்புகளுக்கான முறைகள் மற்றும் கட்டமைப்பாளர் அழைப்புகளின் வரிசைகளை உருவாக்குகிறது மற்றும் இந்த சிமுலேண்டிலிருந்து ஜூனிட் சோதனைகளை உருவாக்குகிறது-பல்வேறு முகவர்களின் உருவகப்படுத்துதல்களை இயக்கும் ஒரு க்ளோஜர் கருவி (எ. கா. வெவ்வேறு நடத்தை சுயவிவரங்களைக் கொண்ட பயனர்கள்) தங்கள் நடத்தையின் புள்ளிவிவர மாதிரியின் அடிப்படையில், அனைத்து செயல்களையும் மற்றும் முடிவுகளையும் ஒரு தரவுத்தளத்தில் பதிவுசெய்து பின்னர் ஆய்வு மற்றும் சரிபார்ப்பு தானியங்கி சோதனை-ஈஃபிள் ஸ்டுடியோ சோதனையுடன் ஒருங்கிணைக்கப்பட்ட ஒரு கருவி தானாகவே ஈஃபிள் குறியீட்டை பெயரிடப்பட்ட ஆராய்ச்சி முன்மாதிரியின் அடிப்படையில் ஒப்பந்தங்களுடன் ஒருங்கிணைக்கிறது. யார்க் எக்ஸ்டென்சிபிள் டெஸ்டிங் இன்ஃப்ராஸ்ட்ரக்சர் (ஒய். இ. டி. ஐ)-பல்வேறு நிரலாக்க மொழிகளை (ஜாவா, ஜே. எம். எல், கோஃபோஜா,. நெட், சி, கெர்மேட்டா) குறிவைக்கும் ஒரு மொழி அஞ்ஞான கருவி. கிராம் டெஸ்ட்-ஜாவாவில் எழுதப்பட்ட இலக்கண அடிப்படையிலான சீரற்ற சோதனை கருவி, இது உள்ளீட்டு இலக்கணங்களைக் குறிப்பிட பி. என். எஃப் குறியீட்டைப் பயன்படுத்துகிறது. விமர்சன சீரற்ற சோதனை நடைமுறையில் ஒரு சிறப்பு இடத்தை மட்டுமே கொண்டுள்ளது, ஏனெனில் பெரும்பாலும் ஒரு பயனுள்ள ஆரக்கிள் அரிதாகவே கிடைக்கிறது, ஆனால் செயல்பாட்டு சுயவிவரத்தில் உள்ள சிரமங்கள் மற்றும் போலி உள்ளீட்டு மதிப்புகளின் உருவாக்கம் காரணமாகவும் உள்ளது. ஒரு சோதனை ஆரக்கிள் என்பது முடிவுகள் நிரல் விவரக்குறிப்புடன் பொருந்துகிறதா இல்லையா என்பதை சரிபார்க்க ஒரு கருவியாகும். செயல்பாட்டு விவரக்குறிப்பு என்பது நிரலின் பயன்பாட்டு முறைகள் பற்றிய அறிவு, இதனால் எந்தப் பகுதிகள் மிகவும் முக்கியமானவை. நிரலாக்க மொழிகள் மற்றும் ஒப்பந்தங்களைக் கொண்ட தளங்களுக்கு (எ. கா. ஈபிள். . NET அல்லது JML, CoFoJa போன்ற ஜாவாவின் பல்வேறு நீட்டிப்புகள்) ஒப்பந்தங்கள் இயற்கையான ஆரக்கிள்களாக செயல்படுகின்றன மற்றும் அணுகுமுறை வெற்றிகரமாக பயன்படுத்தப்பட்டுள்ளது. குறிப்பாக, சீரற்ற சோதனை கைமுறை ஆய்வுகள் அல்லது பயனர் அறிக்கைகளை விட (வேறுபட்டவை என்றாலும்) அதிக பிழைகளைக் கண்டறிகிறது. ஃபுஸ் சோதனையையும் பார்க்கவும்-சோதனை செய்யப்பட்ட நிரலுக்கு தவறான உள்ளீட்டை வழங்கும் ஒரு வகையான சீரற்ற சோதனை சோம்பேறி முறையான அலகு testing#Systematic சோதனை-செயல்படுத்தப்பட்டபடி "அனைத்து" முறை அழைப்புகளையும் ஆராய்வதற்கான ஒரு முறையான வழி, எ. கா. நாசாவின் ஜாவா பாத் ஃபைண்டர் மூலம் (இது பல்வேறு வழிகளில் மாநில இடத்தை நியாயமான அளவிற்கு மட்டுப்படுத்துவதன் மூலம் மாதிரி சரிபார்ப்புடன் சோதனையை கலக்கிறது) சிஸ்டம் வெரிலாக் கார்னர் வழக்கு எட்ஜ் வழக்கு கான்கோலிக் சோதனை குறிப்புகள் வெளிப்புற இணைப்புகள் ஆண்ட்ரியா ஆர்குரியின் சீரற்ற சோதனை. போர்ட்லேண்ட் மாநில பல்கலைக்கழகத்தின் எமிரிட்டஸ் பேராசிரியரான ரிச்சர்ட் ஹாம்லெட்டின் சீரற்ற சோதனை; கன்னிங்ஹாம் & கன்னிங்ஹாம், இன்க். மென்பொருள் சோதனையில் சீரற்ற சோதனை விக்கி என்ற காகிதத்தின் முடிவில் உள்ள வளங்களின் மதிப்புமிக்க பட்டியல்.