Jedinica 11 / 11

End-to-end tijek rada, CI/CD integracija, etika i sigurnost: odgovorno korištenje umjetne inteligencije

Dobici:

  • Sposobnost dizajniranja uloge umjetne inteligencije i točaka ljudskog odobrenja u QA tijeku od kraja do kraja od ideje do objave u kontekstu CI/CD
  • U CI/CD, ne ovlašćuje AI da automatski 'prođe' test, ali primjenjuje ograničenja za zaštitu povjerljivih podataka i ključeva
  • Sposobnost provođenja sigurnosnih testiranja u okviru ovlaštenja i u obrambene svrhe, te usvajanje načela odgovornog otkrivanja i etičke transparentnosti.

U prethodnih deset cjelina koristili smo AI u pojedinačnim zadacima: generiranje scenarija, kod za automatizaciju, izvješćivanje o greškama, analiza pokrivenosti, testiranje mutacija. Ova završna jedinica ih sve kombinira u jedan odgovoran tijek rada. Moderni QA nije posao koji završava za stolom jedne osobe; To je proces koji živi unutar CI/CD-a (Continuous Integration/Continuous Delivery — cjevovod u kojem se kod stalno kombinira, automatski testira i priprema za često i sigurno objavljivanje). AI može dodirnuti svaku fazu ovog procesa. Ali kako moć umjetne inteligencije raste, tako raste i važnost njezine odgovorne upotrebe: privatnost, autoritet u testiranju sigurnosti, etika i, što je najvažnije, odluka o kvaliteti ostaje na čovjeku. U ovoj ćete jedinici naučiti tijek i granice od početka do kraja.

End-to-end tok provjere kvalitete koji pokreće AI

Uloga umjetne inteligencije u putu značajke od ideje do objave:

1. Analiza zahtjeva. AI označava nejasnoće u zahtjevu i nedostajuće kriterije prihvaćanja ("ovo pravilo ne govori koliko znakova lozinka ima najmanje").

2. Dizajn testa. Nacrti scenarija i slučajeva (jedinica 2), rubni slučajevi (jedinica 3) su među kriterijima prihvaćanja.

3. Automatizacija. Jedinica (6), API (5) i UI (4) nacrti testnog koda; svaki je potvrđen mutacijom (10).

4. CI/CD integracija. Testovi se pokreću automatski sa svakim spajanjem koda. AI radi nacrte konfiguracije cjevovoda (YAML), sažima zapisnike neuspjelih testova, predlaže mogući glavni uzrok.

5. Odluka o puštanju na slobodu. Prikupljaju se rezultati analize rizika (8) i regresije (9) — ali stručnjak odlučuje može li biti uspješna.

6. Praćenje proizvodnje i povratne informacije. Pogreške uživo postaju budući testovi; AI predlaže regresijski slučaj proizvodne greške.

Savjet: Postavite AI kao sloj u CI/CD-u koji "ubrzava nacrte pregledane od strane ljudi" umjesto da "piše testove i donosi odluke". Automatski generirani testovi ne bi trebali ulaziti u cjevovod bez da ih osoba pregleda i odobri.

AI u CI/CD: gdje da, gdje ne

Pozornica

AI odgovara

ljudsko je bitno

Skica testnog koda

da

Revizija + mutacija

Nacrt cjevovoda YAML

da

Autentifikacija + provjera tajnog ključa

Neuspjeli sažetak dnevnika

da

Potvrda temeljnog uzroka

Krhka testna dijagnoza

da

Odluka o trajnom rješenju

"Može li postojati verzija?"

br

Stručna prosudba i odgovornost

Automatski "položi" test

nikada

Oprez: Nikada nemojte AI-ju davati nalog poput "popravi da prođe neuspjeli test" u CI/CD-u. Time se poništava svrha testiranja i automatski se prikrivaju pogreške. AI može objasniti pogrešku, predložiti ispravak; ali "bojanje testa u zeleno" mora biti svjesna, razumna odluka osobe.

Privatnost, podaci i sigurnost: nepromjenjive granice

