Dobici:
- Sposobnost razlikovati gdje umjetna inteligencija štedi stvarno vrijeme u procesu osiguranja kvalitete, a gdje su odluke o kvaliteti kao što je 'spremno za objavljivanje' prepuštene ljudima, ovisno o razini rizika zadatka
- Sposobnost prepoznavanja rizika od lažnih prolaza i implementacije discipline provjere koja testira svaki AI test namjernim razbijanjem koda
- Sposobnost zaštite testnih podataka, osobnih podataka i ključeva te stjecanje navike provođenja sigurnosnih testiranja samo unutar autorizacije i u obrambene svrhe.
Razmislite o puštanju na noć. Provedene su stotine testova, svi su dobili zeleno svjetlo, tim je odahnuo i softver je krenuo s radom. Sljedeće jutro, kupac je prijavio da se ekran za plaćanje srušio. Testovi su bili zeleni, ali on nije vidio grešku. Ovo je najpodmuklija noćna mora profesije osiguranja kvalitete (QA), odnosno discipline koja sustavno osigurava željenu kvalitetu softvera: test koji svijetli zeleno, ali zapravo ništa ne potvrđuje. Kada umjetna inteligencija (AI — softver koji izvlači uzorke iz povijesnih podataka i generira tekst i kod) uđe u ovu profesiju, dolazi do ogromnog ubrzanja i povećanja upravo ove noćne more. Prvobitno obećanje ovog modula je jasno: AI je pomoćnik pri testiranju, generator nacrta i multiplikator ideja; Vi ste tester koji potpisuje odluku "je li ovaj softver spreman za izdavanje".
U ovoj prvoj jedinici usredotočit ćemo se na disciplinu, a ne na alat. Naučit ćete gdje umjetna inteligencija štedi stvarno vrijeme u QA procesu, gdje je opasna, zašto varljiva zelena takozvana "false-pass" predstavlja najveći rizik, kako provjeriti svaki izlaz i koje podatke možete dati kojem alatu. Bez postavljanja ovog temelja, sljedeće jedinice će ostati u zraku.
Gdje AI može biti od koristi u procesu testiranja?
Podijelimo poslove testiranja u dva velika klastera. Prvi klaster: poslovi koji se ponavljaju, izvodljivi, nacrti. Izrada testnog slučaja iz zahtjeva, popis prijelomnih točaka, pisanje kostura automatiziranog koda za zaslon, prevođenje složenog slučaja pogreške u uredan izvještaj o pogrešci, sažimanje stotina redaka log datoteka, izdvajanje sheme iz API odgovora. U tim zadacima AI smanjuje minute na sekunde i ne umara se.
Drugi klaster: odluke čiji je ishod kvaliteta, povjerenje i odgovornost. Odluke poput "može li ova verzija biti aktivna", "je li ova pogreška kritična ili se može odgoditi", "je li ova pokrivenost testom dovoljna", "hvata li ovaj scenarij stvarni korisnički rizik" itd. zahtijevaju kontekst, poznavanje proizvoda i odgovornost. Ovdje umjetna inteligencija generira opcije, nacrte — ali vi odlučujete "prošao/nije prošao" i "idi/ne ide."
Pojasnimo razliku u jednoj rečenici: AI je jak u "koje se situacije mogu testirati i kako napisati kod koji to testira"; Odluka je vaša kada se radi o pitanju "Radi li ovaj softver stvarno i tko za njega jamči?"
Savjet: prije nego što predate posao umjetnoj inteligenciji, pitajte: "Što se događa ako je ovaj rezultat pogrešan i ja ga ne primijetim?" Ako je odgovor "Izgubit ću nekoliko minuta", lako delegirajte. Ako je odgovor "neispravan softver ide uživo", neka AI proizvede nacrt, a vi donesite odluku i verifikaciju.
Lažni prolaz: rizik broj jedan od umjetne inteligencije u osiguranju kvalitete
Kada test svijetli zeleno, to može značiti dvije stvari: ili softver stvarno radi ispravno ili ne vidi grešku jer je test neispravno napisan. Drugi se zove lažni prolaz — test kaže "prošao", ali zapravo ništa ne potvrđuje. Ovaj rizik značajno se povećava u testovima izrađenim pomoću umjetne inteligencije, jer je umjetna inteligencija vrlo uspješna u pisanju tečnih, glatkih, ali praznih testova.
Tri najčešća oblika pseudoprolaska su: (1) Testiranje bez tvrdnji — kod se izvodi, ne sadrži tvrdnje, uvijek prolazi. (2) Samopotvrđujući test — očekivana vrijednost testa izračunava se iz izlaza koda koji se testira; To jest, što god kod proizvede, test prihvaća kao "ispravno". (3) Test koji potvrđuje pogrešnu stvar — assert postoji, ali provjerava nešto trivijalno (npr. "odgovor nije null"), a ne stvarno poslovno pravilo.
Oprez: zelena ispitna ploča nije dokaz kvalitete; U najboljem slučaju kaže "kontrole koje smo napisali trenutno nisu pokvarene". Neka vas ne tješi "prolaz" na testu koji AI proizvodi - pravo pitanje je: hoće li ovaj test postati crven ako namjerno razbijem kod? Ako se ne okreće, taj test je ukras.
Zlatno pravilo koje se ponavlja kroz ovaj modul: testirajte svaki AI test namjernim razbijanjem šifre. Ako je test još uvijek zelen, taj test ne radi. (Produbit ćemo ovu ideju kao testiranje mutacija u jedinici 10.)
Disciplina provjere: tri koraka
AI govori s povjerenjem; To ne znači da je istina. Razvijte refleks u tri koraka za primjenu na svaki ishod:
- Povežite ga sa zahtjevom. Svaki testni slučaj i tvrdnja koju AI proizvodi moraju se temeljiti na stvarnom zahtjevu ili kriterijima prihvaćanja (uvjeti koje posao mora ispuniti da bi se smatrao "gotovim"). "Koje pravilo potvrđuje ovaj scenarij?" pitati.
- Vidi crveno. Pokrenite generirani test jednom, razbijajući kod. Ako ne postane crveno, test je nevažeći. Ovo je korak o kojem se ne može pregovarati u testiranju umjetne inteligencije.
- Propustite ga kroz filter konteksta. Odgovara li izlaz onome što znate da je ponašanje proizvoda, arhitektura, stvarni protok korisnika? Vaše znanje domene posljednji je filter.
Privatnost i sigurnost podataka: što kamo ide?
Podaci s kojima radite u testnom okruženju često su osjetljivi: stvarni zapisi o kupcima, kopije produkcijske baze podataka, API ključevi, interne adrese sustava, značajke koje tek treba biti objavljene. Napravite jednostavnu klasifikaciju: otvoreni podaci (dokumentirani, javno dostupni) mogu ući u svako vozilo. Interni podaci (fragmenti izvornog koda, interna dokumentacija) samo za alate koje je odobrila agencija. Povjerljivi podaci (stvarni podaci o korisnicima, podaci o identitetu, detalji o ranjivostima, ključevi) ulaze samo u ugovorene alate institucije, čiji podaci ne idu na obuku modela, po mogućnosti maskirani.
Postoji dodatno ograničenje u kontekstu testiranja sigurnosti: sve što se nauči u ovom modulu je u obrambene svrhe — za autoritativno testiranje sigurnosti vlastitog proizvoda. Korištenje umjetne inteligencije za infiltraciju u tuđi sustav bez dopuštenja, korištenje stvarnih ranjivosti kao oružje ili testiranje sustava za koji nemate ovlasti je i neetično i kriminalno. Nikakvo uvredljivo testiranje neće se provoditi bez ovlaštenja (opseg i dopuštenje).
Savjet: koristite sintetičke (umjetno proizvedene) testne podatke umjesto stvarnih podataka o kupcima. Traženjem od umjetne inteligencije da "generira realne, ali potpuno izmišljene testne podatke" čuva se privatnost i diverzificira rubne slučajeve.
tri mini kućišta
Slučaj 1 — Ušteda vremena na pravom mjestu. Tester Ekomerce tima proveo je 6 sati ručno stvarajući testni scenarij iz dokumenta sa zahtjevima od 30 stranica za svako izdanje. Dao je dokument (dio koji nije sadržavao poslovne tajne) YZ-u i zatražio nacrt strukturiranog scenarija; Vrijeme je smanjeno na 90 minuta. Ušteđeno vrijeme posvetio je samoj provjeri dodajući rubne slučajeve poslovnih pravila koje je umjetna inteligencija propustila. Umjetna inteligencija je uklonila posao koji se ponavlja, ostavljajući prosudbu ljudima.
Slučaj 2 — Uhvaćeno lažno prolaženje. Programer je AI-ju dao napisati 12 jediničnih testova za računsku funkciju; svi su bili zeleni. Ispitivač je implementirao korak "vidi crveno": namjerno promijenio znak zbrajanja unutar funkcije u množenje. Samo su 3 od 12 testova pokazala crveno. Ostalih 9 testova nije dalo pravu potvrdu; Samo je pisalo "nije izbacilo pogrešku". Izbrisano je 9 ukrasnih testova i umjesto njih napisano je 5 pravih testova.
Slučaj 3 — Povratak nakon povrede privatnosti. Pripravnik je zalijepio zapisnik o pogrešci koji sadrži e-poštu stvarnih kupaca i zadnje četiri znamenke kartice iz proizvodne baze podataka u javni alat i rekao "objasnite ovu pogrešku". Intervenirao je voditelj QA-a: to su osobni podaci izvan kontrole i kršenje KVKK (Zakon o zaštiti osobnih podataka). Isti je posao obavljen u vozilu koje je odobrila institucija, maskirajući osobne prostore i ostavljajući samo trag na hrpi.
Četiri predloška za kopiranje
1) Procjena podobnosti za posao:
Vaša uloga: viši QA voditelj. Opisat ću vam posao testiranja. Recite mi (1) je li ovaj rad rad na izradi/analizi koji se može sigurno delegirati AI-u ili kvalitetna odluka koju čovjek mora donijeti, (2) potencijalni trošak netočnog rezultata, (3) provjera koju bih trebao obaviti prije delegiranja. Posao: [umetnite posao ovdje]
2) Kontrola pseudoprolaska:
U nastavku pogledajte test. Reci mi: - Koje ponašanje potvrđuje ovaj test? (jedna rečenica)- Kako mogu razbiti kod koji se testira tako da test postane CRVEN?- Postoji li slabost koja bi mogla uzrokovati da ovaj test uvijek prođe (nedostaje tvrdnja, samopotvrda, trivijalna provjera)? Test: [ovdje zalijepite test]
3) Kontrola maskiranja testnih podataka:
Dnevnik/podaci koje ću vam dati mogu sadržavati osobna ili povjerljiva polja (e-mail, ime, kartica, ključ, interna adresa). Prvo navedite polja koja treba maskirati; Zamaskirat ću ga i poslati ponovo. Ne analiziraj to takvo kakvo jest.
4) Generiranje sintetičkih testnih podataka:
Generirajte 20 redaka potpuno izmišljenih, realističnih testnih podataka za [sljedeću strukturu polja]. Nemojte koristiti stvarne podatke o osobi/organizaciji. Uključite i rubne slučajeve: prazan prostor, predug tekst, granične vrijednosti, nevažeći format.
Slab upit / Jak upit
Slabo: "Pišite testove na ovom kodu."
Strong: "Izračunajte ovo. Napišite jedinične testove za funkciju popusta. Kriteriji prihvatljivosti za funkciju: 10% popusta preko 1000 TL, 20% popusta preko 5000 TL; negativan iznos trebao bi izazvati pogrešku. U retku komentara navedite koje pravilo potvrđujete za svaki test. Testirajte granične vrijednosti (999, 1000, 1001, 5000, 0, -1) odvojeno. Koristite stvarne tvrdnje koje će postati crvene ako prekršim kod ili ne napišite trivijalnu tvrdnju."
Snažan brz; Pruža kriterije prihvaćanja, granične vrijednosti, očekivanja validacije i eksplicitne upute protiv lažiranja. Slab upit poziva AI da napiše dekorativni test.
Uobičajene greške
- Pouzdanje u zeleno. Misleći da je prolaz na testu dokaz. Pravo pitanje je: postaje li crveno kada razbijete šifru?
- Traženje testa bez navođenja razloga. AI proizvodi generičke, često beskorisne testove ne znajući što treba provjeriti.
- Preskakanje provjere. Reći "AI je to napisao, vjerojatno je istina". Odgovornost leži na osobi koja koristi izlaz.
- Lijepljenje stvarnih/osjetljivih podataka u alat. Rad s proizvodnim podacima, ključevima ili osobnim podacima.
- Neovlašteno sigurnosno testiranje. Pokušaj uvredljivog testiranja bez opsega i dopuštenja.
- Korištenje umjetne inteligencije za delegiranje donošenja odluka. Postavljajući pitanje "Može li se ova verzija objaviti?" AI-u i stavljanje odgovora u potpis.
Ukratko
AI je moćan pomoćnik u procesu osiguranja kvalitete koji ubrzava ponavljajući i produktivni rad; Ali odgovornost za kvalitetnu odluku leži na čovjeku. Rizik broj jedan od umjetne inteligencije u ovoj profesiji je pseudoprolaz: zeleni testovi koji izgledaju uredno, ali ništa ne potvrđuju. Testirajte svaki AI test namjernim razbijanjem koda; Ako ne pocrveni taj test je ukras. Povežite ga sa zahtjevom, vidite crveno, prođite kroz filter konteksta. Maskirajte povjerljive podatke, provodite sigurnosno testiranje samo u ovlaštene i obrambene svrhe.
Zadatak aplikacije
Izvršite 5 jediničnih testova koje je generirala umjetna inteligencija (ili generirana umjetnom inteligencijom) iz vlastitog projekta. Za svaki: (1) zapišite u jednoj rečenici koje ponašanje provjerava, (2) namjerno razbijte i pokrenite kod koji se testira i zabilježite koliko njih pocrveni, (3) označite one koji ne pocrvene kao "dekor testove" i prepišite ih s pravom tvrdnjom. Stavite rezultat u tablicu: naziv testa / pravilo koje je potvrđeno / je li pokvareno kada je pokvareno / radnja.
popis za provjeru
- [ ] Prije predaje rada postavio sam pitanje "što ću izgubiti ako krene po zlu?"
- [ ] Testirao sam svaki AI test razbijanjem šifre; Zamijenila sam onaj koji nije pocrvenio s pravim testom.
- [ ] Povezao sam testne slučajeve sa stvarnim zahtjevima/kriterijima prihvaćanja.
- [ ] Maskirao sam osjetljive/prave podatke bez da sam ih dao alatu; Koristio sam sintetičke podatke ako je moguće.
- [ ] Razmatrao sam sigurnosno testiranje samo unutar ovlaštenja i u obrambene svrhe.
- [ ] Odluku o tome "hoće li verzija biti objavljena" prepustio sam sebi, a ne umjetnoj inteligenciji.