Bölüm 10 / 11

Sealňyş ynam töwekgelçiligi, synagyň hili we mutasiýa synagy: synag synaglary

Girdeji:

  • Seasama ynamyň üç ýüzüni tanamak (ynamsyz, özüni tassyklaýan, ownuk tassyklama) we antidotlary ulanmak ukyby;
  • Mutasiýa synagyny we mutasiýa balyny gural ýa-da el bilen göterimiň göterimine garanyňda has takyk hil ölçegi hökmünde ulanmak ukyby
  • AI-ni synaga garşy gyzyl topar hökmünde ýerleşdirmek we öwgi duzagyna düşmän synag kemçiliklerini awlamak

Bu modulyň merkezinde gaýtalanýan duýduryş bar: ýaşyl öwüsýän synag paneli hiliň subutnamasy däl. Synaglaryňyz size ynam döredýän bolsa, bu ynamyň hakykydygyny ýa-da galpdygyny bilmelisiňiz. Emeli intellekt (AI) döwründe bu sorag öňküsinden has möhümdir, sebäbi AI suwuk, tekiz görünýän, ýöne içi boş synaglary öndürmäge ökde. Sealňyş ynam - programma üpjünçiliginiň dogrudygyna ynanmak, sebäbi synaglar ýaşyl, aslynda synaglar hiç zady tassyklamaýar - QA topary üçin bolup biljek iň howply zat; ýalňyşlaryň ýokdugyny däl-de, ýalňyşlyklary görüp bilmeýändigiňizi gizleýär. Bu bölüm, ähli modulyň tassyklama pelsepesini bir dersde jemleýär: synaglaryňyzy barlamak.

Synagyň hilini ölçemek üçin altyn standart: mutasiýa synagy

Synagyň hakykatdanam goraýandygyna ýa-da ýokdugyna düşünmegiň iň güýçli usuly, mutasiýa synagydyr (mutasiýa synagy - deslapky kodda bilgeşleýin ownuk ýoýulmalary / mutasiýa döredýän we synaglaryň bu ýoýulmalary ýüze çykarýandygyny kesgitleýän usul). Logika ýönekeý: eger bilkastlaýyn kody bozsaňyz (a + -a -, a> öwrüp = =, hakykaty ýalana öwürseňiz), gowy synag toplumy şol korrupsiýany tutup, gyzyl öwrülmelidir. Eger şeýle bolmasa, bu bozulma aman galan mutant - şonuň üçin synaglaryňyz aslynda bu gylyk-häsiýeti gorap saklamaýar.

Mutasiýa baly = mutasiýa öldürildi / umumy mutasiýa. 90% çyzykly bukjanyň mutasiýa baly 40% bolup biler; Bu setirleriň işleýändigini görkezýär, ýöne özüni alyp barşyň tassyklanmaýar. Mutasiýa baly, göterim derejesine garanyňda has dogruçyl ölçegdir.

Maslahat: Awtomatiki mutasiýa gurallary bar (Java üçin PIT / Pitest, JavaScript / TypeScript üçin Stryker, .NET üçin Stryker.NET, Python üçin mutmut). Bular ýüzlerçe mutasiýa awtomatiki döredýär we synagdan geçirýär. Guralyňyz ýok bolsa, gollanma "kod synagyny döwmek" usuly hem möhüm funksiýalar üçin gymmatlydyr.

Pseudo-ynamyň üç ýüzi we antidot

Pseudo-ynam formasy

alamaty

antidote

Tassyklamazdan synag

Kod işleýär, hiç zat tassyklananok

Her synagda hakyky tassyklama; mutasiýa bilen synag

özüni tassyklaýan synag

Garaşylýan = koduň çykarylyşy

Garaşylýan bahany özbaşdak hasaplaň

Ujypsyz tassyklama

"null däl", "200 gaýdyp geldi"

Iş düzgünini / hakyky netijäni tassyklaň

Scopeokary göwrümli ýalňyşlyk

90% setir, pes gorag

Mutasiýa balyna serediň

Gowşak synag çydamlylygy

"Againene ýapyş, geç"

Kök sebäp + kesgitleýji synag

AI-ni “gyzyl topar” hökmünde ulanmak

AI ikisi hem pseudo-ynam döredip biler we ony awlamakda güýçli ýaran bolup biler. AI-ni öz synaglaryňyza garşy gyzyl topar hökmünde ulanyň: “bu synaglardan geçýän, ýöne nädogry kod ýazyň” ýa-da “bu synaglary aldajak bir terslik tapyň” diýip soraň. AI synaglaryňyzda kemçilik tapsa, bu boşluklar hakyky töwekgelçilikdir.

Üns beriň: AI-den soramaň "Synagymyň hili gowymy?" we kepillik hökmünde "hawa, ajaýyp" jogabyny alyň. AI mylaýym bolýar. Munuň ýerine, AI-ni anyk bir meselä garşy goýuň: "bu synaglardan geçýän bir näsazlygy öndüriň". Eger öndürip bilýän bolsa, synaglaryňyz şol ýalňyşlygy görmeýär.

