એકમો
1. સૉફ્ટવેર પરીક્ષણ અને QA માં કૃત્રિમ બુદ્ધિનો પરિચય: ભૂમિકાઓ, સીમાઓ, નકલી જોખમ અને માન્યતા 2. ટેસ્ટ દૃશ્ય અને ટેસ્ટ કેસ જનરેશન: જરૂરિયાતથી વ્યાપક નિયંત્રણ સુધી 3. સંશોધનાત્મક પરીક્ષણ અને પરીક્ષણ આઈડિયા જનરેશન: AI સાથે સર્જનાત્મક બગ શિકાર 4. UI ટેસ્ટ ઓટોમેશન: AI સાથે સેલેનિયમ, નાટ્યકાર અને સાયપ્રસ કોડ જનરેટ કરવું 5. API ટેસ્ટ ઓટોમેશન: AI સાથે કરાર, સ્કીમા અને એન્ડ-ટુ-એન્ડ માન્યતા 6. યુનિટ ટેસ્ટ જનરેશન અને ટેસ્ટેબિલિટી: AI સાથે મજબૂત પરીક્ષણ 7. ભૂલ અહેવાલ લેખન અને પ્રાથમિકતા: AI સાથે સ્પષ્ટ, પુનઃઉત્પાદન કરી શકાય તેવા રેકોર્ડ્સ 8. ટેસ્ટ કવરેજ વિશ્લેષણ અને જોખમ-આધારિત પરીક્ષણ: AI સાથે યોગ્ય લક્ષ્ય રાખવું 9. રીગ્રેસન પરીક્ષણ, પરીક્ષણ જાળવણી અને નાજુક પરીક્ષણોનો સામનો કરવો 10. ખોટા-વિશ્વાસનું જોખમ, પરીક્ષણ ગુણવત્તા અને પરિવર્તન પરીક્ષણ: પરીક્ષણ પરીક્ષણો 11. એન્ડ-ટુ-એન્ડ વર્કફ્લો, CI/CD એકીકરણ, નીતિશાસ્ત્ર અને સુરક્ષા: જવાબદારીપૂર્વક AI નો ઉપયોગ
એકમ 10 / 11

ખોટા-વિશ્વાસનું જોખમ, પરીક્ષણ ગુણવત્તા અને પરિવર્તન પરીક્ષણ: પરીક્ષણ પરીક્ષણો

નફો:

  • સ્યુડો-વિશ્વાસના ત્રણ ચહેરાઓને ઓળખવાની ક્ષમતા (બિન-આધારિત, સ્વ-નિવેદન, તુચ્છ દાવો) અને એન્ટિડોટ્સ લાગુ કરવાની ક્ષમતા
  • ટૂલ અથવા હાથ દ્વારા ટકા કવરેજ કરતાં ગુણવત્તાના વધુ સચોટ માપદંડ તરીકે પરિવર્તન પરીક્ષણ અને મ્યુટેશન સ્કોરનો ઉપયોગ કરવાની ક્ષમતા
  • પરીક્ષણ સામે લાલ ટીમ તરીકે AI ને સ્થાન આપવાની ક્ષમતા અને પ્રશંસાના જાળમાં પડ્યા વિના છટકબારીઓનું પરીક્ષણ કરવાની ક્ષમતા

આ મોડ્યુલના કેન્દ્રમાં એક રિકરિંગ ચેતવણી છે: ગ્રીન ગ્લોઇંગ ટેસ્ટ પેનલ ગુણવત્તાનો પુરાવો નથી. જો તમારા પરીક્ષણો તમને આત્મવિશ્વાસ આપે છે, તો તમારે એ જાણવાની જરૂર છે કે તે આત્મવિશ્વાસ વાસ્તવિક છે કે નકલી. આર્ટિફિશિયલ ઇન્ટેલિજન્સ (AI) ના યુગમાં, આ પ્રશ્ન પહેલા કરતાં વધુ જટિલ છે, કારણ કે AI પ્રવાહી, સરળ દેખાતા પરંતુ હોલો પરીક્ષણો ઉત્પન્ન કરવામાં માહિર છે. ખોટો આત્મવિશ્વાસ — સૉફ્ટવેરને સાચું માનવું કારણ કે પરીક્ષણો લીલા હોય છે, જ્યારે વાસ્તવમાં પરીક્ષણો કંઈપણ ચકાસતા નથી — એ સૌથી ખતરનાક બાબત છે જે QA ટીમ સાથે થઈ શકે છે; કારણ કે તે છુપાવતું નથી કે ત્યાં કોઈ ભૂલો નથી, પરંતુ તમે ભૂલો જોઈ શકતા નથી. આ એકમ સમગ્ર મોડ્યુલની માન્યતા ફિલસૂફીને એક શિસ્તમાં એકસાથે લાવે છે: તમારા પરીક્ષણોનું પરીક્ષણ.

