Eining 10 / 11

Falstraustsáhætta, prófgæði og stökkbreytingarpróf: Prófpróf

Hagnaður:

  • Hæfni til að bera kennsl á þrjú andlit gervitrausts (ekki fullyrðing, sjálfsfullyrðing, léttvæg fullyrðing) og beita móteitur
  • Hæfni til að nota stökkbreytingapróf og stökkbreytingastig sem nákvæmari mælikvarða á gæði en prósenta þekju með tóli eða hendi
  • Hæfni til að staðsetja gervigreind sem rautt lið gegn prófunum og leita að prófunargluggum án þess að falla í lofgildru

Kjarninn í þessari einingu er endurtekin viðvörun: grænt glóandi prófunarborð er ekki sönnun um gæði. Ef prófin þín gefa þér sjálfstraust þarftu að vita hvort það sjálfstraust er raunverulegt eða falsað. Á tímum gervigreindar (AI) er þessi spurning mikilvægari en nokkru sinni fyrr, vegna þess að gervigreind er dugleg að framleiða fljótandi, slétt útlit en hol próf. Falskt sjálfstraust - að trúa því að hugbúnaðurinn sé réttur vegna þess að prófin eru græn, þegar prófin sanna í raun ekki neitt - er það hættulegasta sem getur komið fyrir QA teymi; vegna þess að það felur ekki að það eru engar villur, heldur að þú getur ekki séð villurnar. Þessi eining sameinar staðfestingarheimspeki allrar einingarinnar í eina fræðigrein: að prófa prófin þín.

Gullstaðallinn til að mæla gæði prófa: stökkbreytingapróf

Öflugasta leiðin til að skilja hvort próf verndar í raun eða ekki er stökkbreytingapróf (stökkbreytingarpróf - tækni sem framleiðir viljandi litlar brenglun/stökkbreytingar í frumkóðanum og mælir hvort prófin greini þessar brenglun). Rökfræðin er einföld: ef þú brýtur vísvitandi kóðann (gerir + í -, a > í >=, satt í falskt), ætti góð prófunarsvíta að ná þeirri spillingu og verða rauð. Ef það gerir það ekki, þá er þessi truflun stökkbrigði sem lifðu af - þannig að prófin þín eru í raun ekki að varðveita þá hegðun.

Stökkbreytingarstig = stökkbreyting drepin / heildarstökkbreyting. Pakki með 90% línuþekju gæti haft stökkbreytingarstig upp á 40%; Þetta gefur til kynna að línurnar séu að virka en hegðunin er ekki staðfest. Stökkbreytingarstig er mun heiðarlegri mælikvarði á gæði en hlutfallsþekju.

Ábending: Það eru til sjálfvirk stökkbreytingarverkfæri (PIT/Pitest fyrir Java, Stryker fyrir JavaScript/TypeScript, Stryker.NET fyrir .NET, mutmut fyrir Python). Þetta mynda og prófa sjálfkrafa hundruð stökkbreytinga. Ef þú ert ekki með tól er jafnvel handvirka „brjóttu kóðaprófið“ aðferðin ómetanleg fyrir mikilvægar aðgerðir.

Þrjú andlit gervitrausts og móteitur þess

Gervitraust form

einkenni

móteitur

Próf án staðhæfingar

Kóði virkar, ekkert er staðfest

Sönn fullyrðing í hverju prófi; próf með stökkbreytingu

sjálfsstaðfestingarpróf

Búist við = úttak kóða

Reiknaðu væntanlegt gildi sjálfstætt

Lítil fullyrðing

"ekki núll", "200 skilað"

Staðfesta viðskiptareglu/raunverulega niðurstöðu

Mikið umfangsvilla

90% línur, lítil vörn

Horfðu á stökkbreytingarstigið

Brothætt prófþol

„Föst aftur, framhjá“

Rót orsök + ákvarðandi prófun

Að nota gervigreind sem „rautt lið“

Gervigreind getur bæði myndað gervitraust og verið öflugur bandamaður í að veiða það niður. Notaðu gervigreind sem rautt lið gegn þínum eigin prófum: spurðu "skrifaðu kóða sem stenst þessi próf en er rangur" eða "finndu undirróður sem mun blekkja þessi próf." Ef gervigreind finnur glufur í prófunum þínum eru þessar glufur raunveruleg áhætta.

Varúð: Ekki spyrja gervigreindina „Er prófgæði mín góð?“ og taktu svarið „já, frábært“ sem fullvissu. AI hefur tilhneigingu til að vera góður. Í staðinn skaltu skora á gervigreindina í áþreifanlegt verkefni: „framleiða villu sem stenst þessar prófanir. Ef það getur framleitt það eru prófin þín blind fyrir þá villu.

