Unitate 11 / 11

Flux de lucru end-to-end, integrare CI/CD, etică și securitate: utilizarea responsabilă a inteligenței artificiale

Câștiguri:

  • Capacitatea de a proiecta rolul inteligenței artificiale și al punctelor de aprobare umană în fluxul QA de la capăt la capăt la lansare în contextul CI/CD
  • În CI/CD, nu se autorizează AI să „trece” automat testul, ci se aplică limite pentru a proteja datele și cheile confidențiale
  • Abilitatea de a efectua teste de securitate în cadrul autorității și în scopuri defensive și de a adopta principii responsabile de dezvăluire și transparență etică.

În cele zece unități anterioare, am folosit AI în sarcini individuale: generarea de scenarii, codul de automatizare, raportarea erorilor, analiza acoperirii, testarea mutațiilor. Această unitate finală le combină pe toate într-un singur flux de lucru responsabil. QA modernă nu este o muncă care se termină la biroul unei persoane; Este un proces care trăiește în CI/CD (Continuous Integration / Continuous Delivery — conducta în care codul este combinat în mod constant, testat automat și pregătit pentru publicare frecvent și în siguranță). AI poate atinge fiecare etapă a acestui proces. Dar, pe măsură ce puterea inteligenței artificiale crește, crește și importanța utilizării lui în mod responsabil: confidențialitate, autoritate în testarea securității, etică și, cel mai important, menținerea deciziei privind calitatea în sarcina umanului. În această unitate, veți învăța fluxul și limitele de la capăt la capăt.

Flux de QA de la un capăt la altul alimentat de AI

Rolul AI în călătoria unei caracteristici de la idee la lansare:

1. Analiza cerințelor. AI semnalează ambiguitățile în cerință și lipsa criteriilor de acceptare („această regulă nu spune câte caractere este minimă parola”).

2. Proiectare de testare. Scenariul și schițele de caz (unitatea 2), cazurile marginale (unitatea 3) sunt printre criteriile de acceptare.

3. Automatizare. Unitatea (6), API (5) și UI (4) schițe de coduri de testare; fiecare este confirmat prin mutație ( 10 ).

4. Integrare CI/CD. Testele rulează automat cu fiecare îmbinare de cod. AI elaborează configurația conductei (YAML), rezumă jurnalele testelor eșuate, sugerează o posibilă cauză principală.

5. Decizia de eliberare. Sunt colectate rezultatele analizei de risc (8) și regresiei (9), dar expertul decide dacă poate avea succes.

6. Monitorizarea producției și feedback. Erorile din live devin teste viitoare; AI propune un caz de regresie dintr-un defect de fabricație.

Sfat: configurați AI ca un strat în CI/CD care „accelerează proiectele revizuite de oameni” mai degrabă decât „scrie teste și ia decizii”. Niciun test generat automat nu ar trebui să intre în conductă fără ca un om să le revizuiască și să le aprobe.

AI în CI/CD: unde da, unde nu

Scena

AI se potrivește

uman este esențial

Cod de testare schiță

Da

Revizie + mutație

Schiță YAML în conductă

Da

Autentificare + verificare cheie secretă

Rezumatul jurnalului eșuat

Da

Confirmarea cauzei principale

Diagnostic test fragil

Da

Decizie de soluție permanentă

„Poate exista o versiune?”

nu

Raționamentul și responsabilitatea expertului

„Trece” automat testul

niciodată

Atenție: Nu dați niciodată AI un mandat precum „remediați-l pentru a trece testul eșuat” în CI/CD. Acest lucru înfrânge scopul testării și acoperă automat erorile. AI poate explica eroarea, sugerează corectarea; dar „vopsirea testului în verde” trebuie să fie o decizie conștientă și motivată a unei persoane.

Confidențialitate, date și securitate: granițe imuabile

Confidențialitate. În mediul de testare, datele reale ale clienților, copiile bazei de date de producție, cheile API și informațiile interne ale sistemului sunt sensibile. Nu le oferi instrumentelor AI publice. Datele cu caracter personal sunt supuse KVKK și reglementărilor similare; Mascați jurnalele și capturile de ecran. Folosiți datele de testare sintetice (fictive) ori de câte ori este posibil.

Teste de securitate - defensive și autorizate. Testele de securitate învățate în acest modul (testele de autorizare/IDOR, limitele de încărcare a fișierelor, validarea intrărilor) sunt doar pentru testarea propriului produs în limitele autorizației scrise și domeniului definit. Folosirea inteligenței artificiale pentru a accesa sistemul altcuiva fără permisiune, a arma vulnerabilități reale sau a efectua teste în afara domeniului de aplicare este atât neetică, cât și ilegală. Când găsiți o vulnerabilitate de securitate, respectați principiul dezvăluirii responsabile - păstrând confidențialitatea vulnerabilității și raportând-o părții relevante, astfel încât să poată fi remediată.

