Unità 8 / 11

Analisi della copertura dei test e test basati sul rischio: puntare bene con l'intelligenza artificiale

Guadagni:

  • Capacità di leggere parametri come la copertura di linee, diramazioni e condizioni come una mappa, non come un trust, e di comprendere che una copertura elevata può fornire pseudo-trust
  • Capacità di affiancare l'ambito dei requisiti all'ambito del codice e di rendere visibili le lacune di tracciabilità con l'intelligenza artificiale
  • Capacità di assegnare un punteggio alle funzionalità con la formula rischio = probabilità × impatto, indirizzare uno sforzo di test limitato al rischio più elevato e documentare deliberatamente fuori ambito

Non puoi testare ogni software per sempre; Il tempo e le risorse sono limitati. Quindi la vera domanda è: dove investire lo sforzo limitato dei test? Due concetti rispondono a questa domanda. La copertura del test, una metrica che misura la quantità di codice o requisiti interessati dai test, rappresenta ciò che viene testato. I test basati sul rischio - l'approccio che determina la priorità del test in base alla probabilità di deterioramento di un'area e al danno che causerà quando si deteriorerà - indirizza gli sforzi verso il rischio maggiore. In entrambi i casi l’intelligenza artificiale (AI) è un potente partner di analisi: rende visibili le lacune di copertura e suggerisce le aree di rischio. Ma resta l’avvertenza centrale: il numero di ambiti che l’IA vede può essere fuorviante; È possibile ottenere anche una copertura delle righe del 100% con test che non verificano nulla. Il tuo compito è leggere l'ambito come una mappa, non come un trust.

Leggere correttamente le metriche di copertura

Esistono diversi tipi di ambito e non tutti hanno lo stesso significato:

  • Copertura della riga: quante righe di codice sono state eseguite almeno una volta. Il criterio più comune ma più debole; Solo perché una linea funziona non è la prova che si comporti correttamente.
  • Copertura del ramo: se ogni ramo if (sia vero che falso) è stato testato. Più significativo di una linea.
  • Copertura delle condizioni: testare separatamente ciascuna sottocondizione in condizioni complesse.
  • Copertura del percorso: combinazioni di percorsi logici all'interno del codice. È il più completo ma difficile da raggiungere pienamente nella pratica.