Privatnost. U testnom okruženju stvarni podaci o kupcima, kopije produkcijske baze podataka, API ključevi i informacije o internom sustavu su osjetljivi. Ne dajte ih javnim AI alatima. Osobni podaci podliježu KVKK i sličnim propisima; Dnevnici maski i snimke zaslona. Koristite sintetičke (izmišljene) testne podatke gdje god je to moguće.

Sigurnosno testiranje — obrambeno i ovlašteno. Sigurnosni testovi naučeni u ovom modulu (autorizacija/IDOR testovi, ograničenja učitavanja datoteka, provjera valjanosti unosa) služe samo za testiranje vašeg vlastitog proizvoda unutar pisanog ovlaštenja i definiranog opsega. Korištenje umjetne inteligencije za pristup tuđem sustavu bez dopuštenja, korištenje stvarnih ranjivosti kao oružje ili izvođenje testiranja izvan opsega je i neetično i nezakonito. Kada pronađete sigurnosnu ranjivost, pridržavajte se načela odgovornog otkrivanja — čuvajte ranjivost u tajnosti i prijavite je relevantnoj strani kako bi se mogla popraviti.

Etika i transparentnost. Ne predstavljajte testove koje je izradila AI kao svoj vlastiti rad; Izjava da koristite AI unutar tima je transparentnost. Vi ste odgovorni za netočnost izlaza proizvedenog AI — "AI je to napisao" nije isprika.

Slab upit / Jak upit

Slab: "Postavi testni cjevovod za CI."
Snažno: "Nacrtajte CI tijek rada YAML za GitHub radnje: pokrenite jedinice + API testove na svakom PR-u, generirajte izvješće o pokrivenosti, pokrenite testiranje mutacije (Stryker) tjedno. Nemojte ugrađivati tajne u kod; koristite samo referencu na tajne. Blokirajte spajanje ako su testovi crveni. Ovo je NACRT; pregledat ću i urediti upravljanje tajnim ključem i korake provjere valjanosti. NEMOJTE DODAVATI 'popravak' za automatsko testiranje ili korak 'migracije'."

Snažan brz; Nameće ograničenja povjerljivosti, ljudskog pregleda i "bez automatiziranog testiranja".

Četiri predloška za kopiranje

1) Plan testiranja od kraja do kraja:

Vaša uloga: viši QA voditelj. Nacrtajte plan testiranja od kraja do kraja od ideje do izdanja za sljedeću značajku: [značajka + kriteriji prihvaćanja]. Faze: analiza zahtjeva (nesigurnosti), dizajn testa, slojevi automatizacije (jedinica/API/UI), CI/CD integracija, kriteriji odlučivanja o izdavanju, praćenje proizvodnje. Navedite ulogu točaka odobrenja AI i HUMAN u svakoj fazi zasebno.

2) Nacrt cjevovoda CI/CD:

CI YAML nacrt za [GitHub Actions/GitLab CI/Azure Pipelines]:- Jedinica + API test + opseg u PR-u Sprečavanje spajanja u crvenom testu- Tajne vrijednosti samo s tajnama; ugrađivanje u kod Ovo je nacrt; Pregledat ću ključne korake upravljanja i odobravanja. Dodavanje koraka automatskog ispravljanja/prolaženja testa.

3) Neuspjela analiza zapisnika testa:

U tom CI ispisu, testovi su crveni. Pregledajte zapisnik; grupirati kvarove, razlikovati mogući temeljni uzrok i KOJI bi mogao biti stvarni kvar, a koji bi mogao biti problem osjetljivog testa/okruženja. Ako postoje osobni podaci, maskirajte ih. Odluka i ispravak bit će moji. Dnevnik: [zalijepi]

4) Prethodna provjera sigurnosti/privatnosti:

Prije nego što se ovi testni podaci/zapis pošalju AI alatu, provjerite: sadrži li osobne podatke, API ključ, internu adresu sustava, proizvodne podatke? Navedite koja područja, ako ih ima, treba maskirati/ukloniti. Obrada kakva jest. Sadržaj: [zalijepi]

tri mini kućišta