Etica și transparența. Nu prezenta testele produse de AI ca fiind propria ta; A afirma că utilizați AI în cadrul echipei este transparență. Sunteți responsabil pentru inexactitatea unei rezultate produse de AI - „AI a scris-o” nu este o scuză.

Prompt slab / Prompt puternic

Slab: „Configurați conducta de testare pentru CI”.
Puternic: „Elaborați un flux de lucru CI YAML pentru acțiunile GitHub: rulați unități + teste API pentru fiecare PR, generați un raport de acoperire, rulați testarea mutațiilor (Stryker) săptămânal. Nu încorporați secrete în cod; utilizați doar referința la secrete. Blocați îmbinarea dacă testele sunt roșii. Aceasta este o CITORĂ; voi revizui și edita pasul de gestionare și validare a cheilor secrete NU voi remedia un pas automat de gestionare a cheilor și validare.

prompt puternic; Impune limite privind confidențialitatea, revizuirea umană și „fără testare automată”.

Patru șabloane copiabile

1) Plan de testare de la capăt la capăt:

Rolul dumneavoastră: lider senior QA. Elaborați un plan de testare end-to-end de la idee la lansare pentru următoarea caracteristică: [funcție + criterii de acceptare].Faze: analiza cerințelor (incertitudini), proiectarea testelor, straturi de automatizare (unitate/API/UI), integrare CI/CD, criterii de decizie de lansare, urmărire producție. Specificați rolul punctelor de aprobare AI și HUMAN în fiecare etapă separat.

2) Schița conductei CI/CD:

Ciornă CI YAML pentru [GitHub Actions/GitLab CI/Azure Pipelines]:- Unitate + test API + domeniul de aplicare în PR- Preveniți îmbinarea în test roșu- Valori secrete numai cu secrete; încorporarea în cod Aceasta este o schiță; Voi revizui pașii cheie de management și aprobare. Adăugarea unui pas de autocorrecție/test de trecere.

3) Analiza jurnalului de testare eșuată:

În acea imprimare CI, testele sunt roșii. Examinați jurnalul; grupați eșecurile, distingeți cauza principală posibilă și CARE poate fi eșecul real și care poate fi o problemă fragilă de test/mediu. Dacă există date personale, mascați-le. Decizia și corectarea vor fi ale mele. Jurnal: [paste]

4) Verificare prealabilă a securității/ confidențialității:

Înainte ca aceste date/jurnal de testare să fie trimise la instrumentul AI, verificați: conține date personale, cheie API, adresa internă a sistemului, date de producție? Enumerați zonele, dacă există, care trebuie mascate/înlăturate. Prelucrarea așa cum este. Conținut: [paste]

trei mini cutii

Cazul 1 – Viteza fluxului de la capăt la capăt. O echipă a abordat o nouă funcție de „reînnoire a abonamentului” cu un flux end-to-end alimentat de inteligență artificială: incertitudinile privind cerințele semnalate din față, testele pe trei straturi elaborate și validate de mutații, legate de CI. Caracteristica a redus ciclul de testare, care a durat 5 zile în procesul tradițional, la 2 zile; dar aprobarea umană a fost păstrată în fiecare etapă și o incertitudine a cerințelor (ce se întâmplă dacă reîmprospătarea eșuează) a fost închisă înainte de live.

Cazul 2 — Revenirea de la scurgerea cheii. Un dezvoltator a avut ca AI să genereze CI YAML, iar AI a încorporat o cheie API cu aspect real în YAML, ca exemplu. Pasul „preverificare de securitate/confidențialitate” a surprins acest lucru; cheie convertită în referință secrete. Fără pasul de audit, cheia s-ar scurge în controlul versiunii (istoricul git).

Cazul 3 – Limita de autoritate. Un membru al echipei a vrut să aplice testul IDOR pe care l-a învățat la sistemul live al unui partener de afaceri din „eram curios”. Liderul QA s-a oprit: este ilegal să se efectueze teste de securitate pe alt sistem fără autorizație scrisă și domeniu definit. Testarea s-a făcut doar în mediul de testare al produselor proprii, cu autoritate; Partea responsabilă deschisă a fost notificată echipei relevante.