Attenzione: la percentuale di copertura non è un "punteggio di qualità". Una copertura delle righe al 100% indica che le righe funzionano; non che produca il risultato corretto (lo pseudo-passaggio nell'unità 1). Utilizzare l'ambito come risposta alla domanda "dove non ho mai guardato", non come garanzia che "tutto è stato testato".

Scope punti ciechi

Le metriche di copertura misurano solo la quantità di codice che è stata eseguita; non può vedere: (1) requisiti non testati (il codice esiste ma la regola aziendale è sbagliata), (2) codice mancante (nessun ambito per un controllo che non è mai stato scritto), (3) combinazioni dati/stato, (4) usabilità, prestazioni, sicurezza. Pertanto, la copertura dei requisiti (ogni criterio di accettazione deve essere soddisfatto da almeno un test) dovrebbe essere posizionata accanto alla copertura del codice. L’intelligenza artificiale è molto utile nel produrre la mappatura dei requisiti-test (matrice di tracciabilità).

Test basati sul rischio: dove impegnarci?

Rischio = probabilità (possibilità di rottura) × impatto (danno in caso di rottura). Con l'intelligenza artificiale, puoi segnare un elenco di funzionalità su questi due assi e creare una mappa termica. Alta probabilità × domini alti (pagamento, autenticazione, integrità dei dati) meritano i test più intensi; aree basse x aree basse (uno schermo preferito usato raramente) è sufficiente il test della luce.

zona

probabilità

Impatto

Rischio

Densità di prova

Flusso di pagamento

medio

molto alto

alto

Profondo + automazione

autenticazione

medio

molto alto

alto

Profondo + sicurezza

Ricerca prodotti

alto

medio

Medio-Alto

Automazione + scoperta

Foto del profilo

basso

basso

basso

controllo della luce

Pagina di aiuto

basso

troppo basso

troppo basso

revisione

La trappola dell'inseguimento dell'ambito

Rendere la percentuale di copertura un obiettivo (ad esempio la regola "il team deve superare una copertura del 90%) ha un effetto collaterale pericoloso: sviluppatori e tester si concentrano sull'aumento della percentuale anziché affrontare il rischio effettivo. Il risultato è spesso un ambito gonfiato senza asserzioni o test banali: il numero sembra carino ma non c'è protezione. Si tratta del fenomeno della corruzione del criterio nel momento in cui diventa esso stesso fine: «quando una misura diventa fine, cessa di essere una buona misura». Utilizzare l'oscilloscopio come strumento diagnostico e non come scheda di valutazione delle prestazioni.

Un approccio più sano consiste nel leggere l'ambito in modo direzionale: "Perché la copertura delle filiali è bloccata al 40% nel modulo di pagamento critico?" La domanda è "la copertura complessiva è del 90%?" Ha molto più valore della domanda. Fare in modo che l'IA suddivida il report sull'ambito per modulo e livello di rischio; Evidenziare le aree ad alto rischio con bassa copertura. Pertanto, l’ambito diventa una bussola che dirige il lavoro piuttosto che una percentuale cieca.

Attenzione: lo slogan "copertura al 100%" è una trappola. Testare parte del codice (accessori semplici, parti generate automaticamente) ha un valore basso; lo sforzo speso lì è rubato alle regole aziendali ad alto rischio. L'obiettivo è testare ogni comportamento e rischio importante, non ogni linea.

Prompt debole / Prompt forte

Debole: “Aumenta la copertura dei miei test”.
Forte: "Dato questo elenco di criteri di accettazione e questi casi di test esistenti. (1) Tabella quali criteri di accettazione non sono stati soddisfatti da alcun test (gap di copertura dei requisiti). (2) Assegnare un punteggio da 1 a 5 a ciascuna caratteristica sugli assi di probabilità e impatto; classificare per rischio = probabilità × impatto. (3) Per il mio tempo limitato, suggerire quali 5 lacune dovrei colmare per prime, iniziando con il rischio più elevato. Non prendere la copertura della linea di codice come unico criterio; dare priorità al rischio aziendale. Criteri: [...] Test: [...]"

Prompt potente; combina l'ambito con il rischio aziendale e dà priorità a una manodopera limitata.

Quattro modelli copiabili

1) Divario nell'ambito dei requisiti:

Dati i seguenti criteri di accettazione e questi casi di test. Produrre una tabella di tracciabilità: ciascun criterio -> test che lo soddisfano. I criteri che non hanno alcun test sono chiamati "GAP DI COPERTURA" e i test che non si collegano ad alcun criterio sono chiamati "NECESSARI?" Voto: Criteri: [...] / Test: [...]

2) Punteggio del rischio:

Assegna un punteggio da 1 a 5 a questo elenco di caratteristiche/moduli sugli assi della probabilità (probabilità di rottura) e dell'impatto (danno in caso di rottura). Rischio = probabilità × impatto. Ordinare in una tabella e specificare il tipo di test consigliato (unità/API/UI/ricognizione/sicurezza) per ciascuna area ad alto rischio. Elenco: [...]

3) Interpretazione dell'ambito:

È stato fornito il seguente rapporto di copertura (linea%, filiale%). Dimmi questo:- Cosa NON dimostrano questi numeri?- Quali sono le aree che potrebbero essere a rischio nonostante un'elevata copertura delle righe?- Quali test aggiuntivi consiglieresti per le lacune che la copertura non rileva (requisiti, combinazione di dati, sicurezza)? Rapporto: [incolla]

4) Piano a tempo limitato:

[X ore] rimaste alla trasmissione. Vengono fornite la seguente classificazione dei rischi e le lacune di copertura. Durante questo periodo, viene preparato in ordine di priorità il piano di test che ridurrà il rischio massimo. Indica chiaramente cosa NON testare consapevolmente e il rischio accettato di farlo. Dati: [...]

