Jedinica 11 / 11

Tok rada od kraja do kraja, integracija CI/CD, etika i sigurnost: odgovorno korištenje AI

Dobici:

  • Sposobnost dizajniranja uloge umjetne inteligencije i ljudskih tačaka odobravanja u end-to-end QA toku od ideje do izdanja 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 izvođenja sigurnosnih testiranja u okviru ovlaštenja iu obrambene svrhe, te usvajanja principa odgovornog otkrivanja i etičke transparentnosti.

U prethodnih deset cjelina koristili smo AI u pojedinačnim zadacima: generiranje scenarija, automatizacija koda, izvještavanje o greškama, analiza pokrivenosti, testiranje mutacija. Ova konačna jedinica ih sve kombinuje u jedan odgovoran radni tok. Moderni QA nije posao koji završava za stolom jedne osobe; To je proces koji živi unutar CI/CD-a (Continuous Integration / Continuous Delivery — cevovod u kojem se kod stalno kombinuje, automatski testira i priprema za objavljivanje često i bezbedno). AI može dodirnuti svaku fazu ovog procesa. Ali kako moć AI raste, tako raste i važnost odgovorne upotrebe iste: privatnost, autoritet u testiranju sigurnosti, etika, i što je najvažnije, držanje odluke o kvalitetu do čovjeka. U ovoj jedinici ćete naučiti tok i granice od kraja do kraja.

QA tok od kraja do kraja

Uloga AI na putu funkcije od ideje do izdanja:

1. Analiza zahtjeva. AI označava nejasnoće u zahtjevu i nedostajuće kriterije prihvatanja ("ovo pravilo ne govori koliko znakova je minimalna lozinka").

2. Dizajn testa. Scenario i nacrti predmeta (jedinica 2), rubni slučajevi (jedinica 3) su među kriterijima prihvatljivosti.

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

4. CI/CD integracija. Testovi se pokreću automatski sa svakim spajanjem koda. AI pravi nacrt konfiguracije cjevovoda (YAML), sumira zapisnike neuspjelih testova, sugerira mogući osnovni uzrok.

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

6. Praćenje proizvodnje i povratne informacije. Greške uživo postaju budući testovi; AI predlaže slučaj regresije od greške u proizvodnji.

Savjet: Postavite AI kao sloj u CI/CD-u koji „ubrzava nacrte koje su pregledali ljudi“ umjesto da „piše testove i donosi odluke“. Nijedan automatski generisani test ne bi trebao ući u cevovod bez pregleda i odobrenja ljudi.

AI u CI/CD: gdje da, gdje ne

Stage

AI fit

ljudsko je bitno

Testni nacrt koda

Da

Revizija + mutacija

Pipeline YAML draft

Da

Autentifikacija + provjera tajnog ključa

Sažetak dnevnika nije uspio

Da

Potvrda osnovnog uzroka

Dijagnoza krhkog testa

Da

Odluka o trajnom rješenju

"Može li postojati verzija?"

br

Stručna prosudba i odgovornost

Automatski "prođite" test

nikad

Oprez: Nikada nemojte davati AI nalog poput "popravi da prođe neuspješni test" u CI/CD. Ovo gubi svrhu testiranja i automatski prikriva greške. AI može objasniti grešku, predložiti ispravku; ali "farbanje testa u zeleno" mora biti svjesna, obrazložena odluka osobe.

Privatnost, podaci i sigurnost: nepromjenjive granice

Privatnost. U testnom okruženju, stvarni podaci o korisnicima, kopije proizvodnih baza podataka, API ključevi i interne sistemske informacije su osjetljive. Nemojte ih davati javnim AI alatima. Lični podaci podliježu KVKK i sličnim propisima; Zapise maski i snimke ekrana. Koristite sintetičke (izmišljene) testne podatke gdje god je to moguće.