Slučaj 1 — Brzina protoka s kraja na kraj. Jedan se tim pozabavio novom značajkom "obnavljanja pretplate" s end-to-end protokom koji pokreće AI: neizvjesnosti zahtjeva označene su unaprijed, troslojni testovi izrađeni i potvrđeni mutacijom, povezani s CI-jem. Značajka je smanjila ciklus testiranja, koji je trajao 5 dana u tradicionalnom procesu, na 2 dana; ali ljudsko odobrenje je sačuvano u svakoj fazi, a neizvjesnost zahtjeva (što se događa ako osvježavanje ne uspije) zatvorena je prije objave.

Slučaj 2 — Povratak nakon curenja ključa. Programer je AI-u dao generirati CI YAML, a AI je kao primjer ugradio API ključ stvarnog izgleda u YAML. Korak "prethodna provjera sigurnosti/privatnosti" zabilježio je ovo; ključ pretvoren u referencu tajni. Bez koraka revizije, ključ bi procurio u kontrolu verzija (git povijest).

Slučaj 3 — Granica ovlasti. Član tima htio je primijeniti IDOR test koji je naučio na živi sustav poslovnog partnera iz razloga "bio sam znatiželjan". Voditelj QA-a je stao: nezakonito je provoditi sigurnosno testiranje na drugom sustavu bez pismenog ovlaštenja i definiranog opsega. Testiranje je obavljeno samo u testnom okruženju vlastitih proizvoda, s autoritetom; O otvorenoj odgovornoj strani obaviješten je relevantni tim.

Uobičajene greške

  • Natjerati AI da donosi odluke o izdavanju. Postavljajući pitanje "Može li se pustiti?" AI-u i stavljanje odgovora umjesto potpisa.
  • "Prolaz" automatiziranog testa. U CI-ju, umjetna inteligencija oboji test u zeleno; prikrivanje grešaka.
  • Davanje povjerljivih podataka/ključa vozila. Dijeljenje proizvodnih podataka, osobnih podataka ili API ključeva bez nadzora.
  • Neovlašteno sigurnosno testiranje. Testiranje napadača na drugom sustavu bez opsega i dopuštenja.
  • Uvođenje testova u cjevovod bez pregleda. Automatski pokrenite skicu umjetne inteligencije bez ljudskog odobrenja.
  • Svaljivanje krivnje na AI. Obrana netočnog rezultata izgovaranjem "AI je to napisao".

Ukratko

End-to-end QA je proces koji se proteže od zahtjeva do praćenja proizvodnje i živi unutar CI/CD-a; U svakoj fazi AI proizvodi nacrte, sažima dnevnik i predlaže temeljne uzroke. Ali granice su nepromjenjive: ljudi donose odluke o testiranju i izdaju odobrenje; AI nikada nije dobio ovlasti da automatski "prođe" test; povjerljivi podaci i ključevi ne ulaze u vozilo; Sigurnosno testiranje provodi se samo na vašem vlastitom proizvodu, unutar pisanog ovlaštenja i definiranog opsega, u obrambene svrhe, a nalazi se prijavljuju uz odgovornu objavu. Budite transparentni kada koristite AI; Vi ste odgovorni za točnost rezultata. AI ubrzava; Jamčite za kvalitetu i etiku.

Zadatak aplikacije

Napravite nacrt plana od ideje do objave s predloškom "end-to-end test plan" za značajku iz vašeg vlastitog projekta; Označite ulogu točaka odobrenja umjetne inteligencije i ljudi zasebno u svakoj fazi. Zatim generirajte YAML s "skicom CI/CD cjevovoda" i primijenite "predprovjeru sigurnosti/privatnosti" na ovaj YAML kako biste provjerili ima li ugrađenih ključeva/tajnih podataka. Na kraju, navedite sve točke "ljudskih odluka" u svom planu i u jednoj rečenici obrazložite zašto se te odluke ne mogu prenijeti na AI.