Ekwiwalent mutasiýa we balyň çäkleri

Mutasiýa synagy güýçli, ýöne özüne çekiji: käbir mutasiýa koduň özüni alyp barşyny asla üýtgetmeýär. Bulara ekwiwalent mutasiýa diýilýär (ekwiwalent mutant - bozulan kod, asyl bilen birmeňzeş netije berýän mutasiýa). Mysal üçin, hiç wagt ulanylmaýan üýtgeýjiniň başlangyç bahasyny üýtgetmek çykyşa täsir etmeýär; Hiç bir synag muny alyp bilmez we almaly däldir. Şonuň üçin 100% mutasiýa balyny iş ýüzünde köplenç elýeterli edip bolmaýar we maksat däl. El bilen ekwiwalent mutasiýalary otlamak köp zähmet talap edýär; Şonuň üçin mutasiýa balyny mutlak ekzamen baly hökmünde okamaň, ýöne "synaglarym hakykatdanam goraýarmy?"

Amaly çemeleşme şeýledir: tutuş kod bazasynda mutasiýa synagyny yzygiderli geçirmegiň ýerine, iň ýokary töwekgelçiligi we iň çylşyrymly iş düzgünlerini öz içine alýan modullarda işlediň. Bu modullarda galan mutasiýalary birin-birin gözden geçiriň; Hakyky boşluk bolsa, synag goşuň; ekwiwalent mutasiýa bolsa, ony delil bilen belläň we geçiň. AI diri galan mutasiýa ekwiwalentdigini ýa-da ýokdugyny kesgitlemekde başlangyç barlagy geçirip biler; ýöne gutarnykly karar koduň näme edýändigini bilýänler tarapyndan kabul edilýär.

Üns beriň: Mutasiýa synagy hasaplaýyş taýdan gaty gymmat (ähli degişli synaglar her mutasiýa üçin täzeden işleýär). Şeýlelik bilen umumy we paýhasly strategiýa, her birleşmek däl-de, hepdelik ýa-da möhüm modullary çuňňur barlamak üçin öňünden düzmek.

Gowşak haýyş / Güýçli haýyş

Gowşak: "Synaglarym ýeterlikmi?"
Güýçli: "Bu funksiýa we synag toplumy üçin gyzyl topar hökmünde hereket ediň. (1) Öldürip boljak kodda 8 sany mutasiýa dörediň (operatoryň çalyşmagy, serhet çalşygy, şertiň üýtgemegi, bahanyň çalyşmagy). (2) Her mutasiýa üçin bar bolan synaglaryň haýsysynyň tutjakdygyny we haýsysynyň ýokdugyny görkeziň. düzgüni + synaglar: [paste].

Güýçli haýyş; AI-ni öwgi enjamy däl-de, synag synagçysy hökmünde ýerleşdirýär.

Göçürip boljak dört şablon

1) El bilen mutasiýa gözegçiligi:

Bu kod üçin 8 sany möhüm mutasiýa (ownuk bilgeşleýin bökdençlikler) dörediň: arifmetiki operatoryň çalyşmagy, deňeşdirme çäkleri (> vs> =), logiki öwrülişik, gaýdyp / hemişelik çalyşmak, şertden geçmek. Her mutasiýa üçin, bar bolan synaglaryň haýsysynyň tutjakdygyny ýa-da almajakdygyny çaklaň. Kod + synaglar: [paste]

2) Diri galan mutasiýany öldürmek:

Aşakdaky mutasiýa synag hasabatynda diri galan (öwrenilmedik) mutasiýa bar: [sanaw / hasabat]. Her biri üçin şol mutasiýany öldürjek minimal synag ýazyň (kod şeýle bozulanda gyzyl öwrüler). Synagyň haýsy özüni alyp barşyny tassyklaýandygyny düşündiriň.

3) Gyzyl topar - synag gany:

Aşakdaky synaglaryň hemmesinden geçýän, ýöne aşakdaky iş düzgünini bozýan kod ýazyp bilersiňizmi: [iş düzgüni]. Şeýle bolsa, bu synaglarda haýsy kemçilik bar? Şol boşlugy ýapjak synagy goşuň. Synaglar: [paste]

4) Synagyň hilini barlamak:

Synag toplumyny hil taýdan barlaň. Her synag üçin bellik: - Hakyky tassyklama barmy ýa-da teklip barmy? - Koddan alnan garaşylýan baha garaşsyzmy? - Bu iş düzgünini ýa-da ownuk bir zady tassyklaýarmy? Ahyrynda takmynan "hakyky tassyklama balyny" we 3 sany gowşak synagy beriň. Synaglar: [paste]

üç sany kiçi halat