Greșeli comune

  • Făcând AI să ia decizii de lansare. Punând întrebarea „Poate fi eliberat?” la AI și punerea răspunsului în locul semnăturii.
  • „Trecerea” testului automatizat. În CI, având ca AI să vopsească testul în verde; acoperirea greșelilor.
  • Oferirea datelor/cheii confidențiale vehiculului. Partajarea datelor de producție, a datelor personale sau a cheilor API fără supraveghere.
  • Testare de securitate neautorizată. Testarea atacatorului pe alt sistem fără scop și permisiune.
  • Introducerea de teste în conductă fără revizuire. Rulați automat schița AI fără aprobare umană.
  • Dând vina pe AI. Apărarea ieșirii incorecte spunând „AI scris-o”.

În concluzie

QA end-to-end este un proces care se extinde de la cerințe la urmărirea producției și trăiește în CI/CD; În fiecare etapă, AI produce schițe, rezumă jurnalul și sugerează cauzele fundamentale. Dar granițele sunt imuabile: oamenii iau decizii de testare și eliberează aprobarea; AI nu primește niciodată autoritatea de a „trece” automat testul; datele confidențiale și cheile nu intră în vehicul; Testarea de securitate este efectuată numai pe propriul produs, în limitele autorizației scrise și a domeniului de aplicare definit, în scopuri defensive, iar constatările sunt raportate cu dezvăluire responsabilă. Fii transparent când folosești AI; Sunteți responsabil pentru acuratețea rezultatelor. AI accelerează; Garantați pentru calitate și etică.

Sarcina de aplicare

Creați un plan de la idee la lansare cu un șablon „plan de testare de la capăt la capăt” pentru o caracteristică din propriul proiect; Marcați rolul punctelor de aprobare AI și umană separat în fiecare etapă. Apoi, generați un YAML cu „contur CI/CD” și aplicați „preverificare de securitate/confidențialitate” acestui YAML pentru a verifica dacă există chei/date secrete încorporate. În cele din urmă, enumerați toate punctele de „decizie umană” din planul dvs. și justificați într-o singură propoziție de ce aceste decizii nu pot fi delegate AI.

lista de verificare

  • [ ] Atribuesc deciziile de eliberare și testare aprobării umane; Nu l-am predat AI.
  • [ ] În CI/CD nu am dat permisiunea AI de a „trece/corecta” automat testul.
  • [ ] Am verificat și mascat datele confidențiale, datele personale și cheile înainte de a le trimite la vehicul.
  • [ ] Am luat în considerare doar testarea de securitate pe propriul meu produs, în limitele autorizației scrise și domeniului de aplicare.
  • [ ] Am abordat vulnerabilitățile găsite cu principiul dezvăluirii responsabile.
  • [ ] Am declarat în mod transparent că am folosit AI și m-am considerat responsabil pentru acuratețea rezultatelor.

Examenul modulului

1. Cum este definită cel mai precis „pass fals” în contextul QA?

  • A) Deși testul devine verde, de fapt nu confirmă niciun comportament; ✔ Nu devine roșu chiar dacă codul este corupt
  • B) Testul rulează foarte lent și expiră.
  • C) Testul detectează o eroare reală și devine roșu
  • D) Testul rulează numai în mediul de producție

Explicație: O pseudo-procesare este atunci când un test spune „trece”, dar de fapt nu confirmă nimic semnificativ; Testul este verde, dar chiar dacă software-ul este defect, nu îl va prinde. Acesta este riscul numărul unu al AI în QA, deoarece AI tinde să producă teste care arată bine, dar sunt goale.

2. Care este cea mai precisă poziționare a inteligenței artificiale în procesul de testare și QA?

  • A) Inteligența artificială poate decide dacă versiunea poate fi lansată fără aprobarea umană
  • B) Inteligența artificială este un asistent care generează proiecte și idei; Decizia și responsabilitatea „este gata de publicare” aparține expertului ✔
  • C) Inteligența artificială scrie doar text și nu se poate ocupa deloc de codul de testare
  • D) Inteligența artificială scrie întotdeauna testul corect decât uman, deci revizuirea este inutilă

Descriere: Inteligența artificială este un asistent de testare, generator de schițe și multiplicator de idei; produce scenarii de testare, coduri de automatizare și schițe de rapoarte. Cu toate acestea, responsabilitatea și aprobarea finală a deciziilor de calitate, cum ar fi „este acest software gata de publicare” sau „a trecut acest test” aparțin expertului competent.

3. Pe baza faptului că erorile apar în cea mai mare parte la valorile de prag, ce tehnică de proiectare a testelor trebuie să testeze separat 17, 18 și 19 ani pentru limita de vârstă de 18 ani?

  • A) Test de tranziție de stat
  • B) Tabel de decizie
  • C) Analiza valorii la limită ✔
  • D) Testarea exploratorie