popis za provjeru

  • [ ] Odluke o izdavanju i testiranju pripisujem ljudskom odobrenju; Nisam ga predao AI-ju.
  • [ ] U CI/CD-u nisam dao dopuštenje AI-u da automatski "prođe/ispravi" test.
  • [ ] Provjerio sam i maskirao povjerljive podatke, osobne podatke i ključeve prije slanja u vozilo.
  • [ ] Razmatrao sam samo sigurnosno testiranje na vlastitom proizvodu, unutar pisanog ovlaštenja i opsega.
  • [ ] Pronađene slabosti pozabavio sam se načelom odgovornog otkrivanja podataka.
  • [ ] Jasno sam izjavio da sam koristio AI i smatram se odgovornim za točnost rezultata.

Modul ispit

1. Kako je 'lažni prolaz' najtočnije definiran u kontekstu osiguranja kvalitete?

  • A) Iako test postaje zelen, on zapravo ne potvrđuje nikakvo ponašanje; ✔ Ne postaje crveno čak i ako je kod oštećen
  • B) Test radi vrlo sporo i isteklo je vrijeme.
  • C) Test otkriva stvarnu pogrešku i svijetli crveno
  • D) Test se izvodi samo u proizvodnom okruženju

Objašnjenje: Pseudoprolaz je kada test kaže 'prošao', ali zapravo ne potvrđuje ništa smisleno; Test je zelen, ali čak i ako je softver neispravan, neće ga uhvatiti. Ovo je rizik broj jedan od umjetne inteligencije u osiguranju kvalitete jer umjetna inteligencija ima tendenciju proizvoditi testove koji izgledaju uredno, ali su šuplji.

2. Koje je najtočnije pozicioniranje umjetne inteligencije u procesu testiranja i QA?

  • A) Umjetna inteligencija može odlučiti može li se verzija objaviti bez ljudskog odobrenja
  • B) Umjetna inteligencija je pomoćnik koji generira nacrte i ideje; Odluka i odgovornost 'je li spremno za objavu' pripada stručnjaku ✔
  • C) Umjetna inteligencija samo piše tekst i uopće se ne može nositi s testnim kodom
  • D) Umjetna inteligencija uvijek napiše ispravan test nego ljudska pa je pregled nepotreban

Opis: Umjetna inteligencija je pomoćnik pri testiranju, generator nacrta i multiplikator ideja; izrađuje testne scenarije, kod za automatizaciju i nacrte izvješća. Međutim, odgovornost i konačno odobrenje odluka o kvaliteti poput 'je li ovaj softver spreman za objavljivanje' ili 'je li ovaj test prošao' pripada kompetentnom stručnjaku.

3. Na temelju činjenice da se pogreške većinom javljaju na graničnim vrijednostima, koja tehnika dizajna testa treba zasebno testirati 17, 18 i 19 za dobnu granicu od 18 godina?

  • A) Test prijelaza stanja
  • B) Tablica odluka
  • C) Analiza rubnih vrijednosti ✔
  • D) Eksploratorna ispitivanja

Objašnjenje: Analiza graničnih vrijednosti temelji se na zapažanju da se pogreške najčešće pojavljuju na granicama i zasebno ispituje vrijednosti praga (neposredno ispod, malo iznad i malo iznad granice). To je moćna tehnika koja nadopunjuje klase ekvivalencije.

4. Koji bi pristup trebao biti poželjan u odabiru elemenata kako bi se smanjila krhkost koda automatizacije testiranja korisničkog sučelja proizvedenog pomoću umjetne inteligencije?

  • A) Korištenje najdužeg mogućeg XPath puta
  • B) Odabir elementa prema njegovom položaju piksela na ekranu
  • C) Korištenje selektora temeljenih na nazivima CSS klasa
  • D) Korištenje stabilnih atributa (data-testid) dodanih za testiranje ✔

Objašnjenje: duge XPath staze i nazivi CSS klasa iznimno ovise o strukturi i dizajnu stranice; Lomi se pri najmanjoj promjeni sučelja. Na stabilne atribute dodane posebno za testiranje (npr. data-testid) promjene dizajna ne utječu i testove čine robusnim.

5. Zašto za API test nije dovoljno samo provjeriti HTTP statusni kod (npr. 200)?

  • A) Budući da podaci o tijelu s ispravnim statusnim kodom mogu biti oštećeni i sama provjera statusa to neće uhvatiti (pseudo-povjerenje) ✔
  • B) Zato što statusni kodovi uopće nisu pouzdani u API testovima
  • C) Zato što provjera statusnog koda dosta usporava test
  • D) Zato što se statusni kod nikada ne vraća u API testovima

