Unitate 8 / 11

Analiza acoperirii testelor și testarea bazată pe risc: țintirea corectă cu AI

Câștiguri:

  • Abilitatea de a citi valori, cum ar fi acoperirea cu linie, ramură și condiție ca o hartă, nu o încredere, și să înțeleagă că o acoperire ridicată poate oferi pseudo-încredere
  • Abilitatea de a pune domeniul de aplicare al cerințelor lângă domeniul de aplicare a codului și de a face vizibile lacunele de trasabilitate cu inteligența artificială
  • Abilitatea de a nota caracteristici cu formula risc = probabilitate × impact, direcționează efortul limitat de testare către cel mai mare risc și documentează deliberat în afara domeniului de aplicare

Nu puteți testa fiecare software pentru totdeauna; Timpul și resursele sunt limitate. Deci adevărata întrebare este: unde să punem efortul limitat de testare? Două concepte răspund la această întrebare. Acoperirea testului – o valoare care măsoară cât de mult din cod sau cerințe sunt atinse de teste – reprezintă ceea ce este testat. Testarea bazată pe risc - abordarea de determinare a priorității testului în funcție de probabilitatea deteriorării unei zone și de daunele pe care aceasta le va provoca atunci când aceasta se va deteriora - direcționează efortul către cel mai riscant. Inteligența artificială (AI) este un partener de analiză puternic în ambele: face vizibile lacunele de acoperire, sugerează zone de risc. Dar avertismentul central rămâne: numărul de domenii pe care AI le vede poate fi înșelător; Chiar și o acoperire de rând de 100% poate fi obținută cu teste care nu verifică nimic. Treaba ta este să citești domeniul de aplicare ca pe o hartă, nu ca o încredere.

Citirea corectă a valorilor de acoperire

Există mai multe tipuri de domeniul de aplicare și nu toate sunt la fel de semnificative:

  • Acoperire linie: Câte linii de cod au fost executate cel puțin o dată. Cel mai comun, dar cel mai slab criteriu; Doar pentru că o linie funcționează nu este o dovadă că se comportă corect.
  • Acoperirea ramurilor: dacă fiecare ramură if (atât adevărată, cât și falsă) a fost testată. Mai semnificativ decât o linie.
  • Acoperire condiție: testarea fiecărei subcondiții în condiții complexe separat.
  • Acoperire cale: combinații de căi logice în cadrul codului. Este cel mai cuprinzător, dar dificil de atins pe deplin în practică.
Atenție: procentul de acoperire nu este un „scor de calitate”. Acoperirea rândurilor 100% vă spune că rândurile funcționează; nu că ar produce rezultatul corect (pseudo-pasarea în unitatea 1). Utilizați scopul ca răspuns la întrebarea „unde nu m-am uitat niciodată”, nu ca o asigurare că „totul a fost testat”.

Scopul punctelor moarte

Valorile de acoperire măsoară doar cât de mult din cod a fost executat; nu pot vedea: (1) cerințe netestate (codul există, dar regula de afaceri este greșită), (2) cod lipsă (nici un domeniu de aplicare pentru un control care nu a fost niciodată scris), (3) combinații de date/stare, (4) utilizare, performanță, securitate. Prin urmare, acoperirea cerințelor (fiecare criteriu de acceptare trebuie îndeplinit de cel puțin un test) ar trebui să fie plasată lângă acoperirea codului. AI este foarte util în producerea mapării cerințelor-test (matricea de trasabilitate).

Testare bazată pe risc: unde punem efortul?

Risc = probabilitate (șansa de spargere) × impact (daună în cazul ruperii). Cu AI, puteți nota o listă de caracteristici pe aceste două axe și puteți crea o hartă termică. Probabilitate mare × domenii mari (plată, autentificare, integritate a datelor) merită cea mai intensă testare; zone joase × joase (un ecran de preferințe rar folosit) este suficientă testarea luminii.

zona

probabilitate

Impact

Risc

Test de densitate

Fluxul de plată

mediu

foarte sus

înalt

Deep + automatizare

autentificare

mediu

foarte sus

înalt

Adanc + securitate

