Unità 6 / 11

Ġenerazzjoni tat-Test b'Intelliġenza Artifiċjali: Testijiet ta' Unità, Interface u Awtomazzjoni

Qligħ:

  • Kapaċità li tipproduċi testijiet ta 'unità, integrazzjoni u UI b'intelliġenza artifiċjali skont il-piramida tal-ittestjar u tkopri sitwazzjonijiet ta' limitu u żball kif ukoll xenarji kuntenti
  • Kapaċità li tneħħi testijiet vojta/inutli u kopertura minfuħa billi tiċċekkja li kull test iġġenerat fil-fatt jivvalida mġiba
  • L-iżgurar li t-test jaqbad il-bug u ma jħallihx jirranġa l-bug billi tgħid lill-AI x'għandu jagħmel il-kodiċi

Il-kodiċi tal-kitba huwa nofs ix-xogħol; Li jipprova li l-kodiċi jaħdem b'mod korrett huwa n-nofs l-ieħor. L-apps mobbli jiltaqgħu ma’ mijiet ta’ apparati differenti, daqsijiet tal-iskrin, verżjonijiet tas-sistema operattiva, u mġiba tal-utenti. Huwa impossibbli li dawn kollha jiġu ttestjati manwalment; Huwa għalhekk li l-ittestjar awtomatizzat (kodiċi tat-test tal-kodiċi — ittestjar li jaħdem mingħajr klikk umana) huwa s-sinsla tal-kwalità mobbli. L-AI hija oerhört effiċjenti fit-testijiet tal-kitba minħabba li t-testijiet tal-kitba huma eżattament it-tip ta 'xogħol tal-mudell li jħobb: il-validazzjoni ta' mġiba speċifika għal inputs speċifiċi. F'din l-unità, se nitgħallmu kif naċċelleraw l-ittestjar tal-unità, l-ittestjar tal-interface u l-awtomazzjoni bl-AI, iżda niżguraw il-kwalità tat-test permezz tal-għajnejn tal-bniedem.

Piramida tal-ittestjar: x'għandek tittestja u kemm

Strateġija ta 'ttestjar b'saħħitha tixbah piramida. Il-bażi tinkludi numru kbir ta 'testijiet ta' unità (ittestjar ta 'malajr li jittestja funzjoni waħda jew klassi b'mod iżolat); huma veloċi u irħas. Fin-nofs hemm inqas ittestjar ta 'integrazzjoni (ttestjar ta' kif partijiet multipli jaħdmu flimkien). Fuq nett hemm UI minimu/testjar minn tarf sa tarf (testjar isir billi tikklikkja fuq l-iskrin kif jagħmel l-utent); huma realistiċi iżda bil-mod u fraġli. L-AI tgħin f'kull saff, iżda l-aktar valur huwa fil-bażi: tipproduċi malajr testijiet tal-unità tal-loġika tan-negozju.

Tip tat-test

Ambitu

veloċità

Effiċjenza tal-AI

ittestjar tal-unità

Funzjoni/klassi waħda

malajr ħafna

għolja ħafna

integrazzjoni

saff ta' bejn is-saffi

medju

għolja

UI / tarf sa tarf

Il-fluss tal-iskrin kollu

bil-mod

Medju (fraġli)

Tip: Meta tgħid lill-AI biex "jiġġenera testijiet għal din il-funzjoni", espliċitament staqsi għal każijiet tat-tarf: input vojt, null, numru negattiv, valur kbir ħafna, żball tan-netwerk. AI tipproduċi mogħdija kuntenta faċilment; L-iżbalji reali jinħbew fil-fruntieri u jaqbżu 'l barra jekk ma triduhomx hemm.

Passi tal-kitba tat-testijiet bl-AI

  1. Iddefinixxi l-imġieba li trid tiġi ttestjata. "Din il-funzjoni għandha tagħti dan l-output għal dan l-input."
  2. Speċifika l-qafas. JUnit + MockK fuq Android, XCTest fuq iOS, Espresso (Android) jew XCUITest (iOS) għall-UI.
  3. Staqsi għal stati limitu. Xenarju kuntent + żball + breakpoints.
  4. Immaniġġja oġġetti mock. Dipendenzi esterni bħal netwerk u database huma emulati għall-ittestjar (mock — mock kkontrollata minflok is-servizz attwali).
  5. Mexxi t-test u vverifika. It-test jgħaddi, jikkonferma xi ħaġa tassew sinifikanti?