1-nji hadysa - 92%, mutasiýa baly 38%. Bir topar ýokary gurşawy bil baglady. Stryker bilen mutasiýa synagy geçirilende, bal 38% boldy: öndürilen mutasiýalaryň köpüsi diri galdy. Bu synaglaryň setirleriň işlemeýändigini we özüni alyp barşyny barlaýandygynyň subutnamasydy. Topar synag hiline üç hepde maýa goýdy; Mutasiýa baly 81% -e çenli ýokarlandy we indiki goýberilişde bu güýçlendirilen synaglar arkaly iki sany hakyky hasaplama ýalňyşlygy ýüze çykdy.

2-nji waka - AI synagy aldady. “Gyzyl topar” şablony bilen, hünärmen AI-den bar bolan synaglardan geçen, ýöne arzanladyş düzgünini bozýan kod sorady. AI hemişe nol arzanladyşyny yzyna gaýtaryp berýän kod ýazdy - we ähli synaglar hakyky arzan bahany tassyklamaýandygy sebäpli ähli synaglar ýaşyllygyna galdy. Gap, hakyky tassyklamalar goşuldy.

3-nji waka - öwgi duzagy. Kiçijik synagçy AI-den: "Synaglarym gowymy?" we "Gaty giňişleýin" diýen jogaby eşidip rahatlandy. Uly kärdeşi "synag hiliniň barlagy" şablonyny ulanyp, şol bir synaglary geçirdi; Synaglaryň 20-den 12-siniň bezegdigi ýüze çykdy (tassyklamazdan ýa-da gereksiz). Dogry sorag dogry jogap berdi.

Adaty ýalňyşlyklar

  • Hil üçin ýalňyşlyk. Rowokarky hatara bil baglamak we mutasiýa balyna asla seretmezlik.
  • AI-iň öwgüsine ynanmak. "Synaglaryňyz gowumy?" Diýip soramak we oňyn jogaby kepillik hökmünde garamak.
  • Koddan garaşylýan bahany almak. Nädogry kody tassyklaýan öz-özüni barlamak synaglary.
  • Ujypsyz sözler bilen razy boluň. Hakyky düzgüni tassyklamaýan çekler, "null däl", "200 yzyna gaýtaryldy".
  • Diri galan mutasiýa ähmiýet bermezlik. Mutasiýa hasabatynda tutulmadyk zady äsgermezlik etmek.
  • Hatda kritiki kody el bilen üýtgetmäge synanyşmaýaryn. Gural ýok bolsa "kody döwüň we synagdan geçiriň" ädiminden geçmek.

Gysgaça

Pseudo-trust, synaglar ýaşyl bolany üçin programma üpjünçiliginiň dogrudygyna ynanýar; synaglar hiç zady tassyklap bilmez. Muny ölçemek üçin altyn standart, mutasiýa synagy: bilkastlaýyn kody bozmak we synaglaryň tutýandygyny ýa-da ýokdugyny ölçemek. Mutasiýa baly, göterim derejesine garanyňda has dogruçyl ölçegdir. AI ikisi hem pseudo-ynam döredýär we ony awlamakda güýçli gyzyl topara öwrülýär - “bu synaglardan geçýän bir näsazlygy öndüriň”. Synaglaryňyzy barlaň: hakyky tassyklama, garaşsyz garaşylýan baha, iş düzgünini tassyklamak we mutasiýa.

Programma meselesi

Işewürlik düzgünini we synaglaryny öz taslamaňyzdan import ediň. Mümkin bolsa, mutasiýa guralyny (Stryker / Pitest / mutmut) işlediň we mutasiýa balyny ölçäň; Gural ýok bolsa, "el bilen mutasiýa dolandyryşy" şablony bilen azyndan 8 mutasiýa dörediň we el bilen synap görüň. Her bir diri galan mutasiýa üçin "diri galan mutasiýany öldürmek" şablony bilen täze synag ýazyň. Ahyrynda, “gyzyl topar” nagşy bilen, AI synaglaryňyzy aldadýan kod öndürip biljekdigine göz aýlaň. Başlangyç we gutarýan mutasiýa balyňyzy habar beriň (ýa-da tutulan / umumy mutasiýa derejesi).

gözegçilik sanawy

  • [] Synag hiline gurşaw däl-de, mutasiýa baly bilen baha berdim.
  • [] Möhüm kod üçin mutasiýa synagyny geçirdim (gural ýa-da el bilen).
  • [] Her bir diri galan mutasiýa üçin täze synaglar ýazdym.
  • [] Gyzyl topar hökmünde AI-ni ulandym we synaglarymda kemçilik gözledim.
  • [] AI-ni "synaglaryňyz gowy" öwgä ynandyrma hökmünde kabul etmedim.
  • [] Her synagyň hakyky tassyklamany, garaşsyz garaşylýan bahany we iş düzgünini barlaýandygyny barladym.