Sigurnosno testiranje — odbrambeno i ovlašteno. Sigurnosni testovi naučeni u ovom modulu (autorizacijski/IDOR testovi, ograničenja učitavanja datoteka, validacija unosa) služe samo za testiranje vašeg vlastitog proizvoda u okviru pisanog ovlaštenja i definiranog opsega. Korištenje AI za pristup tuđem sistemu bez dozvole, oružje za stvarne ranjivosti ili izvođenje testiranja izvan dometa je i neetično i nezakonito. Kada pronađete bezbednosnu ranjivost, pridržavajte se principa odgovornog otkrivanja – čuvajte ranjivost poverljivom i prijavite je relevantnoj strani kako bi se mogla popraviti.

Etika i transparentnost. Ne predstavljajte testove koje je napravila AI kao svoj vlastiti rad; Izjava da koristite AI unutar tima je transparentnost. Vi ste odgovorni za netačnost rezultata proizvedenih umjetnom inteligencijom — „AI je to napisao“ nije izgovor.

Slaba prompt / Jaka prompt

Slabo: "Postavite test cevovod za CI."
Snažno: "Nacrtajte CI radni tok YAML-a za GitHub akcije: pokrenite testove jedinice + API za svaki PR, generirajte izvještaj o pokrivenosti, pokrenite testiranje mutacija (Stryker) sedmično. Nemojte ugrađivati tajne u kod; koristite samo referencu za tajne. Blokirajte spajanje ako su testovi crveni. Ovo je NACRT; Pregledat ću i urediti automatske DD korake za upravljanje tajnim ključevima. korak 'migracije'."

Snažan prompt; On nameće ograničenja na povjerljivost, ljudski pregled i "bez automatskog testiranja".

Četiri šablona za kopiranje

1) Plan testiranja od kraja do kraja:

Vaša uloga: viši QA lider. Nacrtajte end-to-end plan testiranja od ideje do izdanja za sljedeću funkciju: [funkcija + kriteriji prihvatljivosti]. Faze: analiza zahtjeva (neizvjesnosti), dizajn testa, slojevi automatizacije (jedinica/API/UI), CI/CD integracija, kriteriji odluke o izdanju, praćenje proizvodnje. Navedite ulogu AI i LJUDSKIH tačaka odobrenja u svakoj fazi posebno.

2) CI/CD nacrt cjevovoda:

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

3) Neuspješna analiza dnevnika testa:

U tom CI ispisu, testovi su crveni. Pregledajte dnevnik; grupirati kvarove, razlikovati mogući osnovni uzrok i KOJI može biti pravi kvar i koji može biti krhki problem testa/okruženja. Ako postoje lični podaci, maskirajte ih. Odluka i ispravka će biti moja. Dnevnik: [zalijepi]

4) Prethodna provjera sigurnosti/privatnosti:

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

tri mini kofera

Slučaj 1 — Brzina protoka od kraja do kraja. Jedan tim se pozabavio novom funkcijom "obnove pretplate" s AI-pokrenutom end-to-end protokom: neizvjesnosti zahtjeva su označene unaprijed, troslojni testovi izrađeni i potvrđeni mutacijom, vezani za CI. Ova karakteristika 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 (šta se događa ako osvježavanje ne uspije) zatvorena je prije uživo.

Slučaj 2 — Povratak nakon curenja ključa. Programer je dao AI generirati CI YAML, a AI je ugradio API ključ stvarnog izgleda u YAML kao primjer. Korak „prethodne provjere sigurnosti/privatnosti“ je ovo uhvatio; ključ konvertovan u referencu tajne. Bez koraka revizije, ključ bi procurio u kontrolu verzija (git historija).

Slučaj 3 — Ograničenje ovlaštenja. Član tima je želeo da primeni IDOR test koji je naučio na živom sistemu poslovnog partnera iz „bio sam radoznao“. QA lider je stao: nezakonito je vršiti testiranje sigurnosti na drugom sistemu bez pisanog ovlaštenja i definiranog obima. Testiranje je rađeno samo u testnom okruženju vlastitih proizvoda, uz ovlaštenje; Otvorena odgovorna strana je obaviještena relevantnom timu.