Il-ħames pass huwa kritiku. L-AI kultant tipproduċi testijiet inutli li "dejjem jgħaddu"; pereżempju, test li ma jivverifika xejn jew jiċċekkja d-dejta falza tiegħu stess. Test li jgħaddi u test siewi huma affarijiet differenti.

Attenzjoni: Sempliċement għax l-AI tista 'tipproduċi ma jfissirx li t-test huwa korrett. Xi drabi l-AI taċċetta l-imġieba attwali (forsi difettuża) tal-kodiċi bħala "korretta" u tikteb it-testijiet kif xieraq. Tali ttestjar jiffissa l-bug aktar milli jaqbadha. Inti tiddetermina x'jistenna t-test; Għid lill-AI x'għandha tagħmel, mhux x'jagħmel il-kodiċi.

Miżura tal-kopertura tat-test u fallacy

Il-kopertura tat-test (liema persentaġġ tal-kodiċi jitmexxa mit-testijiet) hija metrika utli iżda qarrieqa. Kopertura ta '90% tindika li 90% tal-kodiċi ġie esegwit; iżda ma ġiex ivverifikat li dawk il-linji qed jaħdmu sew. Test li jmexxi linja u ma jiċċekkjax ir-riżultat jintefaħ l-ambitu iżda ma jipprovdix sigurtà. L-għan mhuwiex numri għoljin, iżda validazzjoni sinifikanti. Tista 'malajr tiżdied bl-AI, iżda kun żgur li kull test fil-fatt jittestja mġiba.

tliet każijiet żgħar

Każ 1 — Sitwazzjoni tal-fruntiera maqbuda. AI ġiet mitluba għal testijiet għal funzjoni ta 'trasferiment ta' flus f'applikazzjoni bankarja, u speċifikament ġew miżjuda xenarji ta '"ammont negattiv" u "aktar minn bilanċ". It-test ]vela li t-trasferiment ma kienx imblukkat b’ammont negattiv; din tkun vulnerabbiltà kbira tas-sigurtà fil-produzzjoni. Magħluq billi żżid kontroll ta 'linja waħda. Lezzjoni: it-testijiet tal-konfini huma l-aktar testijiet siewja.

Każ 2 — Test falz. Tim wieħed kien meħlus biex iżid il-kopertura għal 85% b'40 test unitarju prodotti mill-AI. Waqt l-ispezzjoni, deher li ħafna mit-testijiet fil-fatt ma vverifikaw l-ebda output, huma biss sejħu l-funzjoni u kitbu assertTrue(true). Il-kopertura kienet għolja iżda l-protezzjoni kienet żero. It-testijiet ġew riveduti u miktuba mill-ġdid b'validazzjonijiet reali. Lezzjoni: in-numri tal-kopertura jistgħu jimteddu.

Każ 3 — L-ittestjar tal-UI aċċellerat. Tim tal-kummerċ elettroniku kiteb skript XCUITest tal-fluss add-to-cart b'AI f'20 minuta; Kieku jinkiteb bl-idejn, kien jieħu nofs ġurnata. Identifikaturi ta' l-element ta' l-iskrin guessed AI; It-tim qabbilhom mal-kodiċi reali u rranġahom. Il-veloċità tal-abbozz hija reali, iżda l-verifika tal-identifikatur hija xogħol tal-bniedem.

Pront dgħajjef / Pront qawwi

Pront dgħajjef: "Ikteb test għal din il-funzjoni."

Prompt qawwi: "Ipproduċi testijiet ta 'unità għal din il-funzjoni Kotlin ma' JUnit5 + MockK. Funzjoni: trasferiment ta 'flus (ammont, sors, mira). Imġieba li tittestja (x'għandu Jagħmel il-kodiċi):- Trasferiment validu għandu jkun ta' suċċess- Ammont negattiv jew żero għandu jiġi miċħud- Ammont akbar mill-bilanċ għandu jiġi miċħud- Żball tan-netwerk għandu jarmi eċċezzjoni waħda xierqa, is-servizz ta 'testjar għandu jivverifika biss ħaġa. ma tiktebx affermazzjoni vojta."

Mudelli kopjabbli

Mudell tat-test tal-unità: "Iġġenera testijiet tal-unità [JUnit/XCTest] għal din il-funzjoni għal [lingwa]. Imġieba mistennija: [x'għandek tagħmel]. Inkludi: xenarju kuntent, input null, breakpoints, każ ta' żball. Ħalli kull test jivverifika mġiba waħda; uża asserzjoni sinifikanti; mock. [kodiċi]"