Cautare produs

înalt

mediu

Mediu-Ridicat

Automatizare + descoperire

Poza de profil

scăzută

scăzută

scăzută

controlul luminii

Pagina de ajutor

scăzută

prea jos

prea jos

revizuire

Capcana urmăririi lunetei

Transformarea procentului de acoperire într-un obiectiv (de exemplu, regula „echipa trebuie să treacă de 90% acoperire”) are un efect secundar periculos: dezvoltatorii și testerii se concentrează pe creșterea procentului, mai degrabă decât pe abordarea riscului real. Rezultatul este adesea un domeniu de aplicare umflat, fără afirmații sau teste triviale - numărul arată frumos, dar nu există protecție. Acesta este fenomenul coruperii criteriului atunci când el însuși devine țel: „când o măsură devine un scop, ea încetează să mai fie o măsură bună”. Utilizați scopul ca instrument de diagnosticare, nu ca un raport de performanță.

O abordare mai sănătoasă este citirea direcțională a domeniului de aplicare: „De ce acoperirea sucursalei este blocată la 40% în modulul de plată critic?” Întrebarea este „acoperirea totală este de 90%?” Este mult mai valoroasă decât întrebarea. Puneți AI să defalcă raportul de aplicare pe modul și nivelul de risc; Evidențiați zonele cu risc ridicat cu acoperire scăzută. Astfel, scopul devine o busolă care direcționează munca mai degrabă decât un procent orb.

Atenție: Sloganul „100% acoperire” este o capcană. Testarea unor coduri (accesori simpli, piese autogenerate) este de valoare redusă; efortul depus acolo este furat din regulile de afaceri cu risc ridicat. Scopul este de a testa fiecare comportament și risc important, nu fiecare linie.

Prompt slab / Prompt puternic

Slab: „Măriți-mi acoperirea de testare”.
Puternic: „Având în vedere această listă de criterii de acceptare și aceste cazuri de testare existente. (1) Tabel care criterii de acceptare nu au fost îndeplinite de niciun test (decalaj de acoperire a cerințelor). (2) Notați fiecare caracteristică 1-5 pe axele de probabilitate și impact; clasare în funcție de risc = probabilitate × impact. (3) Pentru timpul meu limitat, sugerați care 5 decalaje ar trebui să acopăr primul risc. criteriu de prioritizare a riscului de afaceri Criterii: [...] Teste: [...]"

prompt puternic; combină domeniul de aplicare cu riscul de afaceri și acordă prioritate forței de muncă limitate.

Patru șabloane copiabile

1) Decalaj în domeniul de aplicare al cerinței:

Având în vedere următoarele criterii de acceptare și aceste cazuri de testare. Realizați un tabel de trasabilitate: fiecare criteriu -> test(e) care îl îndeplinește. Criteriile care nu au nici un test se numesc „DECALIT DE ACOPERIRE” iar testele care nu se conectează la niciun criteriu se numesc „NECESARE?” Nota: Criterii: [...] / Teste: [...]

2) Scor de risc:

Notați această listă de caracteristici/module 1-5 pe axele de probabilitate (probabilitate de rupere) și impact (deteriorare dacă sunt sparte). Risc = probabilitate × impact. Sortați într-un tabel și specificați tipul de testare recomandat (unitate/API/UI/recunoaștere/securitate) pentru fiecare zonă cu risc ridicat. Lista: [...]

3) Interpretarea domeniului de aplicare:

A fost dat următorul raport de acoperire (linia %, ramură %). Spuneți-mi acest lucru:- Ce NU dovedesc aceste numere?- Care sunt zonele care ar putea fi expuse riscului în ciuda acoperirii mari a rândurilor?- Ce testare suplimentară ați recomanda pentru lacune pe care acoperirea nu le vede (cerință, combinație de date, securitate)? Raportați: [paste]

4) Plan de timp limitat:

Au mai rămas [X ore] până la difuzare. Sunt prezentate următoarele clasificări de risc și lacune de acoperire. In aceasta perioada se intocmeste in ordinea prioritatilor planul de testare care va reduce riscul maxim. Spuneți clar ce NU trebuie testat în mod conștient și riscul acceptat de a face acest lucru.Date: [...]