Uobičajene greške

  • Natjerati AI da donosi odluke o oslobađanju. Postavljajući pitanje "Može li se osloboditi?" AI i stavljajući odgovor na mjesto potpisa.
  • "Prolaženje" automatizovanog testa. U CI, ako AI oboji test zelenom bojom; prikrivanje grešaka.
  • Davanje povjerljivih podataka/ključa vozila. Dijeljenje proizvodnih podataka, ličnih podataka ili API ključeva bez nadzora.
  • Neovlašteno testiranje sigurnosti. Testiranje napadača na drugom sistemu bez opsega i dozvole.
  • Uvođenje testova u cevovod bez revizije. Automatski pokrenite AI skicu bez ljudskog odobrenja.
  • Prebacivanje krivice na AI. Odbrana netač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; U svakoj fazi, AI proizvodi nacrte, sumira dnevnik i predlaže osnovne uzroke. Ali granice su nepromjenjive: ljudi donose odluke o testiranju i izdaju odobrenje; AI nikada nema ovlaštenje da automatski "prođe" test; povjerljivi podaci i ključevi ne ulaze u vozilo; Sigurnosno testiranje se vrši samo na vašem proizvodu, u okviru pisanog ovlaštenja i definiranog obima, u obrambene svrhe, a nalazi se prijavljuju uz odgovorno otkrivanje. Budite transparentni kada koristite AI; Vi ste odgovorni za tačnost izlaza. AI ubrzava; Garantujete za kvalitet i etičnost.

Zadatak aplikacije

Napravite nacrt plana od ideje do izdanja sa predloškom "end-to-end test plan" za funkciju iz vašeg vlastitog projekta; Označite ulogu AI i ljudskih tačaka odobravanja odvojeno u svakoj fazi. Zatim generirajte YAML sa “CI/CD cevovodom” i primijenite “prethodnu provjeru sigurnosti/privatnosti” na ovaj YAML kako biste provjerili ima li ugrađenih ključeva/tajnih podataka. Na kraju, navedite sve tačke "ljudske odluke" u svom planu i u jednoj rečenici obrazložite zašto se te odluke ne mogu prenijeti na AI.

kontrolna lista

  • [ ] Odluke o puštanju i testiranju pripisujem ljudskom odobrenju; Nisam ga predao AI.
  • [ ] U CI/CD nisam dao AI dozvolu da automatski "prođe/ispravi" test.
  • [ ] Provjerio sam i maskirao povjerljive podatke, lične podatke i ključeve prije nego što sam ih poslao u vozilo.
  • [ ] Razmotrio sam samo testiranje sigurnosti na svom proizvodu, u okviru pisanog ovlaštenja i djelokruga.
  • [ ] Pronađene ranjivosti sam riješio principom odgovornog otkrivanja.
  • [ ] Jasno sam izjavio da koristim AI i smatram se odgovornim za tačnost izlaza.

Modul Exam

1. Kako je 'lažni prolaz' najtač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 teče vrlo sporo i istekne.
  • C) Test otkriva stvarnu grešku i postaje crven
  • D) Test se izvodi samo u proizvodnom okruženju

Objašnjenje: Pseudo prolaz je kada test kaže 'prošao', ali zapravo ne potvrđuje ništa značajno; Test je zelen, ali čak i ako je softver neispravan, neće ga uhvatiti. Ovo je rizik broj jedan od AI u QA, jer AI teži da proizvodi testove koji izgledaju uredno, ali su šuplji.

2. Koje je najtačnije pozicioniranje umjetne inteligencije u procesu testiranja i osiguranja kvalitete?

  • A) Vještačka inteligencija može odlučiti da li se verzija može objaviti bez ljudskog odobrenja
  • B) Vještačka inteligencija je pomoćnik koji generiše nacrte i ideje; Odluka i odgovornost 'da li je spreman za objavljivanje' pripada stručnjaku ✔
  • C) Umjetna inteligencija samo piše tekst i uopće se ne može baviti testnim kodom
  • D) Vještačka inteligencija uvek napiše tačan test nego ljudska, tako da revizija nije potrebna

Opis: Umjetna inteligencija je pomoćnik u testiranju, generator nacrta i multiplikator ideja; proizvodi test scenarije, automatizacijski kod i nacrte izvještaja. Međutim, odgovornost i konačno odobrenje odluka o kvalitetu kao što su „da li je ovaj softver spreman za objavljivanje“ ili „da li je ovaj test prošao“ pripada nadležnom stručnjaku.