Mudell tal-ittestjar tal-UI: "Ikteb test tal-UI tal-fluss li ġej bi [Espresso/XCUITest]: [fluss tal-utent pass pass]. Agħżel elementi tal-iskrin b'id tal-aċċessibbiltà, uża id minflok test. Żid strateġija ta' stennija. Fakkarni biex tqabbel ids tal-element mal-kodiċi attwali."

Mudell ta' verifika tat-test:"Eżamina dawn it-testijiet:1) Fil-fatt jivverifikaw output/imġieba jew huma nulli?2) Jkopru każijiet ta' limitu?3) Jirranġaw il-kodiċi jew jistennew imġieba korretta? Jiffirmaw u jsaħħu testijiet dgħajfa. [testijiet]"

Mudell ta' ottimizzazzjoni tal-kopertura: "Identifika partijiet mhux ittestjati ta' din il-klassi u ssuġġerixxi testijiet sinifikanti. Ipprijoritizza mogħdijiet b'riskju reali, mhux biss in-numru ta' kopertura. [kodiċi]"

Żbalji komuni

  • Tittestja biss ix-xenarju kuntent. Żbalji huma maħżuna fi stati limitu; Staqsi għalihom fil-miftuħ.
  • Taċċetta test vojt/inutli. Testijiet tat-tip assertTrue(true) jintefħu l-ambitu u ma jipprovdu l-ebda protezzjoni.
  • Wara li l-AI tivverifika x'qed jagħmel il-kodiċi. L-ittestjar għandu jistenna x'għandu jagħmel il-kodiċi; inkella jirranġa l-bug.
  • Żball in-numru tal-ambitu għall-iskop. Kopertura ta '90% ma tfissirx preċiżjoni ta' 90%.
  • Linking mat-test fl-ittestjar tal-UI. It-test jitkisser meta t-test jinbidel; Uża identifikatur stabbli (id).
  • It-twaqqif ta' mocks ħażin. It-"test unitarju" li jsejjaħ is-servizz attwali se jkun bil-mod u fraġli.

Fil-qosor

L-ittestjar huwa s-sinsla tal-kwalità mobbli, u l-AI hija effiċjenti ħafna f'dan il-qasam, speċjalment fl-ittestjar tal-unità. Segwi l-piramida tal-ittestjar: ħafna unitajiet, integrazzjoni medja, ftit ittestjar tal-UI. Staqsi b'mod espliċitu lill-AI għax-xenarju kuntent kif ukoll tillimita l-każijiet u l-mogħdijiet ta 'żbalji. Kun żgur li kull test iġġenerat fil-fatt jivvalida mġiba; Testijiet vojta u kopertura minfuħa huma qarrieqa. L-aktar importanti, għid lill-AI x'għandu jagħmel il-kodiċi, mhux dak li jagħmel, sabiex it-test jaqbad il-bug, mhux jirranġah.

Kompitu ta' applikazzjoni

Itlob testijiet mill-AI billi tuża l-"Mudell tat-test tal-unità" għal funzjoni loġika tan-negozju (eż. kalkolu tal-iskont jew validazzjoni tal-formola) u speċifika b'mod espliċitu każijiet ta' limitu (null, negattiv, kbir wisq). Mexxi t-testijiet iġġenerati, imbagħad ikkontrolla l-istess testijiet bil-"mudell ta' verifika tat-test". Sib mill-inqas test wieħed dgħajjef, saħħuh, u ttestja jekk it-testijiet jaqbdux żball attwali tal-funzjoni (billi żżid bug żgħir).

lista ta' kontroll

  • [ ] Għażilt is-saff xieraq għall-piramida tat-test (unità ta' prijorità)
  • [ ] Ridt każijiet ta' limitu u żball minbarra x-xenarju kuntent
  • [ ] Ivverifikajt li kull test fih affermazzjoni sinifikanti
  • [ ] Għidt lill-AI x'għandu jagħmel il-kodiċi, mhux dak li jagħmel
  • [ ] Iffukajt fuq il-mogħdijiet tar-riskju attwali, mhux in-numru ta' kopertura
  • [ ] Jien użajt identifikatur stabbli fit-testijiet tal-UI, ma torbotx mat-test