Unità 10 / 11

Riskju ta' Fiduċja Falza, Kwalità tat-Test, u Testjar ta' Mutazzjoni: Testijiet tal-Ittestjar

Qligħ:

  • Kapaċità li tagħraf it-tliet uċuħ tal-psewdo-fiduċja (mhux assertiva, awto-assertiva, asserzjoni trivjali) u tapplika antidoti
  • Kapaċità li tuża l-ittestjar tal-mutazzjoni u l-punteġġ tal-mutazzjoni bħala kejl aktar preċiż tal-kwalità mill-kopertura tal-perċentwali bl-għodda jew bl-idejn
  • Kapaċità li tippożizzjona l-AI bħala tim aħmar kontra l-ittestjar u tikkaċċa għal lakuni tal-ittestjar mingħajr ma taqa 'fin-nassa tat-tifħir

Fil-qalba ta 'dan il-modulu hemm twissija rikorrenti: panel tat-test aħdar li jleqq mhuwiex evidenza ta' kwalità. Jekk it-testijiet tiegħek jagħtuk kunfidenza, trid tkun taf jekk dik il-kunfidenza hijiex reali jew falza. Fl-era tal-intelliġenza artifiċjali (AI), din il-mistoqsija hija aktar kritika minn qatt qabel, minħabba li l-AI hija kapaċi tipproduċi testijiet fluwidi, li jidhru bla xkiel iżda vojta. Kunfidenza falza — li ​​wieħed jemmen li s-softwer huwa korrett għax it-testijiet huma ħodor, meta fil-fatt it-testijiet ma jivverifikaw xejn—hija l-aktar ħaġa perikoluża li tista’ tiġri lil tim tal-QA; għax jaħbi mhux li m'hemmx żbalji, iżda li ma tistax tara l-iżbalji. Din l-unità tgħaqqad il-filosofija ta' validazzjoni tal-modulu kollu f'dixxiplina waħda: l-ittestjar tat-testijiet tiegħek.

L-istandard tad-deheb għall-kejl tal-kwalità tal-ittestjar: l-ittestjar tal-mutazzjoni

L-aktar mod b'saħħtu biex wieħed jifhem jekk test jipproteġix jew le huwa l-ittestjar tal-mutazzjoni (test tal-mutazzjoni - teknika li tipproduċi distorsjonijiet/mutazzjonijiet żgħar intenzjonati fil-kodiċi tas-sors u tkejjel jekk it-testijiet jiskoprux dawn id-distorsjonijiet). Il-loġika hija sempliċi: jekk tkisser il-kodiċi deliberatament (tagħmel + f'-, a > fi >=, vera f'falza), test suite tajba għandha taqbad dik il-korruzzjoni u ssir ħamra. Jekk ma jagħmilx hekk, dak it-tfixkil huwa mutant li baqgħu ħajjin — għalhekk it-testijiet tiegħek mhumiex fil-fatt jippreservaw dik l-imġieba.

Punteġġ ta' mutazzjoni = mutazzjoni maqtula / mutazzjoni totali. Pakkett b'kopertura tal-linja ta' 90% jista' jkollu punteġġ ta' mutazzjoni ta' 40%; Dan jindika li l-linji qed jaħdmu iżda l-imġieba mhix verifikata. Il-punteġġ tal-mutazzjoni huwa kejl tal-kwalità ħafna aktar onest minn kopertura perċentwali.

Tip: Hemm għodod awtomatiċi ta' mutazzjoni (PIT/Pitest għal Java, Stryker għal JavaScript/TypeScript, Stryker.NET għal .NET, mutmut għal Python). Dawn awtomatikament jiġġeneraw u jittestjaw mijiet ta 'mutazzjonijiet. Jekk ma jkollokx għodda, anke l-metodu manwali "break the code test" huwa imprezzabbli għall-funzjonijiet kritiċi.

It-tliet uċuħ tal-psewdo-fiduċja u l-antidotu tagħha

Forma psewdo-trust

sintomu

antidotu

Test mingħajr affermazzjoni

Il-kodiċi jaħdem, xejn mhu validat

Asserzjoni vera f'kull test; test b'mutazzjoni