પરીક્ષણની ગુણવત્તા માપવા માટેનું ગોલ્ડ સ્ટાન્ડર્ડ: મ્યુટેશન ટેસ્ટિંગ

પરીક્ષણ ખરેખર રક્ષણ કરે છે કે નહીં તે સમજવાની સૌથી શક્તિશાળી રીત એ છે કે પરિવર્તન પરીક્ષણ (પરિવર્તન પરીક્ષણ - એક તકનીક કે જે સ્રોત કોડમાં ઇરાદાપૂર્વક નાની વિકૃતિઓ/પરિવર્તન ઉત્પન્ન કરે છે અને પરીક્ષણો આ વિકૃતિઓને શોધી કાઢે છે કે કેમ તે માપે છે). તર્ક સરળ છે: જો તમે ઇરાદાપૂર્વક કોડને તોડશો (a + into -, a > into >=, સાચાને ખોટામાં બનાવો), તો સારા ટેસ્ટ સ્યુટને તે ભ્રષ્ટાચાર પકડવો જોઈએ અને તે લાલ થઈ જશે. જો તે ન થાય, તો તે વિક્ષેપ એ બચી ગયેલા મ્યુટન્ટ છે - તેથી તમારા પરીક્ષણો ખરેખર તે વર્તનને સાચવી રહ્યાં નથી.

મ્યુટેશન સ્કોર = મ્યુટેશન માર્યા / કુલ મ્યુટેશન. 90% લાઇન કવરેજ સાથેના પેકેજમાં 40% નો મ્યુટેશન સ્કોર હોઈ શકે છે; આ સૂચવે છે કે રેખાઓ કામ કરી રહી છે પરંતુ વર્તન ચકાસાયેલ નથી. મ્યુટેશન સ્કોર ટકાવારી કવરેજ કરતાં ગુણવત્તાનું વધુ પ્રમાણિક માપ છે.

ટીપ: ત્યાં સ્વચાલિત પરિવર્તન સાધનો છે (જાવા માટે PIT/Pitest, JavaScript/TypeScript માટે સ્ટ્રાઈકર, .NET માટે Stryker.NET, Python માટે mutmut). આ આપોઆપ સેંકડો મ્યુટેશન જનરેટ અને પરીક્ષણ કરે છે. જો તમારી પાસે કોઈ સાધન નથી, તો મેન્યુઅલ "બ્રેક ધ કોડ ટેસ્ટ" પદ્ધતિ પણ જટિલ કાર્યો માટે અમૂલ્ય છે.

સ્યુડો-ટ્રસ્ટના ત્રણ ચહેરા અને તેના મારણ

સ્યુડો-ટ્રસ્ટ ફોર્મ

લક્ષણ

મારણ

ભાર વિના પરીક્ષણ

કોડ કામ કરે છે, કંઈપણ માન્ય નથી

દરેક કસોટીમાં સાચો દાવો; પરિવર્તન સાથે પરીક્ષણ

સ્વ-પુષ્ટિ પરીક્ષણ

અપેક્ષિત = કોડનું આઉટપુટ

અપેક્ષિત મૂલ્યની સ્વતંત્ર રીતે ગણતરી કરો

તુચ્છ દાવો

"નલ નથી", "200 પરત"

વ્યવસાય નિયમ/વાસ્તવિક પરિણામ માન્ય કરો

ઉચ્ચ અવકાશ ભ્રમણા

90% રેખાઓ, ઓછી સુરક્ષા

મ્યુટેશન સ્કોર જુઓ

નાજુક પરીક્ષણ સહનશીલતા

"ફરી અટકી, પાસ"