Explicație: Analiza valorii limită se bazează pe observația că erorile apar cel mai frecvent la granițe și testează valorile pragului (chiar sub, chiar deasupra și imediat deasupra limitei) separat. Este o tehnică puternică care completează clasele de echivalență.

4. Ce abordare ar trebui preferată în selectarea elementelor pentru a reduce fragilitatea codului de automatizare a testării UI produs cu inteligență artificială?

  • A) Folosind cea mai lungă cale XPath posibilă
  • B) Selectarea elementului în funcție de poziția pixelului acestuia pe ecran
  • C) Utilizarea selectoarelor bazate pe numele claselor CSS
  • D) Utilizarea atributelor stabile (data-testid) adăugate pentru testare ✔

Explicație: Căile XPath lungi și numele claselor CSS sunt extrem de dependente de structura și designul paginii; Se rupe la cea mai mică schimbare a interfeței. Atributele stabile adăugate special pentru testare (de exemplu, data-testid) nu sunt afectate de modificările de proiectare și fac testele robuste.

5. De ce nu este suficient ca un test API să verifice doar codul de stare HTTP (de exemplu, 200)?

  • A) Deoarece datele corpului cu codul de stare corect pot fi corupte, iar verificarea stării nu va detecta acest lucru (pseudo-încredere) ✔
  • B) Deoarece codurile de stare nu sunt deloc de încredere în testele API
  • C) Deoarece verificarea codului de stare încetinește mult testul
  • D) Deoarece codul de stare nu este returnat niciodată în testele API

Explicație: În timp ce serverul returnează codul de stare corect, acesta poate returna date corupte în corp (tip greșit, câmp lipsă, valoare calculată incorect). Testul care privește doar situația nu poate vedea acest lucru și oferă o falsă încredere. Prin urmare, ar trebui adăugate și validarea schemei/contractului și a regulilor de afaceri.

6. De ce este esențial să îi spunem AI să „calculeze manual valoarea așteptată în conformitate cu regula de acceptare, să nu facă referire la ieșirea curentă a funcției” atunci când tipăriți testele unitare?

  • A) Deoarece calculul manual rulează testele mai repede
  • B) Pentru că altfel testul acceptă comportamentul curent (poate cu erori) al codului ca fiind „corect” și confirmă eroarea ✔
  • C) Pentru că inteligența artificială nu poate calcula deloc numere zecimale
  • D) Pentru că regulile de acceptare nu sunt niciodată folosite în teste

Explicație: Dacă AI derivă valoarea așteptată din ieșirea funcției testate, testul va trece chiar dacă funcția este defectă; Adică, orice produce codul, testul contează drept adevărat. Calculul valorii așteptate independent de regula de acceptare asigură că testul este un gardian al regulii, nu o oglindă a codului.

7. Care dintre următoarele este caracteristica cea mai distinctivă a unui raport bun de eroare?

  • A) Să fie cât mai lung și tehnic posibil
  • B) Scris de inteligență artificială
  • C) Conține pași de reproducere deterministă pe care dezvoltatorul îi poate urma independent și produce eroarea ✔
  • D) Este doar o captură de ecran

Explicație: Valoarea reală a unui raport de eroare este că dezvoltatorul poate reproduce eroarea fără ajutorul tău. Etapele de reproducere deterministe, trasabile de la zero asigură acest lucru; Dacă acești pași lipsesc, raportul se închide adesea ca „nu s-a putut produce”.

8. Care este expresia cea mai corectă pentru relația dintre severitate și prioritate în eroarea de ortografie greșită a numelui companiei pe pagina de start?

  • A) Intensitatea și prioritatea ar trebui să aibă întotdeauna aceeași valoare
  • B) Atât gravitatea, cât și prioritatea acestei erori sunt cu siguranță scăzute
  • C) Severitatea și prioritatea sunt același concept, o etichetă este suficientă
  • D) Intensitatea tehnică poate fi scăzută, dar prioritatea afacerii (reputația) poate fi mare; Cele două sunt evaluate diferit ✔

Explicație: Severitatea este impactul tehnic al erorii (greșeală tehnic scăzută), prioritatea este cât de urgent trebuie remediată (mare pentru că este un element de reputație pe care îl vede fiecare vizitator). Cei doi nu merg întotdeauna în aceeași direcție; Acest exemplu este o situație de severitate scăzută-prioritate mare.