test li jikkonferma lilu nnifsu

Mistennija = output tal-kodiċi

Ikkalkula l-valur mistenni b'mod indipendenti

Trivjali jasserixxu

"mhux null", "200 lura"

Ivvalida r-regola tan-negozju/riżultat attwali

Fallacy ta 'skop għoli

90% linji, protezzjoni baxxa

Ħares lejn il-punteġġ tal-mutazzjoni

Tolleranza fraġli tat-test

"Mwaħħla mill-ġdid, għaddi"

Kawża ewlenija + ittestjar deterministiku

L-użu tal-AI bħala "tim aħmar"

L-AI tista' kemm tiġġenera psewdo-fiduċja kif ukoll tkun alleata qawwija fil-kaċċa tagħha. Uża l-AI bħala tim aħmar kontra t-testijiet tiegħek stess: staqsi "ikteb kodiċi li jgħaddi minn dawn it-testijiet iżda li huwa żbaljat" jew "sib sovverżjoni li se tqarraq dawn it-testijiet." Jekk l-AI ssib lakuni fit-testijiet tiegħek, dawk il-lakuni huma riskji reali.

Attenzjoni: Staqsix lill-AI "Il-kwalità tat-test tiegħi hija tajba?" u ħu t-tweġiba "iva, kbira" bħala assigurazzjoni. AI għandha tendenza li tkun tajba. Minflok, sfida lill-AI għal kompitu konkret: "tipproduċi bug li jgħaddi minn dawn it-testijiet." Jekk tista 'tipproduċiha, it-testijiet tiegħek huma għomja għal dak l-iżball.

Mutazzjonijiet ekwivalenti u limiti tal-punteġġ

L-ittestjar tal-mutazzjoni huwa qawwi, iżda għandu qabda: xi mutazzjonijiet ma jbiddlux l-imġiba tal-kodiċi bl-ebda mod. Dawn jissejħu mutazzjonijiet ekwivalenti (mutant ekwivalenti — kodiċi korrotta, mutazzjoni li tipproduċi eżattament l-istess riżultat bħall-oriġinal). Pereżempju, it-tibdil tal-valur inizjali ta 'varjabbli li qatt ma jintuża ma jaffettwax l-output; L-ebda test ma jista 'u m'għandux jaqbad dan. Għalhekk, punteġġ ta 'mutazzjoni ta' 100% ħafna drabi ma jistax jintlaħaq fil-prattika u mhuwiex l-għan. It-tneħħija ta' mutazzjonijiet ekwivalenti bl-idejn hija ta' xogħol intensiv; Allura ma taqrax il-punteġġ tal-mutazzjoni bħala punteġġ ta 'eżami assolut, iżda bħala indikatur onest ta' "it-testijiet tiegħi verament jipproteġu?"

L-approċċ prattiku huwa dan: minflok ma tmexxi kontinwament l-ittestjar tal-mutazzjoni madwar il-bażi tal-kodiċi kollha, ħaddem fuq il-moduli li fihom l-ogħla riskju u r-regoli tan-negozju l-aktar kumplessi. Eżamina l-mutazzjonijiet superstiti f'dawn il-moduli wieħed wieħed; Jekk huwa vojt reali, żid test; jekk hija mutazzjoni ekwivalenti, immarkaha b'ġustifikazzjoni u għaddi. L-AI tista' twettaq screening inizjali biex tevalwa jekk mutazzjoni superstiti hijiex ekwivalenti; iżda d-deċiżjoni finali tittieħed minnek li taf x'jagħmel il-kodiċi.

Attenzjoni: L-ittestjar tal-mutazzjoni jiswa komputazzjoni (it-testijiet rilevanti kollha jerġgħu jsiru għal kull mutazzjoni). Allura strateġija komuni u raġonevoli hija li tiġi skedata bħala kontroll fil-fond ta 'kull ġimgħa jew qabel ir-rilaxx għal moduli kritiċi, aktar milli kull amalgamazzjoni.

Pront dgħajjef / Pront qawwi