મૂળ કારણ + નિર્ણાયક પરીક્ષણ

"રેડ ટીમ" તરીકે AI નો ઉપયોગ

AI બંને સ્યુડો-વિશ્વાસ પેદા કરી શકે છે અને તેનો શિકાર કરવામાં શક્તિશાળી સાથી બની શકે છે. તમારા પોતાના પરીક્ષણો સામે લાલ ટીમ તરીકે AI નો ઉપયોગ કરો: પૂછો "કોડ લખો જે આ પરીક્ષણો પાસ કરે છે પરંતુ ખોટો છે" અથવા "એક તોડફોડ શોધો જે આ પરીક્ષણોને મૂર્ખ બનાવશે." જો AI તમારા પરીક્ષણોમાં છટકબારીઓ શોધે છે, તો તે છટકબારીઓ વાસ્તવિક જોખમો છે.

સાવધાન: AI ને પૂછશો નહીં "શું મારી ટેસ્ટ ગુણવત્તા સારી છે?" અને ખાતરી તરીકે જવાબ "હા, મહાન" લો. AI દયાળુ બનવાનું વલણ ધરાવે છે. તેના બદલે, AI ને એક નક્કર કાર્ય માટે પડકાર આપો: "એક બગ ઉત્પન્ન કરો જે આ પરીક્ષણો પાસ કરે." જો તે તેને ઉત્પન્ન કરી શકે છે, તો તમારા પરીક્ષણો તે ભૂલ માટે અંધ છે.

સમકક્ષ પરિવર્તન અને સ્કોરની મર્યાદા

પરિવર્તન પરીક્ષણ શક્તિશાળી છે, પરંતુ તેમાં એક કેચ છે: કેટલાક પરિવર્તનો કોડના વર્તનને બિલકુલ બદલતા નથી. આને સમકક્ષ મ્યુટેશન કહેવામાં આવે છે (સમકક્ષ મ્યુટન્ટ — દૂષિત કોડ, મ્યુટેશન જે મૂળ જેવું જ પરિણામ આપે છે). ઉદાહરણ તરીકે, ક્યારેય ઉપયોગમાં ન લેવાતા ચલના પ્રારંભિક મૂલ્યમાં ફેરફાર કરવાથી આઉટપુટને અસર થતી નથી; કોઈ પરીક્ષણ આને પકડી શકતું નથી અને ન જોઈએ. તેથી, 100% મ્યુટેશન સ્કોર વ્યવહારમાં ઘણી વખત અગમ્ય હોય છે અને તે લક્ષ્ય નથી. હાથ વડે સમકક્ષ પરિવર્તનને બહાર કાઢવું ​​એ શ્રમ-સઘન છે; તેથી મ્યુટેશન સ્કોરને સંપૂર્ણ પરીક્ષાના સ્કોર તરીકે વાંચશો નહીં, પરંતુ "શું મારા પરીક્ષણો ખરેખર સુરક્ષિત છે?"ના પ્રમાણિક સૂચક તરીકે વાંચો.

વ્યવહારુ અભિગમ આ છે: સમગ્ર કોડ બેઝ પર સતત પરિવર્તન પરીક્ષણ ચલાવવાને બદલે, તેને એવા મોડ્યુલ પર ચલાવો જેમાં સૌથી વધુ જોખમ અને સૌથી જટિલ વ્યવસાય નિયમો હોય. આ મોડ્યુલોમાં એક પછી એક હયાત પરિવર્તનોની તપાસ કરો; જો તે વાસ્તવિક અંતર છે, તો એક પરીક્ષણ ઉમેરો; જો તે સમકક્ષ પરિવર્તન છે, તો તેને વાજબીતા સાથે ચિહ્નિત કરો અને પાસ કરો. AI એ મૂલ્યાંકન કરવા માટે પ્રારંભિક સ્ક્રીનીંગ કરી શકે છે કે શું હયાત પરિવર્તન સમકક્ષ છે; પરંતુ અંતિમ નિર્ણય તમારા દ્વારા લેવામાં આવે છે જેઓ જાણે છે કે કોડ શું કરે છે.

