Hagnaður:
- Geta til að framleiða einingaprófanir, jaðartilvik og greiningu á þekjubili með gervigreind
- Geta til að prenta prófvæntingar byggðar á forskriftinni, ekki núverandi hegðun kóðans
- Geta til að prófa hvort próf verndar í raun með því að sprauta villum
Að skrifa próf er eitt verðmætasta verkefnið sem flestir forritarar fresta. Góð prófunarsvíta er sönnun þess að kóðinn virkar eins og búist er við og líflína fyrir breytingar í framtíðinni. Vandamálið er að ritun próf er endurtekin og tímafrek - nákvæmlega sú vinna þar sem gervigreind skín. En það er galli: AI prófar oft núverandi hegðun kóðans, ekki hegðunina sem hún ætti að vera. Að stjórna þessum mun er kjarninn í þessari einingu.
Í þessari einingu muntu læra einingaprófun (prófun sem prófar aðgerð ein, í einangrun), jaðartilvikspróf og útbúa prófunargögn með gervigreind; að loka eyður í prófumfjöllun; og hvers vegna það er hættulegt að treysta gervigreindarprófum í blindni.
Tvær hliðar prófunar: Lagfæring á hegðun vs
Próf getur þjónað tveimur mismunandi tilgangi. Í fyrsta lagi er staðfesting: það prófar að kóðinn sé réttur, að hann sé í samræmi við forskriftina. Annað er aðhvarfsvörn: hún frýs hegðun kóðans í dag, þannig að ef einhver breytir honum óvart á morgun mun prófið brotna og láta vita.
gervigreind er mjög góð í því síðarnefnda; Það lítur á kóðann og býr til mál sem prófa "hvað það er að gera núna." En ef kóðinn er rangur frá upphafi getur gervigreind fest þá rangu hegðun sem „rétt“. Svo þú verður að endurskoða fullyrðingu hvers prófs sem gervigreindin framleiðir: „Kóðinn skilar 42 og prófið gerir ráð fyrir 42“ þýðir ekki að 42 sé rétt svar.
Varúð: Ef gervigreindin stenst prófið þýðir það ekki að kóðinn sé "virkur"; það þýðir bara "það hegðar sér eins og gervigreindin býst við". Þú ákveður hvort væntingin sé rétt eða ekki með því að skoða forskriftina.
Skref fyrir skref: Að skrifa öflug próf með gervigreind
- Gefðu forskriftina, ekki bara kóðann. Ef þú bætir við upplýsingum „Þessi aðgerð ætti að gera þetta“ getur gervigreind skrifað réttar væntingar; Það mun prófa núverandi hegðun ef þú gefur bara kóðann.
- Biðjið um kantmál. Tómt, núll, núll, neikvætt, of stórt, slæmt snið, samtímis — hafðu beinlínis tilkall til hamingjunnar.
- Tilgreindu prófunarramma og stíl. "notaðu pytest", "Raðaðu-Act-Assert mynstur", "leyfðu hverju prófi að prófa eitt" o.s.frv.
- Athugaðu væntingar (fullyrðingar). Berðu saman við forskriftina sem hver staðhæfing athugar fyrir rétt gildi.
- Lokaðu eyður í umfangi. Gefðu fyrirliggjandi próf og spyrðu "hvaða greinar og mál hafa ekki verið prófuð?" láta þig spyrja; staðfestu síðan viðbótarpróf sem framleidd eru.
Þrjú Mini Cass
Mál 1 — Þekkja frá 52% í 85%. Prófþekkja einnar þjónustueiningar var 52%. Teymið mataði gervigreindarprófin sem fyrir voru, lét það skrá óprófuð útibú og búa til próf fyrir þau. Við endurskoðun manna jókst umfjöllun í 85%; Í því ferli afhjúpaði gervigreind raunverulega villu (slóð sem skilaði röngum villukóða) í villugrein sem hafði aldrei verið prófuð áður.
Tilfelli 2 - Falsvæntingarfestingargildran. A peningasöfnunaraðgerð var í raun rangt; Í stað þess að námunda 2,675 í 2,67 var það námundað 2,67 í stað 2,68. Gervigreindin horfði á kóðann og skrifaði assert round_money(2.675) == 2.67 - frysti villuna sem „sönn“. Þegar verktaki las forskriftina leiðrétti hann væntingarnar og náði raunverulegu villunni. Að prófa regluna, ekki kóðann, gerði gæfumuninn.
Tilfelli 3 - Sprenging í jaðarástandi. Þegar þú biður gervigreindina um aðeins „brúntilvik“ fyrir aðgerðatímabilsaðgerð; Það framleiddi 8 tilvik eins og byrjun=endir, öfugt bil, hlaupár 29. febrúar, mismunandi tímabelti og núllbil. Tvö þessara (öfugt bil og hlaupár) voru í raun að valda villunni. Oft er sleppt að íhuga þessi mál handvirkt; AI varð samstarfsaðili um „hugmyndaflug“ hér.
Fjögur afritanleg sniðmát
Forskriftarbyggð prófunarframleiðsla:
Hlutverk: Verktaki sem skrifar próf. Framework: {{pytest/JUnit/Jest...}}.Hvað ætti aðgerðin að GERA (forskrift): {{rule}}Skrifaðu próf fyrir eftirfarandi fall. Skrifaðu væntingar í samræmi við forskriftina, EKKI núverandi framleiðsla kóðans. Hamingjusamur slóð + bættu við að minnsta kosti 4 brúnum. Láttu hvert próf prófa eitt, notaðu lýsandi nafn. {{function}}
Hugmyndaflug um kantmál:
Listaðu brún/bilunartilvik sem ætti að reyna við prófun fyrir þessa aðgerð (null, null, brotpunktar, slæmt snið, samtímis, ytri villa). Fyrir hvert tilvik: inntak, væntanleg hegðun. EKKI skrifa kóða ennþá, bara lista.{{function}}
Greining á þekjubili:
Hér að neðan eru aðgerðir og tiltæk próf. Hvaða greinar, aðstæður og tilvik hafa ekki verið prófuð? Skráðu gallana og skrifaðu ný próf eingöngu fyrir annmarkana. Ekki endurtaka þær sem fyrir eru. Virkni:{{function}}Próf:{{existing_tests}}
Prófunargögn / sýndarhlutur:
Búðu til raunhæf prófunargögn fyrir {{function/service}} próf: gild sýni, landamærasýni og ógild sýni sérstaklega. Stingdu upp á einfaldri spotthegðun fyrir ytri ósjálfstæði {{X}}. Notkun sanna trúnaðargagna/PII; Búðu til fölsuð gögn.
Veik kvaðning / Sterk kvaðning
Veik: "Skrifaðu próf fyrir þessa aðgerð."
Sterkt: "með pytest. Virkni apply_discount(total, percent) — regla: afsláttur verður að vera 0%–30%, utan marka ætti að henda ValueError, niðurstaða ætti að vera námunduð að 2 aukastöfum. Skrifaðu væntingar með þessari REGLU (ekki með kóða). Hamingjusamur slóð + þessi brúntilvik: 0%, 30%, [31%, total."=villa.
Hann gefur sterka losunarreglu og segir "skrifaðu væntinguna samkvæmt reglunni, ekki kóðanum"; Þessi eina setning lokar gildru gervigreindar sem lagar ranga hegðun.
Próf gerð
AI framlag
manna stjórn
Gleðilegt vegaeiningapróf
hröð beinagrind
Er væntingin rétt?
Kantmál
Umfangsmikil hugarflug
Útrýma því óviðkomandi
Fylling í bili
Finnur sleppt greinar
Staðfestu mikilvægi
Próf gögn / spotti
Framleiðir raunhæft sýnishorn
Engin PII, raunsæisstýring
Próf stýra gæðum, ekki tryggja það
Mikil prófumfjöllun gefur sjálfstraust, en það getur líka verið villandi: 100 prósent umfjöllun þýðir "hver lína var keyrð," ekki "hver lína er rétt." Það er auðvelt að auka umfang með gervigreind; Raunverulegt gildi er að skrifa þýðingarmiklar væntingar. Gildi prófs er hæfni þess til að brjóta og láta þig vita þegar kóðinn er brotinn. Þess vegna eru gervigreindarprófanir byggðar á spurningunni "brotnar kóðinn virkilega þegar hann breytist?" Prófaðu það með spurningunni; Að brjóta línu af ásettu ráði og sjá prófunarbrotið (hugmynd um stökkbreytingu) er sönnun þess að prófið virkaði.
Ábending: Til að sjá hvort próf sem gervigreindin virkar, búðu til smá villu í kóðanum (t.d. breyttu + í -) og athugaðu hvort prófið bilar. Ef það bilar ekki verndar það próf þig ekki.
Algeng mistök
- Að biðja um próf án þess að gefa upp regluna. Líkanið frýs núverandi hegðun; lagar villuna sem "true".
- Að samþykkja væntingar án þess að lesa þær. Prófun er villandi ef þú athugar ekki hvort fullyrðingarnar séu að athuga með rétt gildi.
- Bara að prófa hamingjuleiðina. Raunverulegar villur lifa á jaðrinum; Biðjið sérstaklega um jaðartilvik.
- Að misskilja svigrúmið í tilganginum. Hátt hlutfall er engin trygging fyrir réttri hegðun.
- Að búa til raunveruleg/falin gögn sem prófunargögn. Gögn viðskiptavina eða leyndarmál ættu ekki að fara inn í prófun og geymslu; Búðu til tilbúið gögn.
Í stuttu máli
Gervigreind tekur mikið af endurtekinni byrði af því að skrifa próf: það framleiðir hraðvirkar beinagrindur, stóra lista yfir jaðartilvik og greiningar á þekjubili. En mikilvægasti punkturinn eru væntingar: AI hefur tilhneigingu til að prófa núverandi hegðun kóðans, en próf ætti að vera skrifað í samræmi við forskriftina. Gefðu regluna, athugaðu væntingarnar, framfylgdu brúntilfellum og prófaðu hvort prófin vernda í raun með því að sprauta villu. Prófumfjöllun er tæki, ekki markmið.
Umsóknarverkefni
Veldu aðgerð og prentaðu fyrst próf á gervigreindina með því einfaldlega að gefa kóðann þess; Athugið væntingarnar. Prentaðu síðan prófið aftur og gefðu forskriftina (áskilin hegðun) fyrir sömu aðgerðina. Berðu saman væntingar prófunarsettanna tveggja: eru einhverjar mismunandi, hvort þeirra sýnir raunverulega villu? Að lokum skaltu ganga úr skugga um að eitt af mynduðu prófunum virkaði með því að bæta viljandi villu við kóðann og sjá prófunarbrotið.
gátlisti
- [ ] Ég geri greinarmun á því hvort prófið er til að laga eða sannreyna hegðun.
- [ ] Þegar ég bið um próf gef ég upp regluna (forskriftina) sem ætti að vera til staðar, ekki kóðann.
- [ ] Ég ber saman hverja myndaða fullyrðingu við forskriftina.
- [ ] Ég óska beinlínis eftir kant- og bilunarmálum.
- [ ] Ég lít á prósentuþekju sem tæki, ekki markmið.
- [ ] Ég prófa hvort próf verndar í raun með því að sprauta villum.