Dobički:
- Sposobnost razlikovati, kje umetna inteligenca prihrani realni čas v procesu zagotavljanja kakovosti in kje so odločitve o kakovosti, kot je "pripravljeno za objavo", prepuščene ljudem, odvisno od stopnje tveganja naloge
- Sposobnost prepoznavanja tveganja lažnih prehodov in izvajanja discipline preverjanja, ki testira vsak test AI z namernim zlomom kode
- Sposobnost varovanja testnih podatkov, osebnih podatkov in ključev ter pridobivanje navade izvajanja varnostnega testiranja le v okviru avtorizacije in v obrambne namene.
Razmislite o sprostitveni noči. Izvedenih je bilo na stotine testov, vsi so dobili zeleno luč, ekipa je bila razbremenjena in programska oprema je začela delovati. Naslednje jutro je stranka sporočila, da se je plačilni zaslon zrušil. Testi so bili zeleni, vendar napake ni videl. To je najbolj zahrbtna nočna mora stroke zagotavljanja kakovosti (QA), torej discipline, ki sistematično skrbi, da je programska oprema želene kakovosti: test, ki sveti zeleno, a dejansko ničesar ne potrdi. Ko v ta poklic vstopi umetna inteligenca (AI — programska oprema, ki iz zgodovinskih podatkov izlušči vzorce in ustvari besedilo in kodo), pride do velikega pospeška in povečanja točno te nočne more. Začetna obljuba tega modula je jasna: AI je pomočnik pri testiranju, generator načrtov in multiplikator idej; Vi ste preizkuševalec, ki podpiše odločitev, ali je ta programska oprema pripravljena za izdajo.
V tej prvi enoti se bomo osredotočili na disciplino, ne na orodje. Izvedeli boste, kje umetna inteligenca prihrani realni čas v procesu zagotavljanja kakovosti, kje je nevarna, zakaj je zavajajoča zelena tako imenovana "false-pass" največja nevarnost, kako preveriti vsak rezultat in katere podatke lahko posredujete kateremu orodju. Brez postavitve tega temelja bodo naslednje enote ostale v zraku.
Kje umetna inteligenca pride prav v procesu testiranja?
Razdelimo opravila testiranja v dve veliki skupini. Prvi grozd: ponavljajoča se, produktivna, osnutka dela. Priprava testnega primera iz zahteve, navajanje prelomnih točk, pisanje okostja avtomatizacijske kode za zaslon, prevajanje zapletenega primera napake v lepo poročilo o napaki, povzemanje na stotine vrstic dnevniških datotek, ekstrahiranje sheme iz odziva API-ja. Pri teh opravilih AI skrajša minute na sekunde in se ne utrudi.
Drugi sklop: odločitve, katerih rezultat je kakovost, zaupanje in odgovornost. Odločitve, kot so »ali je ta različica objavljena«, »ali je ta hrošč kritičen ali ga je mogoče odložiti«, »ali je ta testna pokritost zadostna«, »ali ta scenarij zajame dejansko tveganje uporabnika« itd. zahtevajo kontekst, poznavanje izdelka in odgovornost. Tukaj umetna inteligenca ustvari možnosti, osnutke - vendar se odločite "uspešno/neuspešno" in "go/ne gre."
Razjasnimo razliko v enem stavku: AI je močan v tem, "katere situacije je mogoče testirati in kako napisati kodo, ki to testira"; Odločitev je vaša, ko gre za vprašanje "Ali ta programska oprema res deluje in kdo jamči zanjo?"
Namig: preden predate nalogo AI, vprašajte: "Kaj se zgodi, če je ta izhod napačen in ga ne opazim?" Če je odgovor »izgubil bom nekaj minut«, enostavno prenesite naloge. Če je odgovor "programska oprema z napako deluje", naj AI pripravi osnutek, vi pa sprejmete odločitev in preverite.
False pass: prvo tveganje umetne inteligence v zagotavljanju kakovosti
Ko test sveti zeleno, lahko pomeni dvoje: ali programska oprema dejansko deluje pravilno ali pa ne vidi napake, ker je bil test napisan nepravilno. Drugi se imenuje lažna uspešnost - test pravi "uspešno", vendar dejansko ničesar ne potrdi. To tveganje se znatno poveča pri testih, izdelanih z umetno inteligenco, saj je umetna inteligenca zelo uspešna pri pisanju tekočih, na videz gladkih, a praznih testov.
Tri najpogostejše oblike psevdoprepusta so: (1) Testiranje brez potrditve — koda se izvaja, ne vsebuje nobenih trditev, vedno prestane. (2) Samopreverjevalni test — pričakovana vrednost preskusa se izračuna iz izhodnih podatkov preskušane kode; To pomeni, da kar koli koda proizvede, test sprejme kot "pravilno". (3) Preizkus, ki preveri napačno stvar - trditev obstaja, vendar preveri nekaj trivialnega (npr. "odgovor ni nič"), ne dejanskega poslovnega pravila.
Pozor: zelena testna plošča ni dokaz kakovosti; V najboljšem primeru piše "nadzor, ki smo ga napisali, trenutno ni pokvarjen". Naj vas ne tolaži, če vidite "uspeh" na testu, ki ga ustvari umetna inteligenca - pravo vprašanje je: ali bo ta test postal rdeč, če namerno zlomim kodo? Če se ne vrti, je tisti test okras.
Zlato pravilo, ki se ponavlja v tem modulu: preizkusite vsak test AI tako, da namerno zlomite kodo. Če je test še vedno zelen, ta test ne deluje. (To idejo bomo poglobili kot testiranje mutacij v enoti 10.)
Disciplina preverjanja: trije koraki
AI govori samozavestno; To ne pomeni, da je res. Razvijte refleks v treh korakih, ki ga boste uporabili za vsak rezultat:
- Povežite ga z zahtevo. Vsak testni primer in trditev, ki jih proizvaja umetna inteligenca, mora temeljiti na resnični zahtevi ali merilih sprejemljivosti (pogoji, ki jih mora delo izpolnjevati, da se šteje za "opravljeno"). "Katero pravilo potrjuje ta scenarij?" vprašaj.
- Glej rdeče. Enkrat zaženite ustvarjeni test in zlomite kodo. Če se ne obarva rdeče, je test neveljaven. To je korak pri testiranju umetne inteligence, o katerem se ni mogoče pogajati.
- Prenesite ga skozi kontekstni filter. Ali se rezultat ujema s tem, kar veste, da je vedenje izdelka, arhitektura, dejanski pretok uporabnikov? Vaše znanje o domeni je zadnji filter.
Zasebnost in varnost podatkov: kaj gre kam?
Podatki, s katerimi delate v testnem okolju, so pogosto občutljivi: resnični zapisi o strankah, kopije proizvodnih baz podatkov, ključi API-jev, notranji sistemski naslovi, funkcije, ki še niso objavljene. Naredite preprosto klasifikacijo: odprti podatki (dokumentirani, javno dostopni) lahko vstopijo v katero koli vozilo. Notranji podatki (fragmenti izvorne kode, interna dokumentacija) samo za orodja, ki jih odobri agencija. Zaupni podatki (resnični podatki o strankah, informacije o identiteti, podrobnosti o ranljivostih, ključi) vstopajo le v pogodbena orodja institucije, katerih podatki ne gredo v usposabljanje modelov, po možnosti zamaskirani.
V kontekstu testiranja varnosti obstaja dodatna omejitev: vse, kar se naučite v tem modulu, je za obrambne namene – za verodostojno testiranje varnosti vašega izdelka. Uporaba umetne inteligence za infiltracijo v sistem nekoga drugega brez dovoljenja, uporabo resničnih ranljivosti kot orožje ali preizkušanje sistema, za katerega nimate pooblastil, je neetično in kriminalno. Nobeno žaljivo testiranje ne bo opravljeno brez pooblastila (obseg in dovoljenje).
Namig: namesto resničnih podatkov o strankah uporabite sintetične (umetno proizvedene) testne podatke. Zahteva, da umetna inteligenca "ustvari realistične, a popolnoma izmišljene testne podatke", ohranja zasebnost in diverzificira robne primere.
trije mini kovčki
1. primer – prihranek časa na pravem mestu. Preizkuševalec ekipe Ekomerce je porabil 6 ur za ročno ustvarjanje testnega scenarija iz 30-stranskega dokumenta z zahtevami za vsako izdajo. Dokument (del, ki ni vseboval poslovnih skrivnosti) je dal YZ in prosil za osnutek strukturiranega scenarija; Čas se je zmanjšal na 90 minut. Prihranjeni čas je posvetil temu, da je sam preverjal dodajanje robnih primerov poslovnih pravil, ki jih je umetna inteligenca spregledala. AI je odvzel ponavljajoče se delo in prepustil presojo človeku.
2. primer – ujet lažni mimoidoči. Razvijalec je dal AI napisati 12 testov enot za računsko funkcijo; vsi so bili zeleni. Preizkuševalec je implementiral korak "glej rdeče": namerno spremenil znak za seštevanje znotraj funkcije v množenje. Le 3 od 12 testov so pokazali rdeče. Ostalih 9 testov ni dalo prave potrditve; Pisalo je samo "ni povzročilo napake". 9 okrasnih testov je bilo izbrisanih in namesto njih napisanih 5 pravih testov.
Primer 3 – Vrnitev zaradi kršitve zasebnosti. Pripravnik je v javno orodje prilepil dnevnik napak, ki je vseboval resnične e-poštne naslove strank in zadnje štiri številke kartice iz produkcijske baze podatkov, in rekel "razloži to napako". Posredoval je vodja QA: gre za osebne podatke brez nadzora in kršitev KVKK (Zakon o varstvu osebnih podatkov). Enako delo je bilo opravljeno v vozilu, ki ga je odobrila institucija, pri čemer so bili prikriti osebni prostori in puščena je bila le sled skladovnice.
Štiri predloge za kopiranje
1) Ocena primernosti za delo:
Vaša vloga: višji QA vodja. Opisal vam bom testno delo. Povejte mi (1) ali je to delo priprava/analiza, ki jo je mogoče varno prenesti na umetno inteligenco, ali kakovostna odločitev, ki jo mora sprejeti človek, (2) morebitni stroški nepravilnega izhoda, (3) preverjanje, ki ga moram opraviti pred prenosom. Delovno mesto: [tukaj vstavite delovno mesto]
2) Kontrola psevdoprehoda:
Preverite spodnji test. Povej mi: - Kakšno vedenje potrjuje ta test? (en stavek)- Kako lahko zlomim kodo, ki se preskuša, tako da se test obarva RDEČE?- Ali obstaja slabost, ki bi lahko povzročila, da je ta test vedno uspešen (manjka trditev, samopreverjanje, trivialno preverjanje)? Test: [test prilepite sem]
3) Preskusni nadzor maskiranja podatkov:
Dnevnik/podatki, ki vam jih bom dal, lahko vsebujejo osebna ali zaupna polja (e-pošta, ime, kartica, ključ, interni naslov). Najprej navedite polja, ki jih je treba maskirati; Zamaskiram in ponovno pošljem. Ne analizirajte tega takšnega, kot je.
4) Ustvarjanje sintetičnih testnih podatkov:
Ustvarite 20 vrstic popolnoma izmišljenih, realističnih testnih podatkov za [naslednjo strukturo polja]. Ne uporabljajte podatkov o resničnih osebah/organizacijah. Vključite tudi robne primere: prazen prostor, predolgo besedilo, mejne vrednosti, neveljavno obliko.
Šibek poziv/močan poziv
Slabost: "Pišite teste na tej kodi."
Močno: "Izračunajte to. Napišite teste enote za funkcijo popusta. Kriteriji sprejemljivosti za funkcijo: 10% popust nad 1000 TL, 20% popust nad 5000 TL; negativni znesek bi moral povzročiti napako. Z vrstico za komentar navedite, katero pravilo preverjate za vsak test. Preizkusite mejne vrednosti (999, 1000, 1001, 5000, 0, -1) ločeno. Uporabi prave trditve, ki bodo rdeče, če zlomim kodo, ali ne napišem trivialne trditve."
Močan poziv; Zagotavlja merila sprejemljivosti, mejne vrednosti, pričakovanja pri validaciji in izrecna navodila proti ponarejanju. Šibek poziv vabi AI da napiše dekorativni test.
Pogoste napake
- Zaupanje v zeleno. Misliti, da je opravljen test dokaz. Pravo vprašanje je: ali postane rdeče, ko zlomite kodo?
- Zahtevanje testa brez navedbe razloga. AI proizvaja generične, pogosto neuporabne teste, ne da bi vedel, kaj je treba preveriti.
- Preskok preverjanja. Reči "AI je to napisal, verjetno je res". Odgovornost nosi oseba, ki uporablja izhod.
- Lepljenje resničnih/občutljivih podatkov v orodje. Delo s proizvodnimi podatki, ključi ali osebnimi podatki.
- Nepooblaščeno varnostno testiranje. Poskus žaljivega testiranja brez obsega in dovoljenja.
- Uporaba AI za delegiranje odločanja. Vprašanje "Ali je mogoče izdati to različico?" do AI in dajanje odgovora v podpis.
Če povzamem
AI je močan pomočnik v procesu zagotavljanja kakovosti, ki pospeši ponavljajoče se in produktivno delo; Odgovornost za kakovostno odločitev pa nosi človek. Tveganje številka ena zaradi umetne inteligence v tem poklicu je psevdo-prepustnost: zeleni testi, ki so videti čedni, vendar ne potrdijo ničesar. Preizkusite vsak test AI tako, da namerno zlomite kodo; Če se ne obarva rdeče, je tisti test okras. Povežite ga z zahtevo, glejte rdečo, prenesite skozi kontekstni filter. Zamaskirajte zaupne podatke, izvajajte varnostno testiranje samo za pooblaščene in obrambne namene.
Aplikacijska naloga
Opravite 5 testov enote, ki jih ustvari AI (ali umetna inteligenca) iz svojega lastnega projekta. Za vsakega: (1) v enem stavku zapišite, katero vedenje preverja, (2) namerno zlomite in zaženite preskušano kodo ter zabeležite, koliko jih postane rdeče, (3) označite tiste, ki se ne obarvajo rdeče, kot "preizkusi okrasja" in jih prepišite s pravo trditvijo. Rezultat vnesite v tabelo: ime testa / pravilo, ki ga je preverilo / ali je bilo pokvarjeno, ko je bilo pokvarjeno / dejanje.
kontrolni seznam
- [ ] Pred predajo dela sem si zastavil vprašanje "kaj bom izgubil, če bo šlo narobe?"
- [ ] Vsak test AI sem preizkusil tako, da sem razbil kodo; Tisto, ki ni pordečela, sem zamenjala s pravim testom.
- [ ] Testne primere sem povezal z dejanskimi zahtevami/merili sprejemljivosti.
- [ ] Občutljive/resnične podatke sem prikril, ne da bi jih dal orodju; Če je bilo mogoče, sem uporabil sintetične podatke.
- [ ] Varnostno testiranje sem upošteval le v okviru pooblastil in v obrambne namene.
- [ ] Odločitev o tem, ali bo različica izdana, sem prepustil sebi, ne AI.