સાવધાન: મ્યુટેશન ટેસ્ટિંગ કોમ્પ્યુટેશનલી ખર્ચાળ છે (દરેક મ્યુટેશન માટે તમામ સંબંધિત પરીક્ષણો ફરીથી ચલાવવામાં આવે છે). તેથી એક સામાન્ય અને વાજબી વ્યૂહરચના એ છે કે દરેક મર્જને બદલે તેને સાપ્તાહિક અથવા પ્રી-રીલીઝ ડીપ ચેક તરીકે જટિલ મોડ્યુલો માટે સુનિશ્ચિત કરવું.

નબળા પ્રોમ્પ્ટ / મજબૂત પ્રોમ્પ્ટ

નબળા: "શું મારા પરીક્ષણો પૂરતા છે?"
મજબૂત: "આ ફંક્શન અને ટેસ્ટ સ્યુટ માટે લાલ ટીમ તરીકે કાર્ય કરો. (1) કોડમાં 8 મ્યુટેશન જનરેટ કરો જેને મારી શકાય છે (ઓપરેટર અવેજી, બાઉન્ડ્રી શિફ્ટ, કન્ડીશન વ્યુત્ક્રમ, રીટર્ન વેલ્યુ અવેજી). (2) દરેક મ્યુટેશન માટે, દર્શાવો કે હાલના પરીક્ષણોમાંથી કયો તેને પકડશે અને જે નહીં. (4) એ પણ બતાવો કે શું તમે કોડનું ઉદાહરણ બનાવી શકો છો જે આ તમામ પરીક્ષણો પાસ કરે છે પરંતુ વ્યવસાયના કોડ+પરીક્ષણોનું ઉલ્લંઘન કરે છે: [પેસ્ટ કરો]"

શક્તિશાળી પ્રોમ્પ્ટ; તે AI ને ટેસ્ટ-બ્રેકિંગ પરીક્ષક તરીકે સ્થાન આપે છે, પ્રશંસા મશીન તરીકે નહીં.

ચાર નકલ કરી શકાય તેવા નમૂનાઓ

1) મેન્યુઅલ પરિવર્તન નિયંત્રણ:

આ કોડ માટે 8 નોંધપાત્ર પરિવર્તનો (નાના ઈરાદાપૂર્વકના વિક્ષેપો) જનરેટ કરો: અંકગણિત ઓપરેટર અવેજી, સરખામણી મર્યાદા (> વિ >=), લોજિકલ વ્યુત્ક્રમ, વળતર/સતત અવેજીકરણ, શરત છોડવી. દરેક મ્યુટેશન માટે, અનુમાન કરો કે ઉપલબ્ધ કસોટીઓમાંથી કઈ તેને પકડશે કે નહીં. કોડ+પરીક્ષણો: [પેસ્ટ કરો]

2) હયાત પરિવર્તનને મારી નાખવું:

નીચેના મ્યુટેશન ટેસ્ટ રિપોર્ટમાં હયાત (અન પકડાયેલા) પરિવર્તનો છે: [સૂચિ/અહેવાલ]. દરેક માટે, એક ન્યૂનતમ પરીક્ષણ લખો જે તે પરિવર્તનને મારી નાખશે (તે રીતે તૂટી જવા પર કોડ લાલ થઈ જશે). પરીક્ષણ કઈ વર્તણૂકની પુષ્ટિ કરે છે તેના પર ટિપ્પણી કરો.

3) લાલ ટીમ - રક્ત પરીક્ષણ:

શું તમે કોડ લખી શકો છો જે નીચેની બધી પરીક્ષાઓ પાસ કરે છે, પરંતુ નીચેના વ્યવસાય નિયમનું ઉલ્લંઘન કરે છે: [વ્યાપાર નિયમ]. જો એમ હોય તો, આ પરીક્ષણોમાં કઈ છટકબારી આને મંજૂરી આપે છે? પરીક્ષણ ઉમેરો જે તે છટકબારીને બંધ કરશે. પરીક્ષણો: [પેસ્ટ કરો]

4) પરીક્ષણ ગુણવત્તા નિરીક્ષણ:

