નફો:
- રીગ્રેશન ટેસ્ટિંગના હેતુને સમજો અને કૃત્રિમ બુદ્ધિમત્તા સાથેના ફેરફારો અનુસાર પરીક્ષણો પસંદ કરવા અને રીગ્રેશન કેસ ઉત્પન્ન કરવામાં સક્ષમ બનો
- નાજુક પરીક્ષણોના મૂળ કારણોનું નિદાન કરવાની ક્ષમતા (સમય, ઓર્ડર અવલંબન, વહેંચાયેલ સ્થિતિ, બાહ્ય અવલંબન) અને લક્ષણને દબાવ્યા વિના કાયમી ઉકેલો લાગુ કરવા
- ડુપ્લિકેટ પરીક્ષણને નાબૂદ કરીને રીગ્રેસન સ્યુટને ઝડપી, સ્વતંત્ર અને વિશ્વસનીય રાખીને સંપૂર્ણ પેકેજ પૂર્વ-પ્રકાશન ચલાવવાની શિસ્ત જાળવવાની ક્ષમતા
સૉફ્ટવેર સતત બદલાય છે; દરેક નવી સુવિધા, દરેક ફિક્સ, કંઈક એવું તોડી શકે છે જે પહેલા કામ કરતી હતી. અગાઉ કાર્યરત કાર્યના અનુગામી વિક્ષેપને રીગ્રેસન કહેવામાં આવે છે. રીગ્રેસન પરીક્ષણ આ અધોગતિને પકડવા માટે દરેક ફેરફાર સાથે હાલની કાર્યક્ષમતાનું પુન: પરીક્ષણ કરે છે. સમય જતાં, આ ટેસ્ટ સ્યુટ્સ મોટા થાય છે - હજારો પરીક્ષણો - અને બે મોટી સમસ્યાઓ ઊભી થાય છે: સ્યુટ ધીમો પડી જાય છે, અને અસ્થિર પરીક્ષણો - અવિશ્વસનીય પરીક્ષણો જે ક્યારેક પાસ થાય છે અને કેટલીકવાર સમાન કોડમાં નિષ્ફળ જાય છે - પરીક્ષણ પરિણામોમાં ટીમના વિશ્વાસને નષ્ટ કરે છે. આર્ટિફિશિયલ ઇન્ટેલિજન્સ (AI) રીગ્રેશન સ્યુટને સારી રીતે જાળવવામાં, ઝડપી અને વિશ્વસનીય રાખવામાં એક શક્તિશાળી સહાય છે. પરંતુ કેન્દ્રીય ચેતવણી રહે છે: જ્યારે AI નાજુક કસોટીને "પાસ" કરવાની ઓફર કરી શકે છે, તે ઘણીવાર એક પેચ ઉત્પન્ન કરી શકે છે જે વાસ્તવિક ભૂલને આવરી લે છે. તમારું કામ અસ્થિરતાનું મૂળ કારણ શોધવાનું છે, લક્ષણને દબાવવાનું નથી.
નાજુક પરીક્ષણોના મૂળ કારણો
નાજુક પરીક્ષણ એ સૌથી કપટી પરીક્ષણ સમસ્યા છે: તે અવિશ્વસનીય છે કે તે પાસ થાય કે નિષ્ફળ જાય, ટીમને "તે ફરીથી અટવાઈ ગઈ હોવી જોઈએ, તેને ફરીથી ચલાવો" ની આદતમાં ધકેલી દે છે - અને આ આદત એક દિવસ વાસ્તવિક ભૂલને "ફ્લેકી" તરીકે અવગણશે. મુખ્ય મૂળ કારણો:
- સમય/રેસની સ્થિતિ: ટેસ્ટ ઓપરેશન પૂર્ણ થવાની રાહ જોયા વિના પરિણામ તપાસે છે. સૌથી સામાન્ય કારણ.
- ઓર્ડર અવલંબન: પરીક્ષણો એકબીજા દ્વારા છોડવામાં આવેલા ડેટા પર આધાર રાખે છે; જ્યારે ઓર્ડર બદલાય છે ત્યારે તે તૂટી જાય છે.
- વહેંચાયેલ કેસ: બહુવિધ પરીક્ષણો સમાન પરીક્ષણ ડેટા/વપરાશકર્તાનો ઉપયોગ કરે છે, વિરોધાભાસી.
- બાહ્ય નિર્ભરતા: વાસ્તવિક નેટવર્ક, તૃતીય-પક્ષ સેવા, સિસ્ટમ સમય, રેન્ડમ મૂલ્ય.
- પર્યાવરણ તફાવત: સ્થાનિક પર સ્વિચ કરે છે, CI (સતત એકીકરણ પર્યાવરણ) માં રહે છે.
સાવધાની: "થોડી વાર ફરી પ્રયાસ કરીને" નાજુક પરીક્ષા પાસ કરવાથી ઘણી વખત વાસ્તવિક સંમતિ ભૂલને ઢાંકી દે છે. ફરી પ્રયાસ એ નિદાનનું સાધન છે, સારવાર નથી. પ્રથમ મૂળ કારણ શોધો; દસ્તાવેજીકૃત, સાચી બાહ્ય અસ્થિરતા માટે માત્ર છેલ્લા ઉપાય તરીકે ફરી પ્રયાસનો ઉપયોગ કરો.
પરીક્ષણ જાળવણી: પેકેજને સ્વસ્થ રાખવું
રીગ્રેશન સ્યુટ બગીચા જેવું છે; જો કાળજી લેવામાં ન આવે તો, નીંદણ કબજે કરશે. AI ત્રણ જાળવણી કાર્યોમાં મદદ કરે છે:
1. ડુપ્લિકેટ/બિનજરૂરી ટેસ્ટ સફાઈ. સમય જતાં, એક જ વસ્તુનું પરીક્ષણ કરવા માટે મોટી સંખ્યામાં કેસ એકઠા થાય છે. AI સમાન પરીક્ષણોને જૂથબદ્ધ કરવા અને મર્જ કરવાનું સૂચન કરે છે.
2. નાજુક પરીક્ષણ નિદાન. તમે AI ને ટેસ્ટ કોડ અને અસ્થિરતા પેટર્ન આપો છો; સંભવિત મૂળ કારણો અને કાયમી ઉકેલ સૂચવે છે.
3. પરીક્ષણ પસંદગી/પ્રાધાન્યતા. દરેક ફેરફાર સાથે આખું પેકેજ ચલાવવું ખર્ચાળ છે. ટેસ્ટ ઈમ્પેક્ટ એનાલિસિસ (બદેલા કોડના આધારે માત્ર સંબંધિત પરીક્ષણો પસંદ કરીને), AI ભલામણ કરે છે કે કયા પરીક્ષણો પહેલા ચલાવવા જોઈએ. જો કે, સંપૂર્ણ પ્રી-રીલીઝ પેકેજ આવશ્યક છે.
સંસર્ગનિષેધ: નાજુક પરીક્ષણનું સંચાલન કરવું
તમે જોયું છે કે પરીક્ષણ નાજુક છે, પરંતુ તમારી પાસે મૂળ કારણને તરત જ ઠીક કરવા માટે સમય નથી. શું કરવું? ત્યાં બે ખોટી રીતો છે: પરીક્ષણને સંપૂર્ણપણે કાઢી નાખવું (તે વર્તણૂક હવે બિલકુલ સચવાયેલી નથી) અથવા ફરીથી પ્રયાસ કરીને તેને શાંત કરવા (વાસ્તવિક બગને આવરી લેવું). સાચો રસ્તો એ છે કે ક્વોરેન્ટાઇન (અસ્થાયી રૂપે નાજુક પરીક્ષણને મુખ્ય પેકેજથી અલગ કરવું અને તેને અલગ સૂચિમાં ટ્રૅક કરવું). ક્વોરેન્ટાઇન ટેસ્ટિંગ વર્ઝન મર્જિંગને અટકાવતું નથી, પરંતુ દેખીતું દેવું રહે છે અને તેને નિયમિતપણે સંબોધવામાં આવે છે. નિર્ણાયક મુદ્દો આ છે: સંસર્ગનિષેધ એ વેઇટિંગ રૂમ છે, કચરાપેટી નથી. જો સંસર્ગનિષેધની સૂચિ વધી રહી છે, તો આ એલાર્મ છે કે ટીમનું પરીક્ષણ આરોગ્ય બગડી રહ્યું છે. AI સમયાંતરે તમારી સંસર્ગનિષેધ સૂચિની સમીક્ષા કરી શકે છે અને તેને મૂળ કારણ પેટર્ન દ્વારા જૂથબદ્ધ કરી શકે છે; તે સામાન્ય કારણોને જાહેર કરીને સામૂહિક ઉકેલોને સક્ષમ કરે છે, જેમ કે "તમામ 6 પરીક્ષણો સમાન વહેંચાયેલ પરીક્ષણ વપરાશકર્તા સાથે જોડાયેલા છે".
ટીપ: દરેક સંસર્ગનિષેધ રેકોર્ડમાં "માલિક" અને "છેલ્લી સમીક્ષા કરેલ તારીખ" ઉમેરો. અવ્યવસ્થિત સંસર્ગનિષેધ કાયમી ડમ્પ બની જાય છે; બરડ પરીક્ષણો ત્યાં કાયમ રહે છે કારણ કે કોઈને ચિંતા નથી.
રીગ્રેસન વ્યૂહરચના ટેબલ
સ્થિતિ
વ્યૂહરચના
AI ની ભૂમિકા
નાનો સુધારો
અસરગ્રસ્ત વિસ્તાર + ધુમાડો પરીક્ષણ
સંબંધિત પરીક્ષણો પસંદ કરો
નવી સુવિધા
સંબંધિત મોડ્યુલ + એકીકરણ
નવા રીગ્રેશન કેસની દરખાસ્ત કરો
મોટા રિફેક્ટર
સંપૂર્ણ રીગ્રેશન પેકેજ
કવરેજ ગેપ વિશ્લેષણ
પૂર્વ-પ્રકાશન
સંપૂર્ણ પેકેજ + સંશોધન
પ્રાધાન્યતા અને સમયગાળો અંદાજ
તાત્કાલિક જીવંત સુધારો
કેન્દ્રિત + જટિલ માર્ગ
ન્યૂનતમ સલામત પરીક્ષણ સેટ
નબળા પ્રોમ્પ્ટ / મજબૂત પ્રોમ્પ્ટ
નબળા: "આ પરીક્ષણ ક્યારેક નિષ્ફળ જાય છે, તેને ઠીક કરો."
સશક્ત: "આ ટેસ્ટ 10 માંથી 3 રનમાં નિષ્ફળ જાય છે, કોડ યથાવત. અસ્થિરતાના મૂળ કારણનું નિદાન કરો: સમય/રેસ, ઓર્ડરની અવલંબન, શેર કરેલી સ્થિતિ, બાહ્ય અવલંબન, અથવા પર્યાવરણમાં તફાવત હોઈ શકે છે. દરેક સંભવિત કારણ માટે પરીક્ષણમાં કઈ લાઇન દર્શાવે છે. કાયમી ઉકેલ સૂચવો; લક્ષણો-દબાવતા ઉકેલ સૂચવશો નહીં. એરર ટ્રેલ: [લોગ]."
શક્તિશાળી પ્રોમ્પ્ટ; નિદાનને મૂળ કારણ તરફ નિર્દેશિત કરે છે અને સ્પષ્ટપણે લક્ષણોના દમનને પ્રતિબંધિત કરે છે.
ચાર નકલ કરી શકાય તેવા નમૂનાઓ
1) નાજુક પરીક્ષણ નિદાન:
આ ટેસ્ટ કોડ ક્યારેક પાસ થાય છે અને ક્યારેક ફેરફાર કર્યા વિના નિષ્ફળ જાય છે. મૂળ કારણ ઉમેદવારોની યાદી બનાવો (જાતિ, ઓર્ડર અવલંબન, વહેંચાયેલ રાજ્ય, બાહ્ય અવલંબન, ઘડિયાળ/રેન્ડમ, પર્યાવરણમાં તફાવત) અને દરેક માટે પરીક્ષણમાં પુરાવાની રેખા બતાવો. કાયમી ઉકેલ સૂચવો; દમનકારી ઉકેલને ચિહ્નિત કરો જેમ કે છેલ્લા ઉપાય તરીકે અને વાજબીતા સાથે ફરીથી પ્રયાસ કરો. ટેસ્ટ: [કોડ] / અસ્થિરતા પેટર્ન: [કેટલા રનમાં કેટલી વાર]
2) રીગ્રેશન કેસની દરખાસ્ત:
નીચેનો ફેરફાર કરવામાં આવ્યો હતો: [ફેરફાર/PR સારાંશ]. વર્તમાન વર્તણૂકોની સૂચિ બનાવો કે આ ફેરફાર તોડી નાખશે અને દરેક માટે રીગ્રેસન ટેસ્ટ કેસની દરખાસ્ત કરો. ખાસ કરીને આડઅસરો અને વહેંચાયેલ નિર્ભરતાના વિસ્તારોને પ્રકાશિત કરો.
3) ડુપ્લિકેટ ટેસ્ટ ક્લિનઅપ:
નીચેનો ટેસ્ટ સ્યુટ તપાસો. જૂથ ડુપ્લિકેટ અથવા ઓવરલેપિંગ કેસો જે સમાન વર્તનનું પરીક્ષણ કરે છે; દરેક ગ્રૂપ માટે મારે કયું રાખવું જોઈએ અને કયું ભેગું કરવું જોઈએ તે સૂચવો. જો કવરેજ ગુમાવવાનું જોખમ હોય તો ચેતવણી આપો. પરીક્ષણો: [સૂચિ/કોડ]
4) ટેસ્ટ અસર પસંદગી:
નીચેની ફાઇલો/કાર્યો બદલાઈ ગયા છે: [સૂચિ]. હાલના ટેસ્ટ સ્યુટમાંથી, મને પહેલા ચલાવવાની જરૂર હોય તેવા પરીક્ષણો પસંદ કરો અને ન્યાયી ઠરાવો (જે બદલાયેલ કોડ સાથે પ્રત્યક્ષ/પરોક્ષ રીતે જોડાયેલા છે). નોંધ: મને યાદ કરાવો કે હું હજુ પણ સંપૂર્ણ પ્રી-રીલીઝ સ્યુટ ચલાવીશ.
ત્રણ નાના કેસો
કેસ 1 - વાસ્તવિક ભૂલ ફરીથી પ્રયાસ દ્વારા આવરી લેવામાં આવી છે. એક ટીમે પ્રસંગોપાત બાકી રહેલા પેઆઉટ ટેસ્ટમાં 3 પ્રયાસો ઉમેર્યા; પરીક્ષા હંમેશા "પાસ" થતી હતી હવે. "નાજુક પરીક્ષણ ડાયગ્નોસ્ટિક" લાગુ કરવાથી જાણવા મળ્યું કે અસ્થિરતા વાસ્તવિક જાતિની સ્થિતિથી આવી છે: ઉચ્ચ ભાર પર, ચુકવણીની પુષ્ટિ ક્યારેક ડબલ-પ્રક્રિયા કરવામાં આવતી હતી. મહિનાઓ સુધી, ફરી પ્રયાસ એ એક ભૂલને આવરી લે છે જેના પરિણામે વાસ્તવિક નાણાંનું જીવંત નુકસાન થઈ શકે છે. રુટ કારણ નિશ્ચિત, દૂર કરવાનો ફરી પ્રયાસ કરો.
કેસ 2 — પેકેજ સંકોચાયું, ઝડપ વધી. 1,400 પરીક્ષણોના રીગ્રેશન સ્યુટમાં 55 મિનિટનો સમય લાગ્યો. "ડુપ્લિકેટ ટેસ્ટ ક્લિનિંગ" સાથે, 380 પરીક્ષણો ડુપ્લિકેટ અથવા આવરી લેવામાં આવ્યા હતા; મર્જ પેકેજ ઘટાડીને 900 પરીક્ષણો કરવામાં આવ્યું હતું, સમય ઘટાડીને 34 મિનિટ કરવામાં આવ્યો હતો, કવરેજ માપી શકાય તે રીતે ઘટાડવામાં આવ્યું ન હતું. ઝડપી પ્રતિસાદએ ટીમને વધુ વારંવાર પરીક્ષણ કરવા પ્રોત્સાહિત કર્યા.
કેસ 3 - ઓર્ડર અવલંબન. પરીક્ષણ હંમેશા સ્થાનિક રીતે પાસ થશે, પરંતુ તે CI માં રેન્ડમલી નિષ્ફળ જશે. AI ડાયગ્નોસ્ટિક્સે દર્શાવ્યું હતું કે પરીક્ષણ અન્ય પરીક્ષણ દ્વારા બનાવેલ વપરાશકર્તા પર આધારિત છે, CI માં તે તૂટી ગયું છે કારણ કે પરીક્ષણો સમાંતર/અલગ ક્રમમાં ચાલ્યા હતા. દરેક પરીક્ષણ તેના પોતાના ડેટાને સ્થાપિત કરવા માટે કરવામાં આવ્યું હતું; અનિર્ણાયકતા સમાપ્ત થઈ ગઈ છે.
સામાન્ય ભૂલો
- પુનઃપ્રયત્ન સાથે નાજુક કસોટીને શાંત કરી રહ્યા છીએ. મૂળ કારણ શોધ્યા વિના ફરી પ્રયાસ કરવો; વાસ્તવિક ભૂલને ઢાંકી દે છે.
- "ફરી અટકી" સંસ્કૃતિ. નિયમિતપણે લાલ પરિણામોની અવગણના; એક દિવસ, વાસ્તવિક ભૂલને છોડી દેવા.
- પેકેજ કાપણી બિલકુલ નથી. ડુપ્લિકેટ પરીક્ષણોને પાઈલ અપ કરવા અને પેકેજને ધીમું કરવાની મંજૂરી આપવી.
- પરીક્ષણો વચ્ચે અવલંબન. ટેસ્ટ સામાન્ય સ્થિતિ/ક્રમ પર આધારિત છે; અનિશ્ચિતતાનો સ્ત્રોત.
- ફક્ત બદલાયેલ ભાગનું પરીક્ષણ કરવું અને સંપૂર્ણ પેકેજને અવગણવું. પૂર્વ-પ્રકાશન શૉર્ટકટ; છુપાયેલી આડ અસરો છટકી.
- બાહ્ય નિર્ભરતા પર આધાર રાખવો. વાસ્તવિક નેટવર્ક/ઘડિયાળ/રેન્ડમ મૂલ્ય પર આધારિત પરીક્ષણો; કુદરતી રીતે અસ્થિર.
સારાંશમાં
રીગ્રેસન પરીક્ષણ અગાઉ કાર્યરત કાર્યોને તોડતા ફેરફારોને પકડે છે; પરંતુ જેમ જેમ પેકેજો વધતા જાય છે તેમ તેમ મંદી અને બરડ પરીક્ષણ વિશ્વાસને ખતમ કરે છે. નાજુક પરીક્ષણના મૂળ કારણો સામાન્ય રીતે સમય, ઓર્ડર અવલંબન, વહેંચાયેલ સ્થિતિ અને બાહ્ય અવલંબન છે. AI એ નિદાન, સફાઈ અને પરીક્ષણ પસંદગીમાં શક્તિશાળી સહાયક છે; પરંતુ પુનઃપ્રયાસ સાથે અનિર્ણાયકતાને દબાવવાથી વાસ્તવિક ભૂલોને આવરી લેવામાં આવે છે. મૂળ કારણ શોધો, પરીક્ષણોને સ્વતંત્ર અને નિર્ણાયક બનાવો, પેકેજને નિયમિતપણે કાપો, પ્રકાશન પહેલાં સંપૂર્ણ પેકેજ ચલાવો.
એપ્લિકેશન કાર્ય
તમારા પોતાના પ્રોજેક્ટમાંથી એક પરીક્ષણ પસંદ કરો જે તમે જાણો છો કે તે નાજુક છે (અથવા અસ્થિર લાગે છે). મૂળ કારણ ઉમેદવારોને બહાર કાઢો અને "નાજુક પરીક્ષણ નિદાન" નમૂના સાથે પરીક્ષણમાં પુરાવાઓની રેખાઓ ચકાસો. મૂળ કારણને ઓળખો અને ફરીથી પ્રયાસ કર્યા વિના કાયમી ઉકેલનો અમલ કરો. પછી તમારા પેકેજમાંથી 10 પરીક્ષણો પસંદ કરો અને "ડુપ્લિકેટ ટેસ્ટ ક્લિનઅપ" સાથે જોડી શકાય તેવા પરીક્ષણો શોધો. તમે તેમના મૂળ કારણમાંથી કેટલી પરીક્ષણ અસ્થિરતાઓ ઉકેલી છે અને તમે સ્યુટમાંથી કેટલા બિનજરૂરી કેસ દૂર કર્યા છે તેની જાણ કરો.
ચેકલિસ્ટ
- [ ] મેં નાજુક પરીક્ષણના મૂળ કારણનું નિદાન કર્યું છે; મેં લક્ષણને દબાવ્યું નથી.
- [ ] મેં પુનઃપ્રયત્નને વાજબી છેલ્લા ઉપાય તરીકે માન્યું, ઉપચાર નહીં.
- [ ] મેં પરીક્ષણોને સ્વતંત્ર અને નિર્ણાયક બનાવ્યા (બાહ્ય અવલંબનથી અલગ).
- [ ] મેં રીગ્રેશન સ્યુટમાંથી ડુપ્લિકેટ/બિનજરૂરી પરીક્ષણો કાપ્યા.
- [ ] મેં ફેરફારના આધારે પરીક્ષણ કરવાનું પસંદ કર્યું, પરંતુ સંપૂર્ણ પેકેજ પ્રી-રીલીઝ ચલાવ્યું.
- [ ] મેં દરેક લાલને ગંભીરતાથી લીધી, "ફરી અટકી, પાસ" સંસ્કૃતિ સામે.