3. Na osnovu činjenice da se greške uglavnom javljaju na graničnim vrijednostima, koja tehnika dizajna testa je testiranje 17, 18 i 19 godina odvojeno za starosnu granicu od 18 godina?

  • A) Test tranzicije stanja
  • B) Tabela odluka
  • C) Analiza graničnih vrijednosti ✔
  • D) Eksploratorno testiranje

Objašnjenje: Analiza graničnih vrijednosti temelji se na opažanju da se greške najčešće javljaju na granicama i testira vrijednosti praga (odmah ispod, malo iznad i malo iznad granice) odvojeno. To je moćna tehnika koja nadopunjuje klase ekvivalencije.

4. Koji pristup treba dati prednost u odabiru elemenata kako bi se smanjila krhkost koda za automatizaciju UI testa proizvedenog umjetnom inteligencijom?

  • A) Korištenje najduže moguće putanje XPath
  • B) Odabir elementa prema njegovom položaju piksela na ekranu
  • C) Korištenje selektora na osnovu imena CSS klasa
  • D) Korištenje stabilnih atributa (data-testid) dodatih za testiranje ✔

Objašnjenje: Duge XPath staze i imena CSS klasa izuzetno zavise od strukture i dizajna stranice; Pokvari se pri najmanjoj promjeni interfejsa. Na stabilne atribute dodane posebno za testiranje (npr. data-testid) ne utječu promjene dizajna i čine testove robusnim.

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

  • A) Zato što podaci o tijelu sa ispravnim statusnim kodom mogu biti oštećeni i samo provjera statusa to neće otkriti (pseudo-povjerenje) ✔
  • B) Zato što statusni kodovi uopšte 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, nedostaje polje, pogrešno izračunata vrijednost). Test koji samo gleda na situaciju ne može to vidjeti i daje lažno povjerenje. Dakle, treba dodati šemu/ugovor i validaciju poslovnih pravila.

6. Zašto je kritično reći AI da 'ručno izračuna očekivanu vrijednost u skladu s pravilom prihvatanja, ne pozivajući se na trenutni izlaz funkcije' prilikom ispisa jediničnih testova?

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

Objašnjenje: Ako AI izvede očekivanu vrijednost iz izlaza funkcije koja se testira, učinit će da test 'prođe' čak i ako je funkcija neispravna; To jest, šta god da proizvede kod, test se računa kao istinit. Izračunavanje očekivane vrijednosti nezavisno od pravila prihvatanja osigurava da je test čuvar pravila, a ne ogledalo koda.

7. Šta je od sljedećeg najistaknutija karakteristika dobrog izvještaja o greškama?

  • A) Biti što duži i tehnički
  • B) Napisano od strane veštačke inteligencije
  • C) Sadrži determinističke korake reprodukcije koje programer može samostalno pratiti i proizvesti grešku ✔
  • D) To je samo snimak ekrana

Objašnjenje: Prava vrijednost izvještaja o grešci je da programer može reproducirati grešku bez vaše pomoći. Deterministički, sljedljivi koraci reprodukcije od nule to osiguravaju; Ako ovi koraci nedostaju, izvještaj se često zatvara kao „ne može proizvesti“.

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

  • A) Intenzitet i prioritet trebaju uvijek imati istu vrijednost
  • B) I ozbiljnost i prioritet ove greš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 (reputacija) može biti visok; To dvoje se različito vrednuju ✔

Objašnjenje: Ozbiljnost je tehnički uticaj greške (tehnički niska greška u kucanju), prioritet je koliko hitno treba da se ispravi (visoka jer je to element reputacije koji svaki posetilac vidi). To dvoje ne idu uvijek u istom smjeru; Ovaj primjer je situacija niske ozbiljnosti i visokog prioriteta.