tre mini custodie

Caso 1: copertura del 100%, zero trust. Una squadra vantava una copertura della linea del 94%. L'analisi di "interpretazione dell'ambito" ha mostrato che la maggior parte dei test erano privi di asserzioni, nel senso che eseguivano linee ma non verificavano nulla. La copertura protettiva effettiva era molto inferiore. Il team non si è concentrato sui numeri ma sui test di mutazione (unità 10); il tasso effettivo di rilevamento degli errori è raddoppiato.

Caso 2 — Priorità corretta della mappa dei rischi. Un team spendeva il 40% del proprio impegno nei test su una schermata di reporting utilizzata raramente, saltando il flusso di pagamento perché "funziona e basta". Il punteggio di rischio dell’IA ha mostrato questo squilibrio. Il lavoro è stato ridistribuito; Due settimane dopo è stato rilevato un bug ad alto impatto nel flusso di pagamento ed è stato chiuso prima della pubblicazione.

Caso 3 – Conscio fuori portata. Dopo 4 ore dal rilascio, il team ha deciso cosa testare e cosa saltare consapevolmente con il modello del "programma limitato". Due flussi ad alto rischio sono stati testati in modo approfondito; una schermata di preferenza a basso rischio è stata documentata come “rischio accettato” e saltata. La decisione è stata trasparente e motivata; La versione è uscita sana e salva.

Errori comuni

  • Confondere la percentuale di copertura con la qualità. Leggere la copertura delle righe alte come garanzia "testata".
  • Sto solo guardando la copertura del codice. Saltare la copertura dei requisiti (test di ciascun criterio di accettazione).
  • Testare allo stesso modo senza tenere conto del rischio. Allocare la manodopera in aree a basso rischio e trascurare i flussi critici.
  • Nascondersi fuori portata. Non documentare ciò che non è stato testato quando non c'era abbastanza tempo; Sorprese dopo l'uscita.
  • Accettare il punteggio di rischio dell'IA senza fare domande. L’intelligenza artificiale non conosce appieno il contesto del prodotto; Regola i punteggi con un occhio esperto.

In sintesi

La copertura dei test e i test basati sul rischio sono due strumenti per indirizzare uno sforzo limitato nel posto giusto. Le metriche di copertura (linea, diramazione, condizione, percorso) mostrano cosa è stato toccato ma non dimostrano che si sia comportato correttamente; Lo scope è una mappa, la fiducia no. Metti la copertura dei requisiti accanto alla copertura del codice. Assegna un punteggio alle caratteristiche con la formula rischio = probabilità × impatto e indirizza lo sforzo verso il rischio maggiore. L’intelligenza artificiale rende visibili le lacune, valuta i rischi, pianifica tempi limitati; ma la priorità finale e la decisione di “rinuncia consapevole” spetta all’esperto che conosce il contesto aziendale.

Compito dell'applicazione

Scegli un modulo dal tuo progetto. Esegui il modello "gap nell'ambito dei requisiti" con l'intelligenza artificiale e scopri quali criteri di accettazione non sono stati testati. Quindi classificare le sottocaratteristiche del modulo sugli assi probabilità × impatto con il “punteggio di rischio”. Distribuisci le (ipotetiche) 3 ore di test che hai a disposizione con il "programma limitato"; Annota ciò che consapevolmente non testerai e il rischio accettato. Aggiungi un test concreto che colmi il divario di copertura del rischio più elevato che trovi.

lista di controllo

  • [ ] Leggo la percentuale di copertura come mappa, non come qualità.
  • [ ] Oltre alla copertura del codice, ho rimosso anche la copertura dei requisiti.
  • [ ] Ho classificato le caratteristiche in base alla probabilità × impatto e le ho classificate in base al rischio.
  • [] Ho reindirizzato lo sforzo di test verso il rischio più elevato.
  • [ ] Ho documentato aree non testate consapevolmente e riconosciuto il rischio.
  • [] Ho esaminato i punteggi di rischio dell'intelligenza artificiale in base al contesto del mio prodotto.