Dgħajjef: "It-testijiet tiegħi huma biżżejjed?"
Qawwija: "Aġixxi bħala tim aħmar għal din il-funzjoni u test suite. (1) Iġġenera 8 mutazzjonijiet fil-kodiċi li jistgħu jinqatlu (sostituzzjoni tal-operatur, bidla fil-konfini, inverżjoni tal-kundizzjoni, sostituzzjoni tal-valur tar-ritorn). (2) Għal kull mutazzjoni, indika liema mit-testijiet eżistenti se jaqbduha u liema MHUX. jgħaddi minn dawn it-testijiet kollha iżda jikser ir-regola tan-negozju + testijiet: [paste]"

Pront qawwija; Hija tpoġġi lill-AI bħala eżaminatur li jkisser it-test, mhux magna tat-tifħir.

Erba' mudelli li jistgħu jiġu kkupjati

1) Kontroll manwali tal-mutazzjoni:

Iġġenera 8 mutazzjonijiet sinifikanti (tfixkil intenzjonali minuri) għal dan il-kodiċi: sostituzzjoni ta 'operatur aritmetiku, limitu ta' tqabbil (> vs >=), inverżjoni loġika, ritorn/sostituzzjoni kostanti, qbiż tal-kundizzjoni. Għal kull mutazzjoni, ibassar liema mit-testijiet disponibbli se jaqbadha jew le. Kodiċi+testijiet: [paste]

2) Qtil tal-mutazzjoni superstiti:

Ir-rapport tat-test tal-mutazzjoni li ġej fih mutazzjonijiet superstiti (mhux maqbuda): [lista/rapport]. Għal kull wieħed, ikteb test minimu li se joqtol dik il-mutazzjoni (il-kodiċi se jsir aħmar meta jitkisser b'dan il-mod). Ikkummenta dwar liema mġiba tikkonferma t-test.

3) Tim aħmar - demm it-test:

Tista' tikteb kodiċi li Tgħaddi mit-testijiet KOLLHA li ġejjin, iżda tikser ir-regola tan-negozju li ġejja: [regola tan-negozju]. Jekk iva, liema lakuna f'dawn it-testijiet tippermetti dan? Żid it-test li se jagħlaq dik il-lakuna. Testijiet: [pejst]

4) Spezzjoni tal-kwalità tat-test:

Iċċekkja din it-test suite għall-kwalità. Immarka għal kull test:- Hemm affermazzjoni vera jew hija props?- Il-valur mistenni huwa indipendenti, derivat mill-kodiċi?- Jivverifika r-regola tan-negozju jew xi ħaġa trivjali? Fl-aħħar agħti stima ta '"punteġġ ta' affermazzjoni vera" u t-3 testijiet l-aktar dgħajfa. Testijiet: [pejst]

tliet każijiet żgħar

Każ 1 — Kopertura 92%, punteġġ tal-mutazzjoni 38%. Tim wieħed qagħad fuq kopertura għolja. Meta l-ittestjar tal-mutazzjoni sar bi Stryker, il-punteġġ kien 38%: il-biċċa l-kbira tal-mutazzjonijiet prodotti baqgħu ħajjin. Din kienet prova li t-testijiet ma kinux qed imexxu l-linji u jivverifikaw l-imġieba. It-tim investa tliet ġimgħat fl-ittestjar tal-kwalità; Il-punteġġ tal-mutazzjoni żdied għal 81%, u żewġ żbalji reali ta 'kalkolu nqabdu minn dawn it-testijiet imsaħħa fir-rilaxx li jmiss.

Każ 2 — AI qarraq it-test. B'mudell ta '"tim aħmar", espert talab lill-AI għal kodiċi li għadda mit-testijiet eżistenti iżda kiser ir-regola ta' skont. L-AI kitbet kodiċi li dejjem irritorna skont ta 'żero - u t-testijiet kollha baqgħu ħodor minħabba li l-ebda testijiet ma kienu jivverifikaw il-valur attwali tal-iskont. Gap jidher, asserzjonijiet reali miżjuda.