Jafngildar stökkbreytingar og mörk stiga

Stökkbreytingarprófanir eru öflugar, en þær hafa galla: sumar stökkbreytingar breyta hegðun kóðans alls ekki. Þetta eru kallaðar jafngildar stökkbreytingar (jafngild stökkbreyting — skemmdur kóði, stökkbreyting sem gefur nákvæmlega sömu niðurstöðu og upprunalega). Til dæmis, breyting á upphafsgildi breytu sem er aldrei notuð hefur ekki áhrif á úttakið; Ekkert próf getur og ætti ekki að ná þessu. Þess vegna er 100% stökkbreytingarskor oft óframkvæmanlegt í reynd og er ekki markmiðið. Að eyða jafngildum stökkbreytingum með höndunum er vinnufrek; Svo ekki lesa stökkbreytingarskorið sem algjört prófskor heldur sem heiðarlegan vísbendingu um "vernda prófin mín virkilega?"

Hagnýta nálgunin er þessi: í stað þess að keyra stöðugt stökkbreytingapróf yfir allan kóðagrunninn skaltu keyra hana á einingunum sem innihalda mestu áhættuna og flóknustu viðskiptareglurnar. Skoðaðu eftirlifandi stökkbreytingar í þessum einingum einn í einu; Ef það er raunverulegt bil skaltu bæta við prófi; ef það er sambærileg stökkbreyting, merktu það með rökstuðningi og samþykktu. AI getur framkvæmt fyrstu skimun til að meta hvort eftirlifandi stökkbreyting sé jafngild; en endanleg ákvörðun er tekin af þér sem veist hvað kóðinn gerir.

Varúð: Stökkbreytingarpróf eru reikningslega dýr (öll viðeigandi próf eru endurtekin fyrir hverja stökkbreytingu). Þannig að algeng og sanngjörn stefna er að skipuleggja það sem vikulega eða forútgáfu djúpt athugað fyrir mikilvægar einingar, frekar en hverja sameiningu.

Veik kvaðning / Sterk kvaðning

Veik: "Eru prófin mín næg?"
Sterkt: "Að virka sem rautt teymi fyrir þessa aðgerð og prófunarsvítu. (1) Búðu til 8 stökkbreytingar í kóðanum sem hægt er að drepa (rekstrarskipta, landamæraskipti, skilyrðissnúning, endurnýjun gildisskipta). (2) Fyrir hverja stökkbreytingu, tilgreinið hver núverandi próf mun ná henni og hver mun EKKI. (3) Fyrir hverja stökkbreytingu sem lifir, skrifaðu nýtt próf sem getur drepið það líka ef (það getur drepið það) dæmi. prófar en brýtur í bága við viðskiptaregluna Kóði+próf: [líma]“.

Öflug hvetja; Það staðsetur gervigreind sem prófunarprófara, ekki lofvél.

Fjögur afritanleg sniðmát

1) Handvirk stökkbreytingarstýring:

Búðu til 8 marktækar stökkbreytingar (minniháttar viljandi truflanir) fyrir þennan kóða: skipting reiknivélar, samanburðarmörk (> á móti >=), rökrétt snúning, aftur/stöðug skipting, skilyrðisslepping. Fyrir hverja stökkbreytingu, spáðu fyrir um hvaða af tiltækum prófunum mun ná henni eða ekki. Kóði+próf: [líma]

2) Að drepa eftirlifandi stökkbreytinguna:

Eftirfarandi stökkbreytingaprófunarskýrsla inniheldur eftirlifandi (óveiddar) stökkbreytingar: [listi/skýrsla]. Skrifaðu lágmarkspróf fyrir hvern sem mun drepa þá stökkbreytingu (kóðinn verður rauður þegar hann er brotinn þannig). Athugaðu hvaða hegðun prófið staðfestir.

3) Rauða liðið - blóðprófið:

Getur þú skrifað kóða sem stenst ÖLL eftirfarandi próf, en brýtur í bága við eftirfarandi viðskiptareglu: [viðskiptareglu]. Ef svo er, hvaða glufu í þessum prófum leyfir þetta? Bættu við prófinu sem mun loka þeirri glufu. Próf: [líma]

4) Próf gæðaskoðun:

Athugaðu þessa prófunarsvítu fyrir gæði. Merktu við fyrir hvert próf:- Er það sönn fullyrðing eða er það leikmunir?- Er væntanlegt gildi óháð, dregið af kóða?- Staðfestir það viðskiptaregluna eða eitthvað léttvægt? Gefðu að lokum áætlað „true assert score“ og 3 veikustu prófin. Próf: [líma]

þrjú smámál

