Random testing
રેન્ડમ ટેસ્ટિંગ એ બ્લેક-બોક્સ સોફ્ટવેર પરીક્ષણ તકનીક છે જ્યાં પ્રોગ્રામ્સનું પરીક્ષણ રેન્ડમ, સ્વતંત્ર ઇનપુટ્સ જનરેટ કરીને કરવામાં આવે છે. પરીક્ષણ આઉટપુટ પાસ અથવા નિષ્ફળ છે તે ચકાસવા માટે આઉટપુટના પરિણામોની સરખામણી સોફ્ટવેર સ્પષ્ટીકરણો સાથે કરવામાં આવે છે. સ્પષ્ટીકરણોની ગેરહાજરીના કિસ્સામાં ભાષાના અપવાદોનો ઉપયોગ કરવામાં આવે છે, જેનો અર્થ છે કે જો પરીક્ષણના અમલ દરમિયાન કોઈ અપવાદ ઊભો થાય તો તેનો અર્થ એ છે કે કાર્યક્રમમાં ખામી છે, તેનો ઉપયોગ પક્ષપાતી પરીક્ષણને ટાળવાના માર્ગ તરીકે પણ થાય છે. હાર્ડવેર માટે રેન્ડમ પરીક્ષણના ઇતિહાસની સૌપ્રથમ 1971માં મેલ્વિન બ્ર્યુઅર દ્વારા તપાસ કરવામાં આવી હતી અને તેની અસરકારકતાનું મૂલ્યાંકન કરવાનો પ્રારંભિક પ્રયાસ પ્રતિમા અને વિશ્વની અગ્રવાલ દ્વારા 1975માં કરવામાં આવ્યો હતો. સોફ્ટવેરમાં, ડુરાન અને એનટાફોસે 1984માં રેન્ડમ પરીક્ષણની તપાસ કરી હતી. રેન્ડમ પરીક્ષણ માટે સૈદ્ધાંતિક આધાર તરીકે પૂર્વધારણા પરીક્ષણનો ઉપયોગ હાવડેન દ્વારા કાર્યાત્મક પરીક્ષણ અને વિશ્લેષણમાં વર્ણવવામાં આવ્યો હતો. આ પુસ્તકમાં પરીક્ષણો n ની સંખ્યાનો અંદાજ કાઢવા માટે એક સરળ સૂત્રનો વિકાસ પણ છે જે 1/n કરતા વધારે ન હોય તેવા નિષ્ફળતાના દરમાં ઓછામાં ઓછો 1-1/n વિશ્વાસ રાખવા માટે જરૂરી છે. સૂત્ર એ લોઅર બાઉન્ડ એનલોગ્ન છે, જે સૂચવે છે કે મોટી સંખ્યામાં નિષ્ફળતા-મુક્ત પરીક્ષણો સામાન્ય નિષ્ફળતા દર બાઉન્ડમાં પણ સામાન્ય વિશ્વાસ રાખવા માટે જરૂરી છે. વિહંગાવલોકન નીચેના C + + વિધેયને ધ્યાનમાં લોઃ int myAbs (int x) {if (x> 0) {موٽڻ x;} અન્યથા {રિટર્ન x;// બગઃ '-x'} હોવું જોઈએ} હવે આ વિધેય માટે રેન્ડમ પરીક્ષણો {123,36,-35,48,0} હોઈ શકે છે. માત્ર '-35' મૂલ્ય ભૂલને ચાલુ કરે છે. જો પરિણામ ચકાસવા માટે કોઈ સંદર્ભ અમલીકરણ ન હોય તો, ભૂલ હજુ પણ ધ્યાન બહાર જઈ શકે છે. જો કે, પરિણામોને ચકાસવા માટે એક દાવા ઉમેરી શકાય છે, જેમ કેઃ રદબાતલ ટેસ્ટએબ્સ (પૂર્ણાંક એન) {માટે (પૂર્ણાંક આઈ = 0; આઈ <એન; આઈ + +) {પૂર્ણાંક એક્સ = ગેટરેન્ડમઇનપુટ (); પૂર્ણાંક પરિણામ = માયએબ્સ (એક્સ); દાવા (પરિણામ> = 0);} સંદર્ભ અમલીકરણ કેટલીકવાર ઉપલબ્ધ હોય છે, દા. ત. વધુ સારા પ્રદર્શન માટે વધુ જટિલ રીતે સરળ અલ્ગોરિધમનો અમલ કરતી વખતે. ઉદાહરણ તરીકે, સ્કોનહેજ-સ્ટ્રાસેન અલ્ગોરિધમનો અમલ ચકાસવા માટે, પૂર્ણાંકો પર પ્રમાણભૂત "*" ઓપરેશનનો ઉપયોગ કરી શકાય છેઃ પૂર્ણાંકો પર પ્રમાણભૂત "*" ઓપરેશનઃ પૂર્ણાંકો પર પ્રમાણભૂત "*" ઓપરેશનનો ઉપયોગ કરી શકાય છેઃ પૂર્ણાંકો પર પ્રમાણભૂત "*" ઓપરેશનઃ પૂર્ણાંકો પર પ્રમાણભૂત "*" ઓપરેશનનો ઉપયોગ કરી શકાય છેઃ પૂર્ણાંકો પર પ્રમાણભૂત "*" જ્યારે આ ઉદાહરણ સરળ પ્રકારો સુધી મર્યાદિત છે (જેના માટે સરળ રેન્ડમ જનરેટરનો ઉપયોગ કરી શકાય છે), ત્યારે ઑબ્જેક્ટ-ઓરિએન્ટેડ ભાષાઓને લક્ષ્યાંકિત કરતા સાધનો સામાન્ય રીતે પ્રોગ્રામની શોધ કરે છે (માટે (પૂર્ણાંકો માટે i = 0; i <n; i + +) {લાંબા x = મેળવકો રેન્ડમ ઇનપુટ (); લાંબા y = મેળવકો રેન્ડમ ઇનપુટ (); લાંબા પરિણામ = ઝડપી ગુણાકાર (x, y); દાવા (x * y = = = પરિણામ) આવા અભિગમો પછી અવ્યવસ્થિત રીતે ઉત્પન્ન થયેલ વસ્તુઓનો સમૂહ જાળવી રાખે છે અને ઉત્પન્ન થયેલ વસ્તુનો ફરીથી ઉપયોગ કરવા અથવા નવી વસ્તુ બનાવવા માટે સંભાવનાનો ઉપયોગ કરે છે. ડી. હેમ્લેટ દ્વારા રેન્ડમ પરીક્ષણ પરના નિર્ણાયક પેપર અનુસાર [.] "રેન્ડમ પરીક્ષણ" નો તકનીકી, ગાણિતિક અર્થ પરીક્ષણ ડેટાની પસંદગીમાં "સિસ્ટમ" ના સ્પષ્ટ અભાવનો ઉલ્લેખ કરે છે, જેથી વિવિધ પરીક્ષણો વચ્ચે કોઈ સહસંબંધ ન હોય. શક્તિ અને નબળાઈઓ રેન્ડમ પરીક્ષણની નીચેની શક્તિઓ માટે પ્રશંસા કરવામાં આવે છેઃ તેનો ઉપયોગ કરવો સસ્તો છેઃ તેને પરીક્ષણ હેઠળના કાર્યક્રમ વિશે સ્માર્ટ બનવાની જરૂર નથી. તેમાં કોઈ પૂર્વગ્રહ નથીઃ મેન્યુઅલ પરીક્ષણથી વિપરીત, તે ભૂલોને અવગણતું નથી કારણ કે કેટલાક કોડમાં ખોટો વિશ્વાસ છે. બગ ઉમેદવારોને શોધવાનું ઝડપી છેઃ સામાન્ય રીતે પરીક્ષણ સત્ર કરવા માટે થોડી મિનિટો લે છે. જો સોફ્ટવેર યોગ્ય રીતે ઉલ્લેખિત હોય તોઃ તે વાસ્તવિક ભૂલો શોધે છે. નીચેની નબળાઈઓ વર્ણવવામાં આવી છેઃ તે માત્ર મૂળભૂત ભૂલો શોધે છે (દા. ત. નલ પોઇન્ટર ડીરેફરન્સિંગ). તે માત્ર એટલું જ ચોક્કસ છે જેટલું સ્પષ્ટીકરણ અને વિશિષ્ટતાઓ સામાન્ય રીતે અચોક્કસ હોય છે. તે ભૂલો શોધવા માટેની અન્ય તકનીકો સાથે નબળી રીતે સરખાવે છે (દા. ત. સ્થિર કાર્યક્રમ વિશ્લેષણ). જો દરેક ટેસ્ટ રન પર અવ્યવસ્થિત રીતે જુદા જુદા ઇનપુટ્સ પસંદ કરવામાં આવે, તો આ સતત એકીકરણ માટે સમસ્યાઓ ઊભી કરી શકે છે કારણ કે તે જ પરીક્ષણો અવ્યવસ્થિત રીતે પાસ થશે અથવા નિષ્ફળ જશે. કેટલાક દલીલ કરે છે કે અવ્યવસ્થિતતા પર આધાર રાખવા કરતાં, તમામ સંબંધિત કેસોને જાતે બનાવેલા પરીક્ષણો સાથે સફેદ-બૉક્સ ફેશનમાં વિચારપૂર્વક આવરી લેવાનું વધુ સારું રહેશે. સામાન્ય નિષ્ફળતા દરમાં વિશ્વાસના સામાન્ય સ્તર માટે તેને ખૂબ મોટી સંખ્યામાં પરીક્ષણોની જરૂર પડી શકે છે. ઉદાહરણ તરીકે, નિષ્ફળતાની સંભાવના 1/100 કરતા ઓછી છે તેનો ઓછામાં ઓછો 99 ટકા વિશ્વાસ રાખવા માટે 459 નિષ્ફળતા-મુક્ત પરીક્ષણોની જરૂર પડશે. રેન્ડમ પરીક્ષણના પ્રકારો ઇનપુટ રેન્ડમ ઇનપુટ સિક્વન્સ જનરેશનના સંદર્ભમાં (એટલે કે. મેથડ કોલ્સનો ક્રમ) ડેટા ઇનપુટ્સનો રેન્ડમ ક્રમ (કેટલીકવાર સ્ટોકેસ્ટિક પરીક્ષણ તરીકે ઓળખાય છે)-દા. ત. પદ્ધતિનો રેન્ડમ ક્રમ હાલના ડેટાબેઝમાંથી રેન્ડમ ડેટા પસંદગીને માર્ગદર્શિત વિ. માર્ગદર્શિત દિશાહીન રેન્ડમ ટેસ્ટ જનરેશન કહે છે-તેની શોધ નિર્દેશિત રેન્ડમ ટેસ્ટ જનરેશનને માર્ગદર્શન આપવા માટે કોઈ હ્યુરિસ્ટિક્સ નથી-દા. ત. "પ્રતિસાદ-નિર્દેશિત રેન્ડમ પરીક્ષણ પેઢી" અને "અનુકૂલનશીલ રેન્ડમ પરીક્ષણ" અમલીકરણ રેન્ડમ પરીક્ષણનો અમલ કરતા કેટલાક સાધનોઃ ક્વિકચેક-એક પ્રખ્યાત પરીક્ષણ સાધન, જે મૂળરૂપે હાસ્કેલ માટે વિકસાવવામાં આવ્યું હતું પરંતુ અન્ય ઘણી ભાષાઓમાં મૂકવામાં આવ્યું હતું, જે એક મોડેલના આધારે API કૉલ્સના રેન્ડમ સિક્વન્સ જનરેટ કરે છે અને સિસ્ટમના ગુણધર્મોની ચકાસણી કરે છે જે દરેક રન પછી સાચું હોવું જોઈએ. રેન્ડૂપ-પરીક્ષણ હેઠળના વર્ગો માટે પદ્ધતિઓ અને કન્સ્ટ્રક્ટર ઇન્વોકેશન્સના ક્રમ પેદા કરે છે અને આ સિમ્યુલેન્ટમાંથી જેયુનિટ પરીક્ષણો બનાવે છે-એક ક્લોઝર ટૂલ જે વિવિધ એજન્ટોના સિમ્યુલેશન ચલાવે છે (દા. ત. વિવિધ વર્તણૂકીય રૂપરેખાઓ ધરાવતા વપરાશકર્તાઓ) તેમના વર્તનના આંકડાકીય નમૂનાના આધારે, તમામ ક્રિયાઓ અને પરિણામોને પછીના સંશોધન અને ચકાસણી માટે ડેટાબેઝમાં રેકોર્ડ કરે છે ઓટોટેસ્ટ-નામસ્ત્રોતીય સંશોધન પ્રોટોટાઇપ પર આધારિત કરારો સાથે એફિલ સ્ટુડિયો પરીક્ષણ આપમેળે એફિલ કોડ સાથે સંકલિત સાધન. યોર્ક એક્સ્ટેન્સિબલ ટેસ્ટિંગ ઇન્ફ્રાસ્ટ્રક્ચર (YETI)-એક ભાષા અજ્ઞેયવાદી સાધન જે વિવિધ પ્રોગ્રામિંગ ભાષાઓ (જાવા, JML, CoFoJa,. NET, C, કેર્મેટા) ને લક્ષ્ય બનાવે છે. ગ્રામટેસ્ટ-જાવામાં લખાયેલ વ્યાકરણ આધારિત રેન્ડમ પરીક્ષણ સાધન, તે ઇનપુટ વ્યાકરણને સ્પષ્ટ કરવા માટે બી. એન. એફ. નોટેશનનો ઉપયોગ કરે છે. વિવેચનાત્મક રેન્ડમ પરીક્ષણ વ્યવહારમાં માત્ર એક વિશિષ્ટ સ્થાન ધરાવે છે, મોટે ભાગે કારણ કે અસરકારક ઓરેકલ ભાગ્યે જ ઉપલબ્ધ હોય છે, પરંતુ ઓપરેશનલ પ્રોફાઇલ અને સ્યુડોરાન્ડમ ઇનપુટ મૂલ્યોની પેઢી સાથે મુશ્કેલીઓને કારણે પણ. પરીક્ષણ ઓરેકલ એ ચકાસવા માટેનું એક સાધન છે કે પરિણામો કાર્યક્રમના સ્પષ્ટીકરણ સાથે મેળ ખાય છે કે નહીં. ઓપરેશન પ્રોફાઇલ એ પ્રોગ્રામના ઉપયોગની રીત વિશેનું જ્ઞાન છે અને આમ કયા ભાગો વધુ મહત્વપૂર્ણ છે. કરાર ધરાવતી પ્રોગ્રામિંગ ભાષાઓ અને પ્લેટફોર્મ્સ માટે (દા. ત. એફિલ. . NET અથવા જાવાના વિવિધ એક્સ્ટેન્શન્સ જેમ કે JML, CoFoJa.) કરારો કુદરતી ઓરેકલ તરીકે કાર્ય કરે છે અને અભિગમ સફળતાપૂર્વક લાગુ કરવામાં આવ્યો છે. ખાસ કરીને, રેન્ડમ પરીક્ષણ જાતે તપાસ અથવા વપરાશકર્તા અહેવાલો (અલગ હોવા છતાં) કરતાં વધુ ભૂલો શોધે છે. ફઝ પરીક્ષણ પણ જુઓ-એક પ્રકારનું રેન્ડમ પરીક્ષણ જે ચકાસાયેલ પ્રોગ્રામ લેઝી સિસ્ટેમેટિક યુનિટ testing#Systematic પરીક્ષણને અમાન્ય ઇનપુટ પ્રદાન કરે છે-"બધા" પદ્ધતિ કૉલ્સને શોધવાની એક વ્યવસ્થિત રીત, જેમ કે અમલમાં મૂકવામાં આવે છે. નાસાના જાવા પાથ ફાઇન્ડર દ્વારા (જે વિવિધ માધ્યમો દ્વારા રાજ્યની જગ્યાને વાજબી કદ સુધી મર્યાદિત કરીને મોડેલ ચકાસણી સાથે પરીક્ષણને મિશ્રિત કરે છે) સિસ્ટમ વેરિલોગ કોર્નર કેસ એજ કેસ કોન્કોલિક પરીક્ષણ સંદર્ભોમાં મર્યાદિત રેન્ડમ પેઢી બાહ્ય લિંક્સ એન્ડ્રીયા આર્કુરી દ્વારા રેન્ડમ પરીક્ષણ. પોર્ટલેન્ડ સ્ટેટ યુનિવર્સિટીના પ્રોફેસર એમેરિટસ રિચાર્ડ હેમલેટ દ્વારા રેન્ડમ પરીક્ષણ; કનિંગહામ એન્ડ કનિંગહામ, ઇન્ક ખાતે પેપર રેન્ડમ ટેસ્ટિંગ વિકીના અંતે સંસાધનોની મૂલ્યવાન સૂચિ. સોફ્ટવેર પરીક્ષણ