Qligħ:
- Kapaċità li tipprevjeni l-intelliġenza artifiċjali milli taċċetta mġiba żbaljata bħala "korretta" billi tikkalkula l-valur mistenni fit-testijiet tal-unità indipendentement mir-regola tal-aċċettazzjoni
- Kapaċità li tipprintja testijiet veloċi, indipendenti u ripetibbli billi tapplika l-prinċipji AAA u FIRST u tiċċaqlaq id-dipendenzi esterni
- Kapaċità li tittestja testijiet b'mutazzjoni (tkissir tal-kodiċi) u tirrikonoxxi kodiċi diffiċli biex tittestja bħala riħa tad-disinn
L-akbar u l-aktar saff veloċi tal-piramida tal-ittestjar huwa l-ittestjar tal-unità — ittestjar li jivverifika funzjoni jew biċċa żgħira ta 'kodiċi b'mod iżolat minn kull ħaġa oħra. Eluf ta' testijiet tal-unità jaħdmu f'sekondi u jaqbdu bug waqt li l-kodiċi jkun għadu fuq l-iskrin tal-iżviluppatur. L-intelliġenza artifiċjali (AI) hija forsi l-aktar profiċjenti biex tipproduċi testijiet tal-unità: inti tagħtiha funzjoni, AI tipproduċi għexieren ta 'testijiet. Iżda din il-konvenjenza stess tagħti lok għall-akbar nassa: l-AI faċilment tipproduċi testijiet li "jiddidu aħdar iżda ma tivverifika xejn" jew taċċetta l-imġieba attwali (forsi difettuża) tal-kodiċi bħala "korretta". F'din l-unità titgħallem kif tikteb testijiet ta 'unità tassew protettivi bl-AI u r-relazzjoni bejn il-kodiċi li jista' jiġi ttestjat u l-AI.
Kwalitajiet ta' test unitarju tajjeb: L-EWWEL
Testijiet unitarji tajbin isegwu l-EWWEL prinċipji: Mgħaġġla, Indipendenti (it-testijiet m'għandhomx ikunu dipendenti fuq xulxin), Ripetibbli (ripetibbli — l-istess riżultat fi kwalunkwe ambjent), Awtovalidazzjoni (jgħaddi/falli ċari), F'waqtu (fil-ħin). Fakkar lilek innifsek f'dawn il-prinċipji meta jkollok testijiet li jipproduċu l-AI; speċifikament titlob li t-test ma jiddependix fuq id-dinja ta 'barra (database attwali, netwerk, arloġġ) li jkun "indipendenti" u "ripetibbli".
Mudell AAA u affermazzjoni espressiva
Test unitarju solidu jsegwi l-istruttura AAA: Irranġa (tipprepara — waqqaf inputs u dipendenzi), Aġixxi (eżegwixxi — sejjaħ il-funzjoni taħt test), Asserixxi (valida — qabbel ir-riżultat mal-valur mistenni). Il-kritika hija l-affermazzjoni. L-iżball l-aktar komuni li tagħmel l-AI huwa li tidderiva l-asserzjoni mill-output tal-kodiċi li qed jiġi ttestjat - il-loġika ta '"kull ma jirritorna l-kodiċi huwa veru". Dan jagħmel it-test bla sens. Il-mod korrett huwa li tiddetermina l-valur mistenni b'mod indipendenti (mill-kriterji ta 'aċċettazzjoni, ikkalkolah manwalment).
Attenzjoni: Jekk tgħid lill-AI "ikteb test għal din il-funzjoni", l-AI tista' tħaddem il-funzjoni u tikteb l-output tagħha bħala "mistennija". Dan it-test jgħaddi anki jekk il-funzjoni tkun falza. Minflok, għid "inti tikkalkula r-riżultati mistennija skont dawn ir-regoli, tirreferix għall-output kurrenti tal-funzjoni."
Mocks, stubs u dipendenzi
L-ittestjar tal-unità jeħtieġ iżolament. Jekk il-funzjoni tiegħek tiddependi fuq database jew API, huma sostitwiti b'oġġetti finta (mock/stub — sostitut ikkontrollat u finta għad-dipendenza reali) fl-ittestjar. Dan jagħmel it-test rapidu, indipendenti u riproduċibbli. AI tista 'tipproduċi installazzjoni finta; Imma oqgħod attent minn mocking eċċessiv: jekk mock kollox, it-test jivverifika biss "dak li l-mock jirritorna", mhux il-loġika attwali. Bilanċ: jimita d-dinja ta 'barra, tesegwixxi l-loġika reali taħt test.
Testabbiltà u AI
Hemm feedback interessanti: kodiċi li diffiċli biex jiġi ttestjat ħafna drabi huwa kodiċi ddisinjat ħażin. Jekk l-AI għandha problemi biex tikteb testijiet għal funzjoni (wisq dipendenzi, stat globali moħbi, effetti sekondarji), dik hija riħa ta 'disinn. Li tistaqsi lill-AI "kif tirrefactor dan il-kodiċi biex tagħmilha testable" twassal kemm għal ttestjar aħjar kif ukoll għal kodiċi aħjar.
Testijiet parametrizzati u diversità tad-dejta
Il-kitba ta 'test separat kull darba biex tivverifika l-istess regola b'inputs differenti hija kemm tedjanti kif ukoll diffiċli biex tinżamm. Ittestjar parametrizzat - struttura li ripetutament tmexxi l-istess loġika tat-test fuq lista ta 'inputs u riżultati mistennija - jelimina din ir-repetizzjoni: korp wieħed tat-test jiġi mitmugħ b'għexieren ta' pari ta 'input. L-AI hija effiċjenti ħafna biex tipproduċi dawn it-tabelli tar-riżultati mistennija mill-input meta tagħtiha r-regoli ta' aċċettazzjoni tiegħek; B'mod partikolari, tfassal b'mod sistematiku valuri ta' limitu u klassijiet ta' ekwivalenza.
Iżda hawn nassa wkoll: l-AI għandha t-tendenza li tikseb ir-riżultati mistennija fit-tabella ġġenerata mill-kodiċi li qed jiġi ttestjat. Dan l-iżball huwa saħansitra aktar perikoluż fl-ittestjar parametrizzat, minħabba li loġika waħda mhux korretta tinvalida għexieren ta 'linji. Għalhekk, dejjem ikkalkula l-kolonna tar-riżultat mistenni b'mod indipendenti skont ir-regola tal-aċċettazzjoni u ivvalida manwalment mill-inqas ftit ringieli. Staqsi wkoll għal kolonna ta' deskrizzjoni "x'jirrappreżenta kull ringiela"; hekk meta tinkiser ringiela tara istantanjament liema stat huwa miksur.
Tip: Żid intenzjonalment "filliera ta 'nassa" mat-tabella tat-test parametrizzata - jiġifieri, xjentement ttajpja r-riżultat ħażin. Jekk dik il-linja ma ssirx ħamra meta tmexxi t-test, it-test tiegħek fil-fatt mhux qed jivverifika dik is-sitwazzjoni. Dan huwa mock-pass check malajr.
Pront dgħajjef / Pront qawwi
Dgħajjef: "Ikteb test unitarju għal din il-funzjoni."
Qawwija: Ikteb testijiet tal-unità [lingwa/qafas] għall-funzjoni "taxCalculate(ammont, rata). Regola ta' aċċettazzjoni: riżultat = ammont * rata, imqarrba għal 2 deċimali; ammont negattiv jew rata tarmi żball; jirritorna 0 jekk ir-rata hija 0. Uża struttura AAA. Ikkalkula manwalment il-valuri mistennija skond DAWN ir-regoli attwali; kbir, tond għal deċimali). Ħalli l-isem ta' kull test jiddeskrivi r-regola li jivverifika "Le."
Pront qawwija; Jagħti r-regola tal-aċċettazzjoni, l-aspettattiva tal-valur mistenni indipendenti, l-istruttura u l-każijiet tat-tarf. Għalhekk, it-test isir il-gwardjan tar-regola, mhux il-mera tal-kodiċi.
Tabella tal-kwalità tat-test tal-unità
sintomu
Test ħażin (fake-trust)
test tajjeb
jasserixxu
Xejn jew "mhux null"
Valur konkret mistenni
Sors tal-valur mistenni
Output tal-funzjoni
Regola ta 'aċċettazzjoni / kalkolu manwali
vizzju
DB attwali/netwerk/siegħa
Iżolati b'mock/stub
każ tarf
Triq kuntenta biss
limitu, negattiv, żball
Meta tikser il-kodiċi
jibqa aħdar
isir aħmar
Isem
test1, testMethod
jiddeskrivi r-regola li tikkonferma
Erba' mudelli li jistgħu jiġu kkupjati
1) Ittestjar tal-unità mmexxi mir-regoli:
Ir-rwol tiegħek: inġinier anzjan tat-test tas-softwer.Ikteb test unitarju fuq il-funzjoni li ġejja b’[lingwa/qafas]: [firma].Regoli ta’ aċċettazzjoni: [regoli].- Uża struttura AAA.- Ikkalkula manwalment il-valuri mistennija skont DAWN ir-regoli; MA tirreferix l-output kurrenti tal-funzjoni. - Ikopri l-limitu, negattiv, żball u mogħdija kuntenta b'testijiet separati. - Ħalli kull isem tat-test jiddeskrivi r-regola li jivverifika. - Dipendenzi esterni finta; Agħmel il-loġika attwali taħdem.
2) Kontroll tar-reżistenza tal-mutazzjoni:
Iċċekkja dawn it-testijiet unitarji. Elenka 5 tweaks minuri li stajt nagħmel lill-kodiċi taħt test (a - minflok +, a >= minflok a >, bidla fil-konfini) u għidli għal kull wieħed LIEMA minn dawn it-testijiet se jsir aħmar? Jekk l-ebda wieħed ma jintbagħat lura, it-test ma jkunx biżżejjed. Kodiċi + testijiet: [pejst]
3) Reviżjoni tat-testabilità:
Għaliex huwa diffiċli li tikteb test unitarju għal din il-funzjoni? Vizzju moħbi, status globali, effetti sekondarji, hemm ħafna responsabbiltajiet? Issuġġerixxi refactoring minimu biex tagħmilha testable; tbiddilx l-imġieba. Kodiċi: [paste]
4) Tlestija tax-xenarju mhux kompluta:
Il-funzjoni li ġejja u t-testijiet disponibbli huma mogħtija. Elenka liema imġieba/edgecase QATT ma ġiet ittestjata (vojt fl-ambitu) u żid test għal kull wieħed. Funzjoni+testijiet: [pejst]
tliet każijiet żgħar
Każ 1 — Test li jirrifletti l-kodiċi. Żviluppatur kellu l-AI jikteb test għall-funzjoni ta 'arrotondament; 10 testijiet kienu ħodor. Fil-fatt, il-funzjoni kienet qed tirrotonda fid-direzzjoni żbaljata, iżda l-AI kienet ħadet il-valuri mistennija mill-output tal-funzjoni, għalhekk it-testijiet qiesu l-iżball "veru". Meta l-valuri mistennija ġew ikkalkulati manwalment bil-mudell "immexxi mir-regoli", 4 testijiet saru ħomor u l-iżball reali ġie żvelat.
Każ 2 — Il-valur tal-kontroll tal-mutazzjoni. Tim wieħed qagħad fuq 45 unit test. Ippruvaw 20 tweaks minuri fil-kodiċi b'"kontroll tar-robustezza tal-mutazzjoni"; it-testijiet qabdu biss 11 minnhom. Id-9 tfixkil li kien fadal għaddew skiet. It-tim saħħaħ testijiet dgħajfa; Żball attwali ta' kalkolu nqabad minn dawn it-testijiet imsaħħa fir-rilaxx li jmiss.
Każ 3 — In-nuqqas ta' prova hija riħa tad-disinn. L-AI ma setgħetx tikteb testijiet għal funzjoni li tordna, kienet dejjem teħtieġ id-database reali. Il-mudell "reviżjoni tat-testability" wera li l-funzjoni inkorporata aċċess għad-database. Meta tneħħiet l-injezzjoni tad-dipendenza, setgħu jinkitbu testijiet u l-kodiċi sar aktar nadif.
Żbalji komuni
- Derivazzjoni tal-valur mistenni mill-kodiċi. L-AI taċċetta l-output tal-funzjoni bħala "korretta"; test li jikkonferma kodiċi difettuż.
- Test mingħajr affermazzjoni jew b'asserzjoni trivjali. "Hu ma tarmi żball, huwa għadda" loġika; Ma tikkonferma xejn.
- Mock estremi. Mocking kollox u ttestjar biss dak li l-mock jirritorna; il-loġika reali mhix ittestjata.
- Biss it-triq kuntenta. Jinjora l-istati tal-limitu, negattivi u ta 'żball.
- Mhux ttestjar billi jikser il-kodiċi. Fidu aħdar mingħajr verifika għall-mutazzjoni.
- Injora l-intestabilità. Mhux tirrikonoxxi u tiffissa disinn ħażin minflok timbotta l-ittestjar iebes.
Fil-qosor
It-testijiet tal-unità huma l-aktar saff mgħaġġla u l-akbar tal-piramida tal-ittestjar; Jaqbad l-iżball fl-irħas mument. L-AI hija kapaċi ħafna li tipproduċi testijiet tal-unità, iżda l-akbar żvantaġġ tagħha huwa li tikteb testijiet li jassumu mġiba skorretta bħala "korretta" billi tikseb il-valur mistenni mill-kodiċi innifsu. Soluzzjoni: agħti r-regoli ta 'aċċettazzjoni, ikkalkula l-valuri mistennija manwalment, inforza l-prinċipji AAA u l-EWWEL, mock-dinja ta' barra u mexxi l-loġika attwali, u ttestja kull test b'mutazzjoni (kisser il-kodiċi). Kodiċi li huwa diffiċli biex jiġi ttestjat huwa sinjal tad-disinn li jeħtieġ iffissar.
Kompitu ta' applikazzjoni
Agħżel funzjoni li fiha regola tan-negozju mill-proġett tiegħek stess. Ikteb regoli ta’ aċċettazzjoni u agħmel li l-AI tikteb it-testijiet bil-mudell ta’ “test ta’ unità mmexxi mir-regoli”; Ikkalkula l-valuri mistennija manwalment. Imbagħad applika l-"kontroll tar-robustezza tal-mutazzjoni": agħmel mill-inqas 5 pawżi żgħar fil-kodiċi u kejjel kemm-il testijiet isiru ħomor. Żid test ġdid għall-korruzzjoni mhux maqbuda. Irrapporta kemm inqabdu tfixkil (bħal punteġġ ta’ mutazzjoni).
lista ta' kontroll
- [ ] Jien tajt ir-regoli tal-aċċettazzjoni u kelli l-valuri mistennija kkalkulati manwalment.
- [ ] Żgurajt li t-testijiet ma joħorġux il-valur mistenni mill-kodiċi.
- [ ] Stabbilixxijt ittestjar indipendenti wara linji gwida AAA u FIRST.
- [ ] I mocked-dipendenzi esterni u dam il-loġika attwali.
- [ ] I kopriet każijiet ta' limitu, negattivi u ta' żball.
- [ ] Billi kiss il-kodiċi (mutazzjoni) ippruvajt li t-testijiet tabilħaqq jipproteġu.