9. Care este cea mai precisă interpretare a unei suite de teste cu o acoperire de 90% a liniilor?

  • A) Arată că liniile sunt executate dar nu demonstrează că se comportă corect; ✔ acoperirea ridicată poate da o încredere falsă
  • B) Demonstrează în mod concludent că 90% din software nu conține erori
  • C) Este o măsură definitivă a calității excelente a testului.
  • D) Indică faptul că nu mai este nevoie să scrieți teste suplimentare

Explicație: Acoperirea rândurilor indică faptul că au fost executate numai rândurile; Nu demonstrează că produce rezultate corecte. Chiar și cu teste neasigurate, se poate obține o acoperire de 90%. Scopul este o hartă „nu sa privit niciodată unde”, nu o asigurare „totul a fost testat”; protecția reală este măsurată prin testarea mutațiilor.

10. În testarea bazată pe risc, cum este calculat riscul unei caracteristici pentru a direcționa efortul limitat de testare?

  • A) Numai după numărul de linii de cod
  • B) Prin înmulțirea probabilității de defecțiune și a efectului care va apărea atunci când se defectează ✔
  • C) Numai în ordinea în care a fost dezvoltată caracteristica
  • D) Prioritizarea numai caracteristicii pentru care este cel mai ușor de scris teste

Explicație: În testarea bazată pe risc, riscul este evaluat ca probabilitate = probabilitate (probabilitatea defecțiunii) × impact (daune dacă este defect). Domeniile cu probabilitate mare și impact mare (plată, autentificare) merită cele mai intense testari, în timp ce domeniile low×low primesc testare ușoară.

11. Care este principalul risc de a adăuga o reîncercare la un test care uneori trece și alteori eșuează (casabil/fără) chiar dacă codul nu s-a schimbat?

  • A) Scurtarea duratei de rulare a testului
  • B) Scade procentul de acoperire
  • C) Ascunderea unei erori de concurență adevărată sau a unei cauze fundamentale și suprimarea simptomului ✔
  • D) Schimbarea numelui testului

Explicație: Reîncercarea este un instrument de diagnosticare, nu un tratament. Indecizia provine adesea dintr-o stare de rasă reală sau dependență; Dacă testul „trece” prin reîncercare, acoperă această eroare reală și poate cauza probleme serioase în direct. Cauza principală trebuie găsită mai întâi.

12. Cum funcționează testarea mutațiilor, cea mai onesta metodă de a măsura dacă o suită de teste protejează într-adevăr?

  • A) Prin măsurarea vitezei de rulare a testelor
  • B) Numărând câte linii de cod au fost scrise
  • C) Prin efectuarea testelor în ordine diferite
  • D) Prin crearea deliberată de mici întreruperi în cod și măsurarea dacă testele le prind ✔

Descriere: Testarea mutațiilor produce mici distorsiuni intenționate (mutații) în codul sursă; O suită bună de testare ar trebui să prindă aceste distorsiuni și să devină roșie. Mutațiile care nu sunt prinse (supraviețuiesc) indică faptul că testele nu păstrează acel comportament. Scorul de mutație este o măsură mult mai sinceră a calității decât procentul de acoperire.

13. Care este limita principală care trebuie respectată atunci când se efectuează teste de securitate (de exemplu, teste de autorizare/IDOR)?

  • A) Ar trebui să se facă numai pe propriul produs, cu autorizație scrisă și domeniu definit, în scopuri defensive ✔
  • B) Poate fi aplicat în mod liber oricărui sistem de interes
  • C) Poate fi încercat pe sistemele live ale partenerilor de afaceri fără permisiune
  • D) Orice vulnerabilități găsite trebuie publicate public imediat.

Descriere: Testele de securitate învățate în acest modul sunt doar pentru testarea propriului produs în scopuri defensive, în limitele autorizației scrise și domeniului de aplicare definit. Accesarea sistemului altcuiva fără permisiune sau efectuarea de teste în afara domeniului de aplicare este atât neetică, cât și ilegală; Orice vulnerabilități găsite sunt raportate prin dezvăluire responsabilă.

14. Ce autoritate nu ar trebui niciodată acordată AI în conducta CI/CD?

  • A) Rezumarea jurnalelor de testare eșuate
  • B) Autoritatea de a „trece” automat un test (roșu) eșuat sau de a-l vopsi în verde ✔
  • C) Sugerarea unui proiect de cod de testare
  • D) Redactarea dosarului YAML pipeline

Descriere: AI poate produce schița codului de testare, pipeline YAML și rezumatul jurnalului în CI/CD; cu toate acestea, capacitatea de a „trece/remedia” automat un test eșuat nu ar trebui să fie dată niciodată. Acest lucru înfrânge scopul testării și acoperă automat erorile. Vopsirea în verde a testului ar trebui să fie o decizie conștientă și motivată a unei persoane.