trei mini cutii

Cazul 1 — acoperire 100%, încredere zero. O echipă s-a lăudat cu o acoperire de linie de 94%. Analiza „Interpretarea domeniului de aplicare” a arătat că cele mai multe dintre teste au fost mai puțin afirmative, ceea ce înseamnă că au rulat linii, dar nu au verificat nimic. Acoperirea de protecție reală a fost mult mai mică. Echipa sa concentrat nu pe numere, ci pe testarea mutațiilor (unitatea 10); rata reală de captare a erorilor sa dublat.

Cazul 2 — Prioritate corectată pe harta riscurilor. O echipă a cheltuit 40% din efortul de testare pe un ecran de raportare rar folosit, sărind peste fluxul de plată pentru că „pur și simplu funcționează”. Scorul de risc AI a arătat acest dezechilibru. Munca a fost redistribuită; Două săptămâni mai târziu, a fost găsită o eroare de mare impact în fluxul de plăți și a fost închisă înainte de a fi utilizată.

Cazul 3 – Conștient în afara domeniului de aplicare. După 4 ore de la lansare, echipa a decis ce să testeze și ce să omite în mod conștient cu șablonul „program limitat”. Două fluxuri cu risc ridicat au fost testate în adâncime; un ecran de preferințe cu risc scăzut a fost documentat ca „risc acceptat” și omis. Decizia a fost transparentă și motivată; Versiunea a ieșit în siguranță.

Greșeli comune

  • Procentul de acoperire greșit cu calitatea. Citirea acoperirii rândurilor ridicate ca asigurare „testată”.
  • Privind doar acoperirea codului. Omiterea acoperirii cerințelor (testarea fiecărui criteriu de acceptare).
  • Testează în mod egal fără a ține cont de risc. Alocarea forței de muncă în zone cu risc scăzut și neglijarea fluxurilor critice.
  • Ascunderea în afara domeniului de aplicare. Nedocumentarea a ceea ce nu a fost testat atunci când nu a fost suficient timp; Surprize după lansare.
  • Acceptând scorul de risc al AI fără îndoială. AI nu cunoaște pe deplin contextul produsului; Ajustați scorurile cu un ochi expert.

În concluzie

Acoperirea testelor și testarea bazată pe risc sunt două instrumente pentru a direcționa efortul limitat către locul potrivit. Valorile de acoperire (linie, ramură, condiție, cale) arată ceea ce a fost atins, dar nu demonstrează că s-a comportat corect; Domeniul de aplicare este o hartă, încrederea nu. Puneți acoperirea cerințelor lângă acoperirea codului. Notați caracteristicile cu formula risc = probabilitate × impact și efort direct către cel mai mare risc. AI face vizibile golurile, punctează riscul, planifică timp limitat; dar prioritatea finală și decizia de „renunțare conștientă” revine expertului care cunoaște contextul afacerii.

Sarcina de aplicare

Alegeți un modul din propriul proiect. Rulați șablonul „decalaj în domeniul de aplicare al cerințelor” cu AI și aflați ce criterii de acceptare nu sunt testate. Apoi clasați subfuncțiile modulului pe axele de probabilitate × impact cu „scorarea riscului”. Distribuie cele (ipotetice) 3 ore de timp de testare pe care le ai cu „programul limitat”; Notați ceea ce nu veți testa în mod conștient și riscul acceptat. Adăugați un test concret care va închide intervalul de acoperire cu cel mai mare risc pe care îl găsiți.

lista de verificare

  • [ ] Am citit procentajul de acoperire ca hartă, nu calitate.
  • [ ] Pe lângă acoperirea codului, am eliminat și acoperirea cerințelor.
  • [ ] Am punctat caracteristicile după probabilitate × impact și le-am clasat după risc.
  • [ ] Am redirecționat efortul de testare către cel mai mare risc.
  • [ ] Am zone documentate care nu au fost testate în mod conștient și riscuri recunoscute.
  • [ ] Am examinat scorurile de risc ale AI pe baza contextului produsului meu.