Każ 3 — In-nassa tat-tifħir. Tester junior staqsa lill-AI, "It-testijiet tiegħi huma tajbin?" u kien meħlus meta sema 'r-risposta, "Komprensiva ħafna." Il-kollega anzjan tiegħu kellu l-istess testijiet ivverifikati bl-użu tal-mudell tal-"verifika tal-kwalità tat-test"; Irriżulta li 12 minn 20 test kienu dekorazzjoni (mingħajr affermazzjoni jew junk). Il-mistoqsija t-tajba ġabet it-tweġiba t-tajba.

Żbalji komuni

  • Żball ambitu għall-kwalità. Jiddependu fuq kopertura ta 'ringiela għolja u ma tħares lejn il-punteġġ tal-mutazzjoni xejn.
  • Fidu t-tifħir tal-AI. Tistaqsi "It-testijiet tiegħek huma tajbin?" u tikkunsidra t-tweġiba pożittiva bħala assigurazzjoni.
  • Derivazzjoni tal-valur mistenni mill-kodiċi. Testijiet li jivverifikaw lilhom infushom li jikkonfermaw kodiċi difettuż.
  • Kun kuntent b'affermazzjonijiet trivjali. Kontrolli li ma jivvalidawx ir-regola attwali, bħal "mhux null", "200 lura".
  • Injora mutazzjonijiet superstiti. Injora dak li ma nqabadx fir-rapport tal-mutazzjoni.
  • Lanqas ma tipprova timmodifika manwalment il-kodiċi kritiku. Taqbeż il-pass "kisser il-kodiċi u test" jekk l-għodda ma tkunx disponibbli.

Fil-qosor

Psewdo-trust qed jemmen li s-softwer huwa korrett minħabba li t-testijiet huma ħodor; billi t-testijiet jistgħu ma jikkonfermaw xejn. L-istandard tad-deheb għall-kejl ta 'dan huwa l-ittestjar tal-mutazzjoni: tkisser il-kodiċi deliberatament u tkejjel jekk it-testijiet jaqbduhx. Il-punteġġ tal-mutazzjoni huwa kejl tal-kwalità ħafna aktar onest minn kopertura perċentwali. L-AI kemm tipproduċi psewdo-fiduċja kif ukoll issir tim aħmar b'saħħtu fil-kaċċa tiegħu — staqsi "tipproduċi bug li jgħaddi minn dawn it-testijiet." Ittestja t-testijiet tiegħek: asserzjoni vera, valur mistenni indipendenti, validazzjoni tar-regoli tan-negozju, u mutazzjonijiet maqtula.

Kompitu ta' applikazzjoni

Importa funzjoni li jkun fiha regola tan-negozju u t-testijiet tagħha mill-proġett tiegħek stess. Jekk possibbli, ħaddem għodda tal-mutazzjoni (Stryker/Pitest/mutmut) u kejjel il-punteġġ tal-mutazzjoni; Jekk ma jkunx hemm għodda, iġġenera mill-inqas 8 mutazzjonijiet bil-mudell "kontroll manwali tal-mutazzjoni" u pprovahom manwalment. Għal kull mutazzjoni superstiti, ikteb test ġdid bil-mudell "qatla mutazzjoni superstiti". Fl-aħħarnett, bil-mudell "tim aħmar", ara jekk l-AI tistax tipproduċi kodiċi li jqarraq it-testijiet tiegħek. Irrapporta l-punteġġ tal-mutazzjoni tal-bidu u tat-tmiem tiegħek (jew ir-rata ta' mutazzjoni maqbuda/total).

lista ta' kontroll

  • [ ] I evalwajt il-kwalità tat-test skont il-punteġġ tal-mutazzjoni, mhux il-kopertura.
  • [ ] Jien għamilt l-ittestjar tal-mutazzjoni (jew b'għodda jew manwalment) għal kodiċi kritiku.
  • [ ] Jien ktibt testijiet ġodda għal kull mutazzjoni superstiti.
  • [ ] Użajt l-AI bħala t-tim aħmar u fittixt il-lakuni fit-testijiet tiegħi.
  • [ ] Ma ħadtx it-tifħir tal-AI "it-testijiet tiegħek huma tajbin" bħala serħan il-moħħ.
  • [ ] Iċċekkjt ​​li kull test jivverifika l-affermazzjoni attwali, il-valur mistenni indipendenti, u r-regola tan-negozju.