Tilfelli 1 — Þekking 92%, stökkbreytingarstig 38%. Eitt lið treysti á mikla umfjöllun. Þegar stökkbreytingapróf var keyrt með Stryker var stigið 38%: flestar stökkbreytingarnar sem framleiddar voru lifðu af. Þetta var sönnun þess að prófin voru ekki að keyra línurnar og sannreyna hegðunina. Teymið fjárfesti þrjár vikur í prófun á gæðum; Stökkbreytingarstigið jókst í 81% og tvær raunverulegar reikningsvillur fundust í þessum auknu prófunum í næstu útgáfu.

Tilfelli 2 - AI plataði prófið. Með „rauðu teymi“ sniðmáti bað sérfræðingur gervigreindina um kóða sem stóðst núverandi próf en braut afsláttarregluna. Gervigreindin skrifaði kóða sem skilaði alltaf núllafslætti - og öll próf héldust græn vegna þess að engin próf voru að sannreyna raunverulegt afsláttargildi. Gjá séð, alvöru fullyrðingar bætt við.

Mál 3 - Lofgildran. Yngri prófunaraðili spurði gervigreindina: "Eru prófin mín góð?" og var létt að heyra svarið: "Mjög yfirgripsmikið." Eldri samstarfsmaður hans lét endurskoða sömu próf með því að nota „prófgæðaúttekt“ sniðmátið; Í ljós kom að 12 af 20 prófum voru skreytingar (án fullyrðinga eða rusls). Rétt spurning kom með rétta svarið.

Algeng mistök

  • Misvísandi svigrúm fyrir gæði. Að treysta á háa raðþekju og alls ekki horfa á stökkbreytingarstigið.
  • Að treysta lofi gervigreindar. Að spyrja "Eru prófin þín góð?" og lítur á hið jákvæða svar sem fullvissu.
  • Að draga væntanlegt gildi úr kóða. Sjálfsstaðprófanir sem staðfesta gallaðan kóða.
  • Vertu sáttur við léttvægar fullyrðingar. Athuganir sem staðfesta ekki raunverulega reglu, svo sem „ekki núll“, „200 skilað“.
  • Hunsa eftirlifandi stökkbreytingar. Hunsa það sem ekki kom fram í stökkbreytingaskýrslunni.
  • Ekki einu sinni að reyna að breyta mikilvægum kóða handvirkt. Sleppa skrefinu „brjóta kóðann og prófa“ ef tólið er ekki tiltækt.

Í stuttu máli

Gervitraust er að trúa því að hugbúnaður sé réttur vegna þess að prófin eru græn; en prófin geta ekki staðfest neitt. Gullstaðalinn til að mæla þetta er stökkbreytingapróf: að brjóta kóðann vísvitandi og mæla hvort prófin ná honum. Stökkbreytingarstig er mun heiðarlegri mælikvarði á gæði en hlutfallsþekju. Gervigreind framleiðir bæði gervitraust og verður öflugt rautt lið í að veiða það - spyrðu „framleiða villu sem stenst þessar prófanir. Prófaðu prófin þín: sanna staðhæfingu, óháð væntanlegt gildi, staðfesting viðskiptareglna og drepnar stökkbreytingar.

Umsóknarverkefni

Flytja inn fall sem inniheldur viðskiptareglu og próf hennar úr eigin verkefni. Ef mögulegt er skaltu keyra stökkbreytingatól (Stryker/Pitest/mutmut) og mæla stökkbreytingarstigið; Ef það er ekkert tól skaltu búa til að minnsta kosti 8 stökkbreytingar með "handvirk stökkbreytingarstýring" sniðmátinu og prófa þær handvirkt. Fyrir hverja eftirlifandi stökkbreytingu, skrifaðu nýtt próf með sniðmátinu „drepa eftirlifandi stökkbreytingu“. Að lokum, með „rauða liðinu“ mynstrinu, athugaðu hvort gervigreind geti framleitt kóða sem blekkir prófin þín. Tilkynntu upphafs- og lokastig stökkbreytinga (eða caught/all stökkbreytingartíðni).

gátlisti

  • [ ] Ég met gæði prófs út frá stökkbreytingarstigum, ekki þekju.
  • [ ] Ég keyrði stökkbreytingarpróf (annaðhvort með tóli eða handvirkt) fyrir mikilvægan kóða.
  • [ ] Ég skrifaði ný próf fyrir hverja eftirlifandi stökkbreytingu.
  • [ ] Ég notaði gervigreind sem rauða liðið og leitaði að glufum í prófunum mínum.
  • [ ] Ég tók ekki „prófin þín eru góð“ lof gervigreindarinnar sem fullvissu.
  • [ ] Ég athugaði að hvert próf sannreyni raunverulegt fullyrðingu, óháð væntanlegt gildi og viðskiptareglu.