ગુણવત્તા માટે આ ટેસ્ટ સ્યુટ તપાસો. દરેક કસોટી માટે ટિક કરો:- શું સાચો દાવો છે કે તે પ્રોપ્સ છે?- શું અપેક્ષિત મૂલ્ય સ્વતંત્ર, કોડમાંથી લેવામાં આવ્યું છે?- શું તે વ્યાપાર નિયમ અથવા કંઈક તુચ્છની ચકાસણી કરે છે? છેલ્લે અંદાજિત "ટ્રુ એસર્ટ સ્કોર" અને 3 સૌથી નબળા ટેસ્ટ આપો. પરીક્ષણો: [પેસ્ટ કરો]

ત્રણ નાના કેસો

કેસ 1 - કવરેજ 92%, મ્યુટેશન સ્કોર 38%. એક ટીમ ઉચ્ચ કવરેજ પર આધાર રાખે છે. જ્યારે સ્ટ્રાઈકર સાથે મ્યુટેશન ટેસ્ટિંગ ચલાવવામાં આવ્યું હતું, ત્યારે સ્કોર 38% હતો: ઉત્પાદિત મોટાભાગના મ્યુટેશન્સ બચી ગયા હતા. આ સાબિતી હતી કે પરીક્ષણો લીટીઓ ચલાવતા ન હતા અને વર્તનની ચકાસણી કરી રહ્યા હતા. ટીમે ગુણવત્તા પરીક્ષણમાં ત્રણ અઠવાડિયાનું રોકાણ કર્યું; મ્યુટેશન સ્કોર વધીને 81% થયો, અને બે વાસ્તવિક ગણતરી ભૂલો આગલા પ્રકાશનમાં આ બીફ-અપ પરીક્ષણો દ્વારા પકડવામાં આવી.

કેસ 2 - AI એ ટેસ્ટમાં છેતરપિંડી કરી. "રેડ ટીમ" ટેમ્પલેટ સાથે, એક નિષ્ણાતે એઆઈને કોડ માટે પૂછ્યું જેણે હાલના પરીક્ષણો પાસ કર્યા છે પરંતુ ડિસ્કાઉન્ટ નિયમનું ઉલ્લંઘન કર્યું છે. AI એ કોડ લખ્યો હતો જે હંમેશા શૂન્યનું ડિસ્કાઉન્ટ પાછું આપે છે — અને તમામ પરીક્ષણો લીલા રહ્યા કારણ કે કોઈપણ પરીક્ષણો વાસ્તવિક ડિસ્કાઉન્ટ મૂલ્યને ચકાસતા ન હતા. ગેપ જોયો, વાસ્તવિક દાવાઓ ઉમેરાયા.

કેસ 3 - વખાણની જાળ. એક જુનિયર ટેસ્ટરે AI ને પૂછ્યું, "શું મારા ટેસ્ટ સારા છે?" અને "ખૂબ વ્યાપક" જવાબ સાંભળીને રાહત અનુભવી. તેમના વરિષ્ઠ સાથીદારે "ટેસ્ટ ક્વોલિટી ઓડિટ" ટેમ્પ્લેટનો ઉપયોગ કરીને સમાન પરીક્ષણોનું ઓડિટ કર્યું હતું; તે બહાર આવ્યું છે કે 20 માંથી 12 પરીક્ષણો સરંજામ (દાખ અથવા જંક વિના) હતા. સાચો પ્રશ્ન સાચો જવાબ લાવ્યો.

સામાન્ય ભૂલો

  • ગુણવત્તા માટે અવકાશ ભૂલથી. ઉચ્ચ પંક્તિ કવરેજ પર આધાર રાખવો અને મ્યુટેશન સ્કોર પર બિલકુલ ન જોવું.
  • AI ના વખાણ પર વિશ્વાસ કરવો. "શું તમારા ટેસ્ટ સારા છે?" અને હકારાત્મક જવાબને ખાતરી તરીકે ધ્યાનમાં લેવું.
  • કોડમાંથી અપેક્ષિત મૂલ્ય મેળવવું. સ્વ-ચકાસણી પરીક્ષણો જે ખામીયુક્ત કોડની પુષ્ટિ કરે છે.
  • તુચ્છ નિવેદનોથી સંતુષ્ટ રહો. તપાસો કે જે વાસ્તવિક નિયમને માન્ય કરતા નથી, જેમ કે "નલ નથી", "200 પરત ફર્યા".
  • હયાત પરિવર્તનોને અવગણવું. મ્યુટેશન રિપોર્ટમાં જે ન પકડાયું તેની અવગણના કરવી.
  • ક્રિટિકલ કોડને મેન્યુઅલી મ્યુટેટ કરવાનો પ્રયાસ પણ નથી કરતા. જો ટૂલ ઉપલબ્ધ ન હોય તો "કોડ બ્રેક અને ટેસ્ટ" સ્ટેપ છોડો.