9. Koja je najtačnija interpretacija test paketa sa 90% pokrivenosti linije?

  • A) Pokazuje da se linije izvršavaju, ali ne dokazuje da se ponašaju ispravno; ✔ Visoka pokrivenost može dati lažno samopouzdanje
  • B) Konačno dokazuje da je 90% softvera bez grešaka
  • C) To je definitivna mjera odličnog kvaliteta testa.
  • D) Označava da više nema potrebe za pisanjem dodatnih testova

Objašnjenje: Pokrivenost redaka označava da su izvršeni samo redovi; To ne dokazuje da daje ispravne rezultate. Čak i uz bezazlene testove može se postići 90% pokrivenosti. Opseg je mapa 'nikad nije pogledano gdje', a ne jamstvo 'sve je testirano'; stvarna zaštita se mjeri testiranjem mutacija.

10. U testiranju zasnovanom na riziku, kako se rizik neke karakteristike izračunava za usmjeravanje ograničenog testiranja?

  • A) Samo po broju redova koda
  • B) Množenjem vjerovatnoće kvara i efekta koji će se pojaviti kada se pokvari ✔
  • C) Samo onim redoslijedom kojim je karakteristika razvijena
  • D) Davanje prioriteta samo onoj osobini za koju je najlakše pisati testove

Objašnjenje: U testiranju zasnovanom na riziku, rizik se procjenjuje kao vjerovatnoća = vjerovatnoća (vjerovatnoća kvara) × utjecaj (šteta ako se pokvari). Domeni visoke vjerovatnoće i velikog utjecaja (plaćanje, autentikacija) zaslužuju najintenzivnije testiranje, dok domeni niske × niske prolaze lagano testiranje.

11. Koji je glavni rizik dodavanja ponovnog pokušaja testu koji ponekad prođe, a ponekad ne uspije (krhak/pokvaren) iako se kod nije promijenio?

  • A) Skraćivanje trajanja testa
  • B) Smanjuje procenat pokrivenosti
  • C) Prikrivanje prave greške istovremenosti ili osnovnog uzroka i potiskivanje simptoma ✔
  • D) Promjena naziva testa

Objašnjenje: Ponovni pokušaj je dijagnostički alat, a ne liječenje. Neodlučnost često dolazi od stvarnog stanja rase ili zavisnosti; Prolazak testa ponovnim pokušajem prikriva ovu stvarnu grešku i može uzrokovati ozbiljne probleme u životu. Prvo se mora pronaći osnovni uzrok.

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

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

Opis: Testiranje mutacija proizvodi mala namjerna izobličenja (mutacije) u izvornom kodu; Dobar test paket bi trebao uhvatiti ova izobličenja i postati crven. Mutacije koje nisu uhvaćene (preživljene) ukazuju na to da testovi ne čuvaju to ponašanje. Ocena mutacije je mnogo iskrenija mera kvaliteta nego procenat pokrivenosti.

13. Koje je glavno ograničenje koje treba slijediti prilikom izvođenja sigurnosnih testiranja (npr. autorizacija/IDOR testovi)?

  • A) Treba da se radi samo na sopstvenom proizvodu, u okviru pisanog ovlašćenja i definisanog obima, u obrambene svrhe ✔
  • B) Može se slobodno primijeniti na bilo koji sistem od interesa
  • C) Može se isprobati na živim sistemima poslovnih partnera bez dozvole
  • 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 sistemu bez dozvole ili izvođenje testiranja izvan opsega je i neetično i nezakonito; Sve pronađene ranjivosti prijavljuju se odgovornim otkrivanjem.

14. Koja ovlaštenja nikada ne treba dati AI u CI/CD kanalu?

  • A) Sumiranje neuspjelih testnih dnevnika
  • B) Ovlaštenje da automatski 'prođe' neuspješni (crveni) test ili ga obojite u zeleno ✔
  • C) Predlaganje nacrta koda za testiranje
  • D) Pipeline YAML file drafting

Opis: AI može proizvesti nacrt koda testa, cjevovod YAML i sažetak dnevnika u CI/CD; međutim, nikada ne treba dati mogućnost da se automatski 'prođe/popravi' neuspješni test. Ovo gubi svrhu testiranja i automatski prikriva greške. Farbanje testa u zeleno treba da bude svjesna i razumna odluka osobe.