An Upper Bound on the Probability That a User Encounters an Undiscovered Defect
Questo articolo propone un limite superiore privo di distribuzione per la probabilità che un utente incontri un difetto software non scoperto, dimostrando che la frazione di difetti segnalati esattamente una volta durante la fase di beta testing () funge da stima conservativa e indipendente dal modello, adatta per le decisioni di rilascio.
Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo
La Grande Caccia ai Bug: Perché contare i bug non è sufficiente
Immaginate di essere uno chef che sta per servire un banchetto gigante a migliaia di ospiti. Prima di aprire le porte, avete un team di assaggiatori (i vostri beta tester) che hanno mangiato il cibo e stanno gridando: "Ehi, questa zuppa è troppo salata!" oppure "C'è un sasso in questa torta!". Voi risolvete i problemi che loro trovano. Ma ecco la domanda spaventosa: se apriste le porte proprio ora, quali sono le probabilità che un ospite casuale che entra morda un sasso che voi avete mancato?
Questo è il cuore di un problema nell'informatica chiamato "affidabilità del software". Per decenni, gli sviluppatori hanno cercato di rispondere a questo quesito contando. Chiedono: "Quanti sassi sono rimasti in cucina?". Usano una matematica complessa per indovinare il numero totale di bug nascosti. Ma c'è un intoppo: sapere che ci sono dieci sassi rimasti non vi dice se sono tutti nel retro della dispensa (dove solo una persona potrebbe trovarli) o se un enorme masso si trova proprio davanti alla porta d'ingresso (dove tutti inciamperanno). I vecchi metodi spesso si bloccano nel tentativo di contare i sassi, ignorando che alcuni sassi sono molto più pericolosi di altri a causa di dove si trovano.
Per risolvere questo problema, dobbiamo smettere di contare i sassi e iniziare a contare le persone. Dobbiamo sapere la probabilità che un utente casuale incontri un problema. Questo articolo affronta esattamente questa domanda: invece di chiedere "Quanti bug sono rimasti?", chiede "Qual è la probenza che un utente si imbatta in un bug che non ha mai visto prima?". Risulta che esiste un modo sorprendentemente semplice per indovinarlo, usando un trucco che osserva quanto spesso i tester trovano lo stesso bug più di una volta.
La Grande Idea del Paper: La Regola del "Miracolo Unico"
Gli autori, Carlos M. Hernández-Suárez e Karla Hernández-Cuevas, propongono una scorciatoia intelligente. Suggeriscono che, per indovinare il rischio che un utente incontri un bug nascosto, non è necessario conoscere il numero totale di bug, come il software sia costruito, o persino quante persone lo stiano usando. Basta guardare i vostri report sui bug e contare qualcosa di molto specifico: i bug che sono stati segnalati esattamente una volta.
Usiamo un'analogia. Immaginate di essere un detective che cerca di capire quanti diversi tipi di specie aliene stiano visitando la vostra città. Avete un registro degli avvistamenti.
- Se vedete "Zog" 50 volte, sapete che Zog è un alieno comune.
- Se vedete "Xyl" 3 volte, Xyl è un po' più raro.
- Ma se vedete "Blorp" esattamente una volta, e mai più, cosa vi dice questo?
Il paper sostiene che questi "Blorp" — i bug visti esattamente una volta — siano la chiave. Chiamano la frazione di queste segnalazioni singole () rispetto al numero totale di segnalazioni () un "limite superiore conservativo". In parole povere: la percentuale di bug che sono stati segnalati esattamente una volta è una stima sicura, del "caso peggiore", della percentuale di utenti che incontrerà un bug nuovo, mai visto prima.
Perché questo funziona (La logica della "Porta Chiusa")
Potreste chiedervi: "E se ci fossero bug nascosti dietro altri bug? Come una stanza segreta dietro una porta chiusa a chiave?". Gli autori affrontano questo punto con un pezzo di logica brillante.
Immaginate che il software sia una gigantesca villa con molte stanze. Alcuni bug sono nel corridoio (facili da trovare). Alcuni sono in una stanza segreta dietro una porta chiusa (difficili da trovare).
- Se un utente colpisce la porta chiusa (un bug), non può entrare nella stanza segreta dietro di essa.
- Pertanto, il numero di persone che possono raggiungere la stanza segreta è sempre minore o uguale al numero di persone che colpiscono la porta chiusa.
Gli autori dimostrano che, a causa di questa struttura "annidata", non c'è bisogno di preoccuparsi delle stanze nascoste. I bug a "segnalazione singola" che avete trovato tengono già conto del rischio di quelli nascosti. Se un bug viene segnalato una volta, esso agisce come una "porta" che limita il rischio di tutto ciò che sta dietro. Quindi, contare le segnalazioni singole è sufficiente per coprire l'intera casa.
Cosa hanno fatto e cosa hanno scoperto
Gli autori non si sono limitati a indovinare; hanno costruito un modello matematico chiamato "Forma Canonica" (pensatelo come un tipo speciale di vaso o un barattolo pieno di palline colorate). Hanno dimostrato matematicamente che, se trattate i vostri report sui bug come il disegno di palline da questo barattolo, la frazione di palline che appaiono solo una volta () è l'esatta stima di massima verosimiglianza per la "massa mancante" (i bug non visti).
Fondamentalmente, hanno dimostrato che questa stima è conservativa. Ciò significa che tende a sovrastimare il rischio piuttosto che sottostimarlo.
- Perché questo è un bene: Se siete uno sviluppatore che deve decidere se rilasciare un software, volete essere sicuri. Se la matematica dice "C'è una probabilità del 5% di un bug" e la probabilità reale è del 3%, siete al sicuro. Se la matematica avesse detto 3% e la probabilità reale fosse stata del 5%, sareste stati nei guai. Questo metodo assicura che siate sempre dal lato sicuro, tendendo alla cautela.
Hanno testato questa idea utilizzando simulazioni al computer (creando popolazioni di bug fittizie con risposte note).
- In un test con 20 bug, hanno scoperto che man mano che "testavano" più utenti (aumentando la dimensione del campione da 25 a 400), la loro stima () era sempre maggiore o uguale al numero reale di bug non visti.
- Ad esempio, con 100 utenti di test, il rischio reale non visto era 0.0059, e la loro stima era 0.0063. La stima era leggermente troppo alta (conservativa), ma mai troppo bassa.
Cosa NON è questo (Le regole del gioco)
Il paper è molto chiaro su ciò che questo metodo non può fare, ed è importante non sbagliare:
- NON serve per contare i bug. Non vi dice "Ci sono 50 bug rimasti". Vi dice "C'è una probabilità del 2% che un utente incontri un bug".
- NON è per liste di bug pubbliche. Gli autori escludono esplicitamente l'uso di questo metodo su database di bug standard (come quelli presenti su internet). Perché? Perché in quelle liste, un bug è solitamente segnalato una volta da una persona, anche se 1.000 persone lo hanno trovato. Il "conteggio" va perduto. Per usare questo metodo, avete bisogno di dati che dicano: "Questo bug è stato incontrato da 50 utenti diversi", non solo "Questo bug è stato segnalato".
- NON è una palla di cristallo magica per il futuro. Fornisce una fotografia del rischio proprio ora. Se riparate i bug e testate di nuovo, dovete ricalcolare.
Il succo del discorso
Questo articolo offre una risposta diretta e senza fronzoli alla decisione di rilascio. Dice: "Non preoccupatevi di quanti bug si nascondono nel buio. Guardate semplicemente quanti bug i vostri tester hanno trovato esattamente una volta. Quel numero, diviso per il totale dei vostri test, è la vostra stima sicura e limite superiore di quanti utenti rimarranno bloccati su un bug che avete mancato".
È uno strumento che trasforma un'incertezza complessa e spaventosa in un numero semplice e sicuro, assicurando che quando il software viene spedito, gli sviluppatori abbiano una visione chiara e conservativa del rischio per i loro utenti.
Sommerso dagli articoli nel tuo campo?
Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.