Dobički:
- Sposobnost oblikovanja vloge umetne inteligence in človeških odobritvenih točk v pretoku zagotavljanja kakovosti od konca do konca od ideje do objave v kontekstu CI/CD
- V CI/CD ne dovoljuje umetni inteligenci, da samodejno "prestane" test, ampak uporablja omejitve za zaščito zaupnih podatkov in ključev
- Sposobnost izvajanja varnostnih testiranj znotraj oblasti in za obrambne namene ter sprejemanje načel odgovornega razkritja in etične preglednosti.
V prejšnjih desetih sklopih smo AI uporabljali pri posameznih nalogah: generiranje scenarijev, koda za avtomatizacijo, poročanje o napakah, analiza pokritosti, testiranje mutacij. Ta zadnja enota jih vse združuje v en odgovoren potek dela. Sodobno zagotavljanje kakovosti ni delo, ki se konča za mizo ene osebe; To je proces, ki živi znotraj CI/CD (Continuous Integration/Continuous Delivery — cevovod, kjer se koda nenehno kombinira, samodejno testira in pripravlja za pogosto in varno objavo). AI se lahko dotakne vseh stopenj tega procesa. A ko moč umetne inteligence raste, se povečuje tudi pomen njene odgovorne uporabe: zasebnost, avtoriteta pri testiranju varnosti, etika in, kar je najpomembnejše, prepuščanje odločitve o kakovosti človeku. V tej enoti se boste naučili toka in meja od konca do konca.
Pretok zagotavljanja kakovosti od konca do konca, ki ga poganja AI
Vloga AI na poti funkcije od ideje do izdaje:
1. Analiza zahtev. AI označuje dvoumnosti v zahtevi in manjkajoče kriterije sprejemljivosti ("to pravilo ne pove, koliko znakov ima najmanj geslo").
2. Oblikovanje testa. Osnutki scenarijev in primerov (enota 2), robni primeri (enota 3) so med merili sprejemljivosti.
3. Avtomatizacija. Osnutki preskusne kode enote (6), API (5) in uporabniškega vmesnika (4); vsaka je potrjena z mutacijo (10).
4. Integracija CI/CD. Preizkusi se izvajajo samodejno z vsakim spajanjem kode. AI pripravi osnutke konfiguracije cevovoda (YAML), povzema dnevnike neuspešnih testov in predlaga možne vzroke.
5. Sklep o izpustitvi. Zberejo se rezultati analize tveganja (8) in regresije (9), vendar se strokovnjak odloči, ali je lahko uspešna.
6. Spremljanje proizvodnje in povratne informacije. Napake v živo postanejo testi prihodnosti; AI predlaga regresijski primer proizvodne napake.
Namig: nastavite AI kot plast v CI/CD, ki »pospeši osnutke, ki jih pregleda človek«, namesto da »piše teste in sprejema odločitve«. Samodejno ustvarjeni testi ne smejo priti v cevovod, ne da bi jih človeški pregledoval in odobril.
AI v CI/CD: kje da, kje ne
Oder
AI fit
človek je bistven
Osnutek preskusne kode
ja
Revizija + mutacija
Osnutek cevovoda YAML
ja
Preverjanje pristnosti + tajni ključ
Neuspeli povzetek dnevnika
ja
Potrditev temeljnega vzroka
Krhka testna diagnoza
ja
Odločitev o trajni rešitvi
"Ali lahko obstaja različica?"
št
Strokovna presoja in odgovornost
Samodejno "opravi" test
nikoli
—
Pozor: AI nikoli ne dajte pooblastila, kot je "popravi, da opravi neuspešen preizkus" v CI/CD. To izniči namen testiranja in samodejno prikrije napake. AI lahko pojasni napako, predlaga popravek; ampak "barvanje testa v zeleno" mora biti človekova zavestna in utemeljena odločitev.
Zasebnost, podatki in varnost: nespremenljive meje
Zasebnost. V testnem okolju so dejanski podatki o strankah, kopije produkcijske baze podatkov, ključi API in informacije o notranjem sistemu občutljivi. Teh ne dajajte javnim orodjem AI. Za osebne podatke veljajo KVKK in podobni predpisi; Dnevniki mask in posnetki zaslona. Uporabite sintetične (izmišljene) testne podatke, kjer koli je to mogoče.
Varnostno testiranje — obrambno in pooblaščeno. Varnostni testi, pridobljeni v tem modulu (preizkusi avtorizacije/IDOR, omejitve nalaganja datotek, preverjanje vnosa), so samo za testiranje vašega lastnega izdelka v okviru pisnega pooblastila in opredeljenega obsega. Uporaba umetne inteligence za dostop do sistema nekoga drugega brez dovoljenja, uporaba resničnih ranljivosti kot orožje ali izvajanje testiranja zunaj obsega je neetično in nezakonito. Ko odkrijete varnostno ranljivost, upoštevajte načelo odgovornega razkritja — ohranite zaupnost ranljivosti in jo prijavite ustrezni strani, da jo je mogoče popraviti.
Etika in transparentnost. Testov, ki jih je izdelal AI, ne predstavljajte kot svoje delo; Izjava, da uporabljate AI znotraj ekipe, je transparentna. Odgovorni ste za netočnost izhoda, ki ga je ustvarila umetna inteligenca – »umetna inteligenca je to napisala« ni opravičilo.
Šibek poziv/močan poziv
Šibko: "Nastavitev preskusnega cevovoda za CI."
Močno: »Pripravite potek dela CI YAML za dejanja GitHub: zaženite teste enote + API na vsakem PR, ustvarite poročilo o pokritosti, zaženite testiranje mutacije (Stryker) tedensko. Ne vdelajte skrivnosti v kodo; uporabite samo sklicevanje na skrivnosti. Blokirajte spajanje, če so testi rdeči. To je OSNUTEK; pregledal in uredil bom korake za upravljanje tajnih ključev in preverjanje veljavnosti. NE DODAJTE »popravka« za samodejno testiranje ali korak 'preseli'."
Močan poziv; Nalaga omejitve glede zaupnosti, človeškega pregleda in "brez samodejnega testiranja".
Štiri predloge za kopiranje
1) Načrt testiranja od konca do konca:
Vaša vloga: višji QA vodja. Osnutek načrta testiranja od konca do konca od ideje do izdaje za naslednjo funkcijo: [funkcija + merila sprejemljivosti]. Faze: analiza zahtev (negotovosti), načrtovanje testa, plasti avtomatizacije (enota/API/UI), integracija CI/CD, merila za odločitev o izdaji, sledenje proizvodnji. Določite vlogo točk odobritve AI in HUMAN na vsaki stopnji posebej.
2) Oris cevovoda CI/CD:
Osnutek CI YAML za [GitHub Actions/GitLab CI/Azure Pipelines]:- Enota + API test + obseg v PR- Preprečevanje spajanja v rdečem testu- Skrivne vrednosti samo s skrivnostmi; vdelava v kodo To je osnutek; Pregledal bom ključne korake upravljanja in odobritve. Dodajanje koraka samodejnega popravka/preizkušanja.
3) Neuspela analiza testnega dnevnika:
V tem izpisu CI so testi rdeči. Preglejte dnevnik; združite napake, ločite med možnimi glavnimi vzroki in KATERI je lahko resnična napaka in kateri je lahko občutljiv test/težava v okolju. Če obstajajo osebni podatki, jih prikrijte. Odločitev in popravek bosta moja. Dnevnik: [prilepi]
4) Predhodno preverjanje varnosti/zasebnosti:
Preden se ti testni podatki/dnevnik pošljejo orodju AI, preverite: ali vsebuje osebne podatke, ključ API-ja, naslov notranjega sistema, proizvodne podatke? Navedite, katera področja je treba maskirati/odstraniti, če sploh. Obdelava, kot je. Vsebina: [prilepi]
trije mini kovčki
Primer 1 — Hitrost toka od konca do konca. Ena ekipa se je lotila nove funkcije »podaljšanja naročnine« s potekom od konca do konca, ki ga poganja umetna inteligenca: vnaprej označene negotovosti glede zahtev, pripravljeni trislojni testi in potrjeni z mutacijo, povezani s CI. Funkcija je skrajšala cikel testiranja, ki je v tradicionalnem postopku trajal 5 dni, na 2 dni; vendar je bila človeška odobritev ohranjena na vsaki stopnji in negotovost glede zahtev (kaj se zgodi, če osvežitev ne uspe) je bila zaprta pred objavo.
Primer 2 — Vrnitev po puščanju ključa. Razvijalec je dal AI ustvariti CI YAML in AI je v YAML kot primer vdelal pravi ključ API. Korak »predhodno preverjanje varnosti/zasebnosti« je to zajel; ključ pretvorjen v sklic na skrivnosti. Brez koraka revizije bi ključ ušel v nadzor različic (zgodovina git).
Primer 3 – Omejitev pooblastil. Član ekipe je želel preizkus IDOR, ki se ga je naučil, uporabiti v sistemu v živo poslovnega partnerja, ker je "bil radoveden." Vodja QA se je ustavil: izvajanje varnostnega testiranja na drugem sistemu brez pisnega pooblastila in opredeljenega obsega je nezakonito. Testiranje je potekalo le v testnem okolju lastnih produktov, z avtoriteto; Odprta odgovorna stranka je bila obveščena pristojna ekipa.
Pogoste napake
- Umetna inteligenca sprejema odločitve o izdaji. Vprašanje "Ali se lahko sprosti?" AI in postavite odgovor namesto podpisa.
- "Opravljen" avtomatizirani test. V CI, ko AI pobarva test zeleno; prikrivanje napak.
- Posredovanje zaupnih podatkov/ključa vozila. Deljenje produkcijskih podatkov, osebnih podatkov ali ključev API brez nadzora.
- Nepooblaščeno varnostno testiranje. Testiranje napadalcev na drugem sistemu brez obsega in dovoljenja.
- Uvajanje testov v cevovod brez pregleda. Samodejno zaženite skico AI brez človeške odobritve.
- Prelaganje krivde na AI. Zagovarjanje napačnega rezultata z besedami "AI je to napisal".
Če povzamem
Celostno zagotavljanje kakovosti je proces, ki sega od zahtev do sledenja proizvodnje in živi znotraj CI/CD; Na vsaki stopnji AI izdela osnutke, povzame dnevnik in predlaga temeljne vzroke. Toda meje so nespremenljive: ljudje sprejemajo odločitve o testiranju in odobrijo izdajo; AI nikoli ne dobi pooblastila, da samodejno "prestane" test; zaupni podatki in ključi ne vstopajo v vozilo; Varnostno testiranje se izvaja samo na vašem lastnem izdelku, v okviru pisnega pooblastila in opredeljenega obsega, v obrambne namene, o ugotovitvah pa se poroča z odgovornim razkritjem. Bodite pregledni, ko uporabljate AI; Za točnost izpisa ste odgovorni sami. AI pospešuje; Jamčite za kakovost in etičnost.
Aplikacijska naloga
Pripravite osnutek načrta od ideje do izdaje s predlogo »testnega načrta od konca do konca« za funkcijo iz vašega projekta; Na vsaki stopnji ločeno označite vlogo točk odobritve AI in ljudi. Nato ustvarite YAML z »orisom cevovoda CI/CD« in uporabite »predhodno preverjanje varnosti/zasebnosti« za ta YAML, da preverite vdelan ključ/skrivne podatke. Na koncu navedite vse točke »človeških odločitev« v svojem načrtu in z enim stavkom utemeljite, zakaj teh odločitev ni mogoče prenesti na AI.
kontrolni seznam
- [ ] Odločitve o sprostitvi in testiranju pripisujem odobritvi ljudi; Nisem ga predal AI.
- [ ] V CI/CD nisem dal AI dovoljenja, da samodejno "opravi/popravi" test.
- [ ] Zaupne podatke, osebne podatke in ključe sem preveril in zamaskiral, preden sem jih poslal v vozilo.
- [ ] Upošteval sem le varnostno testiranje na svojem izdelku v okviru pisnega pooblastila in obsega.
- [ ] Ugotovljene ranljivosti sem obravnaval z načelom odgovornega razkritja.
- [ ] Jasno sem izjavil, da sem uporabil AI in sem odgovoren za točnost izhoda.
Modulni izpit
1. Kako je 'false pass' najbolj natančno definiran v kontekstu zagotavljanja kakovosti?
- A) Čeprav se test obarva zeleno, dejansko ne potrdi nobenega vedenja; ✔ Ne obarva rdeče, tudi če je koda poškodovana
- B) Preizkus teče zelo počasi in časovno poteče.
- C) Test zazna resnično napako in se obarva rdeče
- D) Test se izvaja samo v produkcijskem okolju
Pojasnilo: psevdo-uspeh je, ko test pravi 'uspešno', vendar dejansko ne potrdi ničesar pomembnega; Test je zelen, a tudi če je programska oprema napačna, je ne ujame. To je tveganje številka ena pri umetni inteligenci pri preverjanju kakovosti, ker umetna inteligenca ponavadi ustvari teste, ki so videti čedni, a so votli.
2. Kakšno je najbolj natančno pozicioniranje umetne inteligence v procesu testiranja in zagotavljanja kakovosti?
- A) Umetna inteligenca se lahko odloči, ali je različico mogoče izdati brez človeške odobritve
- B) Umetna inteligenca je pomočnik, ki ustvarja osnutke in ideje; Odločitev in odgovornost, ali je pripravljeno za objavo, pripada strokovnjaku ✔
- C) Umetna inteligenca samo piše besedilo in se s testno kodo sploh ne more ukvarjati
- D) Umetna inteligenca vedno napiše pravilen test kot človek, zato je pregled nepotreben
Opis: Umetna inteligenca je pomočnik pri testiranju, generator osnutkov in množitelj idej; izdeluje testne scenarije, kodo za avtomatizacijo in osnutke poročil. Vendar pa odgovornost in končna odobritev odločitev o kakovosti, kot sta "ali je ta programska oprema pripravljena za objavo" ali "ali je ta test uspešno opravil", pripada pristojnemu strokovnjaku.
3. Na podlagi dejstva, da se napake večinoma pojavljajo pri mejnih vrednostih, katera tehnika zasnove testa je namenjena ločenemu testiranju starosti 17, 18 in 19 za starostno mejo 18?
- A) Preizkus prehoda stanja
- B) Tabela odločitev
- C) Analiza mejnih vrednosti ✔
- D) Raziskovalno testiranje
Pojasnilo: Analiza mejnih vrednosti temelji na opazovanju, da se napake najpogosteje pojavljajo na mejah, in ločeno preizkuša mejne vrednosti (tik pod, tik nad in tik nad mejo). Je zmogljiva tehnika, ki dopolnjuje razrede enakovrednosti.
4. Kateremu pristopu je treba dati prednost pri izbiri elementov za zmanjšanje ranljivosti kode za avtomatizacijo testiranja uporabniškega vmesnika, ustvarjene z umetno inteligenco?
- A) Uporaba najdaljše možne poti XPath
- B) Izbira elementa glede na njegov položaj pikslov na zaslonu
- C) Uporaba izbirnikov na podlagi imen razredov CSS
- D) Uporaba stabilnih atributov (data-testid), dodanih za testiranje ✔
Pojasnilo: dolge poti XPath in imena razredov CSS so zelo odvisni od strukture in oblikovanja strani; Pokvari se ob najmanjši spremembi vmesnika. Na stabilne atribute, dodane posebej za testiranje (npr. data-testid), spremembe načrta ne vplivajo in naredijo teste robustne.
5. Zakaj za test API-ja ni dovolj, da samo preveri statusno kodo HTTP (npr. 200)?
- A) Ker so telesni podatki s pravilno statusno kodo lahko poškodovani in samo preverjanje stanja tega ne bo ujelo (psevdo-zaupanje) ✔
- B) Ker statusne kode pri testih API sploh niso zanesljive
- C) Ker preverjanje statusne kode zelo upočasni test
- D) Ker statusna koda ni nikoli vrnjena v testih API
Pojasnilo: Čeprav strežnik vrne pravilno statusno kodo, lahko vrne poškodovane podatke v telesu (napačen tip, manjkajoče polje, nepravilno izračunana vrednost). Test, ki gleda le na situacijo, tega ne vidi in daje lažno zaupanje. Zato je treba dodati tudi preverjanje sheme/pogodbe in poslovnih pravil.
6. Zakaj je ključnega pomena povedati AI, naj "ročno izračuna pričakovano vrednost v skladu s pravilom sprejemljivosti, ne sklicuje se na trenutni izhod funkcije" pri tiskanju testov enot?
- A) Ker ročni izračun izvaja teste hitreje
- B) Ker drugače test sprejme trenutno (morda hroščasto) vedenje kode kot "pravilno" in potrdi napako ✔
- C) Ker umetna inteligenca sploh ne zna izračunati decimalnih števil
- D) Ker se v testih nikoli ne uporabljajo pravila sprejemljivosti
Pojasnilo: če umetna inteligenca izpelje pričakovano vrednost iz izhoda preskušane funkcije, bo preizkus "prestal", tudi če je funkcija napačna; To pomeni, da ne glede na to, kaj proizvede koda, se test šteje za resničnega. Izračun pričakovane vrednosti neodvisno od pravila sprejemljivosti zagotavlja, da je test vratar pravila in ne ogledalo kode.
7. Kaj od naslednjega je najbolj značilna lastnost dobrega poročila o napakah?
- A) Biti čim daljši in tehničen
- B) Napisala umetna inteligenca
- C) Vsebuje deterministične reprodukcijske korake, ki jim lahko razvijalec neodvisno sledi in povzroči napako ✔
- D) To je samo posnetek zaslona
Pojasnilo: Prava vrednost poročila o napaki je, da lahko razvijalec napako reproducira brez vaše pomoči. To zagotavljajo deterministični, sledljivi koraki reprodukcije od začetka; Če ti koraki manjkajo, se poročilo pogosto zapre kot »ni bilo mogoče ustvariti«.
8. Kateri je najnatančnejši izraz za razmerje med resnostjo in prednostjo pri napaki napačnega črkovanja imena podjetja na domači strani?
- A) Intenzivnost in prioriteta morata imeti vedno enako vrednost
- B) Tako resnost kot prioriteta te napake sta vsekakor nizki
- C) Resnost in prioriteta sta isti koncept, ena oznaka zadostuje
- D) Tehnična intenzivnost je lahko nizka, poslovna prioriteta (ugled) pa je lahko visoka; Oba sta različno ovrednotena ✔
Pojasnilo: Resnost je tehnični vpliv napake (tipkarska napaka je tehnično nizka), prioriteta je, kako nujno jo je treba popraviti (visoka, ker je to element ugleda, ki ga vidi vsak obiskovalec). To dvoje ne gre vedno v isto smer; Ta primer je situacija z nizko resnostjo in visoko prioriteto.
9. Katera je najbolj natančna razlaga testne zbirke z 90-odstotno pokritostjo linij?
- A) Kaže, da se vrstice izvajajo, vendar ne dokazuje, da se obnašajo pravilno; ✔ visoka prekrivnost lahko vlije lažno zaupanje
- B) Nedvomno dokazuje, da je 90 % programske opreme brez napak
- C) Je dokončno merilo odlične kakovosti testa.
- D) Označuje, da ni več treba pisati dodatnih testov
Pojasnilo: pokritost vrstic kaže, da so bile izvedene samo vrstice; Ne dokazuje, da daje pravilne rezultate. Tudi z neutemeljenimi testi je mogoče doseči 90-odstotno pokritost. Obseg je zemljevid "nikoli pogledal, kje" in ne zagotovilo "vse je bilo preizkušeno"; dejanska zaščita se meri s testiranjem mutacij.
10. Kako se pri testiranju na podlagi tveganja izračuna tveganje funkcije za usmerjanje omejenega truda pri testiranju?
- A) Samo s številom vrstic kode
- B) Z množenjem verjetnosti okvare in učinka, ki se bo pojavil, ko se pokvari ✔
- C) Samo v vrstnem redu, v katerem je bila funkcija razvita
- D) Dajanje prednosti samo funkciji, za katero je najlažje napisati teste
Pojasnilo: Pri testiranju, ki temelji na tveganju, je tveganje ocenjeno kot verjetnost = verjetnost (verjetnost okvare) × vpliv (poškodba, če se pokvari). Domene z visoko verjetnostjo in velikim vplivom (plačilo, avtentikacija) si zaslužijo najbolj intenzivno testiranje, medtem ko so domene z nizko × nizko deležne lahkega testiranja.
11. Kakšno je glavno tveganje dodajanja ponovnega poskusa testu, ki je včasih uspešen in včasih neuspešen (krhek/luskav), čeprav se koda ni spremenila?
- A) Skrajšanje časa izvajanja testa
- B) Zmanjša odstotek pokritosti
- C) Prikrivanje resnične napake sočasnosti ali temeljnega vzroka in zatiranje simptoma ✔
- D) Spreminjanje imena testa
Pojasnilo: Ponovni poskus je diagnostično orodje, ne zdravljenje. Neodločnost pogosto izhaja iz dejanskega rasnega stanja ali zasvojenosti; S ponovnim poskusom, da preizkus "prestane", prikrije to resnično napako in lahko povzroči resne težave v živo. Najprej je treba najti glavni vzrok.
12. Kako deluje testiranje mutacij, najbolj poštena metoda za merjenje, ali nabor testov dejansko ščiti?
- A) Z merjenjem hitrosti teka testov
- B) S štetjem, koliko vrstic kode je bilo napisanih
- C) Z izvajanjem testov v različnih vrstnih redih
- D) Z namernim ustvarjanjem majhnih prelomov v kodi in merjenjem, ali jih testi ujamejo ✔
Opis: testiranje mutacij povzroči majhna namerna popačenja (mutacije) v izvorni kodi; Dober testni paket bi moral ujeti ta popačenja in postati rdeč. Mutacije, ki niso ujete (preživete), kažejo, da testi ne ohranijo tega vedenja. Rezultat mutacije je veliko bolj pošteno merilo kakovosti kot odstotek pokritosti.
13. Kakšna je glavna omejitev, ki jo je treba upoštevati pri izvajanju varnostnega testiranja (npr. preizkusi avtorizacije/IDOR)?
- A) To je treba storiti samo na lastnem izdelku, v okviru pisnega dovoljenja in opredeljenega obsega, za obrambne namene ✔
- B) Lahko se prosto uporablja za kateri koli interesni sistem
- C) Brez dovoljenja ga je mogoče preizkusiti na živih sistemih poslovnih partnerjev
- D) Vse odkrite ranljivosti je treba takoj objaviti.
Opis: Varnostni testi, pridobljeni v tem modulu, so namenjeni samo testiranju vašega lastnega izdelka za obrambne namene, v okviru pisnega pooblastila in opredeljenega obsega. Dostop do sistema nekoga drugega brez dovoljenja ali izvajanje testiranja zunaj obsega je neetično in nezakonito; Vse najdene ranljivosti se sporočijo z odgovornim razkritjem.
14. Katerega pooblastila nikoli ne bi smeli dati AI v cevovodu CI/CD?
- A) Povzemanje neuspelih testnih dnevnikov
- B) Pooblastilo, da samodejno 'opravi' neuspešen (rdeč) test ali ga pobarva zeleno ✔
- C) Predlaganje osnutka testne kode
- D) Cevovodna priprava datoteke YAML
Opis: umetna inteligenca lahko ustvari oris preskusne kode, cevovod YAML in povzetek dnevnika v CI/CD; vendar nikoli ne bi smeli dati zmožnosti samodejnega 'opravljenega/popravljanja' neuspešnega testa. To izniči namen testiranja in samodejno prikrije napake. Barvanje testa v zeleno mora biti človekova zavestna in utemeljena odločitev.