સારાંશમાં

સ્યુડો-ટ્રસ્ટ માને છે કે સૉફ્ટવેર સાચું છે કારણ કે પરીક્ષણો લીલા છે; જ્યારે પરીક્ષણો કંઈપણ પુષ્ટિ કરી શકતા નથી. આને માપવા માટેનું ગોલ્ડ સ્ટાન્ડર્ડ મ્યુટેશન ટેસ્ટિંગ છે: ઇરાદાપૂર્વક કોડનો ભંગ કરવો અને પરીક્ષણો તેને પકડે છે કે કેમ તે માપવું. મ્યુટેશન સ્કોર ટકાવારી કવરેજ કરતાં ગુણવત્તાનું વધુ પ્રમાણિક માપ છે. AI બંને સ્યુડો-ટ્રસ્ટ ઉત્પન્ન કરે છે અને તેનો શિકાર કરવા માટે એક શક્તિશાળી લાલ ટીમ બની જાય છે — પૂછો "એક બગ ઉત્પન્ન કરો જે આ પરીક્ષણો પાસ કરે." તમારા પરીક્ષણોનું પરીક્ષણ કરો: સાચો દાવો, સ્વતંત્ર અપેક્ષિત મૂલ્ય, વ્યવસાય નિયમની માન્યતા, અને મૃત્યુ પામેલા પરિવર્તન.

એપ્લિકેશન કાર્ય

તમારા પોતાના પ્રોજેક્ટમાંથી વ્યવસાય નિયમ અને તેના પરીક્ષણો ધરાવતું ફંક્શન આયાત કરો. જો શક્ય હોય તો, મ્યુટેશન ટૂલ ચલાવો (સ્ટ્રાઇકર/પીટેસ્ટ/મટમટ) અને મ્યુટેશન સ્કોર માપો; જો ત્યાં કોઈ સાધન ન હોય, તો "મેન્યુઅલ મ્યુટેશન કંટ્રોલ" ટેમ્પલેટ વડે ઓછામાં ઓછા 8 મ્યુટેશન જનરેટ કરો અને તેને જાતે જ અજમાવો. દરેક જીવિત પરિવર્તન માટે, "કીલ સર્વાઈવિંગ મ્યુટેશન" ટેમ્પલેટ સાથે એક નવો ટેસ્ટ લખો. છેલ્લે, "રેડ ટીમ" પેટર્ન સાથે, જુઓ કે શું AI કોડ ઉત્પન્ન કરી શકે છે જે તમારા પરીક્ષણોને મૂર્ખ બનાવે છે. તમારા પ્રારંભિક અને અંતના પરિવર્તન સ્કોરની જાણ કરો (અથવા પકડાયેલ/કુલ પરિવર્તન દર).

ચેકલિસ્ટ

  • [ ] મેં કવરેજ નહીં, પરિવર્તનના સ્કોર દ્વારા પરીક્ષણ ગુણવત્તાનું મૂલ્યાંકન કર્યું.
  • [ ] મેં નિર્ણાયક કોડ માટે પરિવર્તન પરીક્ષણ (ટૂલ અથવા મેન્યુઅલી) ચલાવ્યું.
  • મેં દરેક હયાત પરિવર્તન માટે નવા પરીક્ષણો લખ્યા.
  • [ ] મેં AI નો ઉપયોગ લાલ ટીમ તરીકે કર્યો અને મારા પરીક્ષણોમાં છટકબારીઓ શોધી કાઢી.
  • [ ] મેં AI ના "તમારી પરીક્ષણો સારી છે"ની પ્રશંસાને ખાતરી તરીકે લીધી નથી.
  • [ ] મેં તપાસ કરી છે કે દરેક પરીક્ષણ વાસ્તવિક નિવેદન, સ્વતંત્ર અપેક્ષિત મૂલ્ય અને વ્યવસાય નિયમની ચકાસણી કરે છે.