Objašnjenje: Dok poslužitelj vraća ispravan statusni kod, može vratiti oštećene podatke u tijelu (pogrešan tip, polje koje nedostaje, netočno izračunata vrijednost). Test koji samo promatra situaciju ne može to vidjeti i daje lažno povjerenje. Dakle, valjanost sheme/ugovora i poslovnih pravila također treba dodati.

6. Zašto je kritično reći umjetnoj inteligenciji da 'ručno izračuna očekivanu vrijednost u skladu s pravilom prihvaćanja, ne poziva se na trenutni izlaz funkcije' kada ispisuje jedinične testove?

  • A) Zato što ručni izračun pokreće testove brže
  • B) Jer inače test prihvaća trenutno (možda bugovito) ponašanje koda kao 'ispravno' i potvrđuje bug ✔
  • C) Zato što umjetna inteligencija uopće ne može izračunati decimalne brojeve
  • D) Zato što se pravila prihvaćanja nikad ne koriste u testovima

Objašnjenje: Ako AI izvuče očekivanu vrijednost iz izlaza funkcije koja se testira, učinit će test 'prolaznim' čak i ako je funkcija neispravna; To jest, što god kod proizvede, test se računa kao istinit. Izračunavanje očekivane vrijednosti neovisno o pravilu prihvaćanja osigurava da je test vratar pravila, a ne zrcalo koda.

7. Što je od sljedećeg najistaknutije obilježje dobrog izvješća o pogreškama?

  • A) Da bude što je moguće duže i tehnički
  • B) Napisala umjetna inteligencija
  • C) Sadrži determinističke korake reprodukcije koje programer može samostalno slijediti i proizvesti pogrešku ✔
  • D) To je samo snimka zaslona

Objašnjenje: Prava vrijednost izvješća o grešci je da programer može reproducirati grešku bez vaše pomoći. Deterministički, sljedivi koraci reprodukcije od nule to osiguravaju; Ako ti koraci nedostaju, izvješće se često zatvara kao "nije moguće izraditi".

8. Koji je najtočniji izraz za odnos između ozbiljnosti i prioriteta u pogrešci pogrešnog pisanja naziva tvrtke na početnoj stranici?

  • A) Intenzitet i prioritet trebaju uvijek imati istu vrijednost
  • B) I ozbiljnost i prioritet ove pogreške su definitivno niski
  • C) Ozbiljnost i prioritet su isti koncept, dovoljna je jedna oznaka
  • D) Tehnički intenzitet može biti nizak, ali poslovni prioritet (ugled) može biti visok; To dvoje se različito ocjenjuje ✔

Objašnjenje: Ozbiljnost je tehnički učinak pogreške (tipska greška tehnički niska), prioritet je koliko hitno treba biti ispravljena (visoka jer je to element reputacije koji svaki posjetitelj vidi). To dvoje ne ide uvijek u istom smjeru; Ovaj primjer je situacija niske ozbiljnosti i visokog prioriteta.

9. Koja je najtočnija interpretacija paketa testova s ​​90% pokrivenosti linije?

  • A) Pokazuje da se linije izvode, ali ne dokazuje da se ponašaju ispravno; ✔ Visoko prekrivanje može dati lažno samopouzdanje
  • B) Uvjerljivo dokazuje da je 90% softvera bez grešaka
  • C) To je konačna mjera izvrsne kvalitete testa.
  • D) Označava da više nema potrebe za pisanjem dodatnih testova

Objašnjenje: Pokrivenost retka ukazuje da su samo redovi bili izvršeni; To ne dokazuje da daje točne rezultate. Čak i s neuvjerljivim testovima može se postići 90% pokrivenost. Opseg je karta 'nikada nisam tražio', a ne jamstvo 'sve je testirano'; stvarna zaštita se mjeri testiranjem mutacija.

