PREMIUM

Template per Analisi della Causa Radice di un Bug

Per sviluppatori che vogliono smettere di tirare a indovinare: trasforma un bug in una procedura ordinata di ipotesi falsificabili, evidenze, isolamento e causa radice, fino al fix e al test di regressione che impedisce il ritorno del problema.

#debugging #causa-radice #troubleshooting #regressione #metodo-scientifico

Esempio di output

BUG: il totale carrello mostra 0 quando l'utente applica due coupon.

1. SINTOMI E DATI NOTI
- Atteso: somma sconti applicata una volta. Osservato: totale = 0.
- Riproducibile: si, sempre, con 2+ coupon. Ambiente: prod e staging.
- Cambiato di recente: refactor del calcolo sconti (commit a3f1).

2. IPOTESI (ordinate per probabilita)
| # | Ipotesi | Probabilita | Come falsificarla |
|---|---------|-------------|-------------------|
| H1 | Sconti sommati come percentuale > 100% | Alta | Logga sconto_totale con 2 coupon |
| H2 | Divisione per zero su quantita | Media | Test con quantita=1 |
| H3 | Bug di arrotondamento | Bassa | Confronta con valori interi |

3. ESPERIMENTI ED EVIDENZE
- H1: log mostra sconto_totale = 1.4 (140%) -> totale clampato a 0. CONFERMA H1.
- H2: riprodotto anche con quantita=1 -> H2 SMENTITA.

4. CAUSA RADICE
Il refactor a3f1 somma gli sconti percentuali invece di applicarli in sequenza; con due coupon supera il 100% e il clamp porta il totale a 0.

5. FIX
Applicare gli sconti in sequenza moltiplicativa, non additiva.
// before: sconto = c1 + c2
// after:  prezzo = prezzo * (1-c1) * (1-c2)

6. TEST DI REGRESSIONE
Test: due coupon 30%+20% su 100 -> atteso 56, non 0. Fallisce senza il fix.

7. ALTRI PUNTI AFFETTI
Verificare la stessa logica additiva in calcoloSpedizione() — stessa causa radice probabile.

Domande frequenti

Cosa devo fornire perche il debug sia utile?

Piu sintomi concreti dai, meglio e: comportamento atteso vs osservato, messaggio o stack trace, passi per riprodurre, ambiente e cosa e cambiato di recente. Il prompt usa solo cio che fornisci e marca come 'Da verificare' qualsiasi passo che richiede dati che non hai ancora dato.

In cosa e diverso dal chiedere semplicemente 'perche non funziona'?

Perche impone il metodo scientifico: genera piu ipotesi concorrenti, le ordina per probabilita, e per ognuna definisce un esperimento che la conferma o la SMENTISCE. Questo evita il fix a caso che maschera il sintomo senza toccare la causa radice.

Mi aiuta anche a evitare che il bug ritorni?

Si: la procedura termina sempre con un test di regressione che riproduce il bug e fallirebbe senza il fix, piu una nota su altri punti del codice potenzialmente affetti dalla stessa causa radice.

Vuoi un template su misura?

Costruiscine uno in poche domande — con la struttura corretta per il tuo standard.

Crea il tuo template