10. U testiranju temeljenom na riziku, kako se rizik značajke izračunava za usmjeravanje ograničenog napora testiranja?

  • A) Samo prema broju redaka koda
  • B) Množenjem vjerojatnosti kvara i učinka koji će nastati kada se pokvari ✔
  • C) Samo redoslijedom kojim je značajka razvijena
  • D) Davanje prioriteta samo značajki za koju je najlakše napisati testove

Objašnjenje: U testiranju temeljenom na riziku, rizik se procjenjuje kao vjerojatnost = vjerojatnost (vjerojatnost kvara) × utjecaj (šteta ako se kvar). Domene visoke vjerojatnosti i velikog utjecaja (plaćanje, provjera autentičnosti) zaslužuju najintenzivnije testiranje, dok domene niske×niske dobivaju lagano testiranje.

11. Koji je glavni rizik dodavanja ponovnog pokušaja testu koji ponekad prolazi, a ponekad ne uspijeva (krhak/ljuštiv) iako se kôd nije promijenio?

  • A) Skraćivanje vremena izvođenja testa
  • B) Smanjuje postotak pokrivenosti
  • C) Prikrivanje stvarne pogreške paralelnosti ili temeljnog uzroka i potiskivanje simptoma ✔
  • D) Promjena naziva testa

Objašnjenje: Ponovni pokušaj je dijagnostički alat, a ne tretman. Neodlučnost često dolazi od stvarnog rasnog stanja ili ovisnosti; Učiniti da test 'prođe' ponovnim pokušajem prikriva ovu stvarnu pogrešku i može uzrokovati ozbiljne probleme uživo. Prvo se mora pronaći glavni uzrok.

12. Kako funkcionira testiranje mutacija, najiskrenija metoda mjerenja štiti li skup testova?

  • A) Mjerenjem brzine trčanja testova
  • B) Brojenjem koliko je redaka koda napisano
  • C) Izvođenjem testova različitim redoslijedom
  • D) Namjernim stvaranjem malih prekida u kodu i mjerenjem otkrivaju li ih testovi ✔

Opis: testiranje mutacija proizvodi mala namjerna iskrivljenja (mutacije) u izvornom kodu; Dobar paket testova trebao bi uhvatiti ta izobličenja i postati crven. Mutacije koje nisu uhvaćene (preživljene) pokazuju da testovi ne zadržavaju to ponašanje. Rezultat mutacije mnogo je iskrenija mjera kvalitete od postotka pokrivenosti.

13. Koje je glavno ograničenje koje se treba pridržavati prilikom provođenja sigurnosnog testiranja (npr. autorizacija/IDOR testovi)?

  • A) To bi trebalo biti učinjeno samo na vlastitom proizvodu, unutar pismenog ovlaštenja i definiranog opsega, u obrambene svrhe ✔
  • B) Može se slobodno primijeniti na bilo koji interesni sustav
  • C) Može se isprobati na živim sustavima poslovnih partnera bez dopuštenja
  • D) Sve pronađene ranjivosti treba odmah javno objaviti.

Opis: Sigurnosni testovi naučeni u ovom modulu služe samo za testiranje vašeg vlastitog proizvoda u obrambene svrhe, unutar pisanog ovlaštenja i definiranog opsega. Pristup tuđem sustavu bez dopuštenja ili izvođenje testiranja izvan opsega je i neetično i nezakonito; Sve pronađene ranjivosti prijavljuju se putem odgovornog objavljivanja.

14. Koje se ovlasti nikada ne bi smjele dati AI u CI/CD cjevovodu?

  • A) Sažimanje neuspjelih testnih zapisa
  • B) Ovlaštenje da automatski 'prođe' neuspjeli (crveni) test ili ga oboji u zeleno ✔
  • C) Predlaganje nacrta testnog koda
  • D) Cjevovod YAML datoteke nacrta

Opis: AI može proizvesti pregled testnog koda, cjevovod YAML i sažetak dnevnika u CI/CD-u; međutim, mogućnost automatskog 'polaganja/popravljanja' neuspješnog testa nikada ne bi trebala biti dana. Time se poništava svrha testiranja i automatski se prikrivaju pogreške. Bojanje testa u zeleno treba biti svjesna i razumna odluka osobe.