Junior
In cosa consiste il test di scatola bianca?
sobes.tech AI
Risposta dell'AI
Il testing di tipo White-box è un metodo di testing del software che verifica la struttura interna, il design e la logica del codice. Il tester ha accesso al codice sorgente e progetta casi di test basati su di esso.
Principi fondamentali:
- Copertura del codice: I casi di test vengono sviluppati per raggiungere la massima copertura di vari elementi del codice (operatori, rami, percorsi).
- Conoscenza della struttura interna: Richiede di capire come funziona internamente il programma.
- Rilevamento: di errori nella logica, percorsi di esecuzione errati, problemi con cicli e operatori condizionali.
- Automazione: Spesso utilizzato nei test unitari, test di integrazione e test di sicurezza a livello di codice.
Tipi di copertura:
- Copertura delle istruzioni (Statement Coverage): Esecuzione di ogni istruzione nel programma almeno una volta.
- Copertura delle ramificazioni (Branch Coverage): Esecuzione di ogni condizione (if, else, switch) sia come true che come false.
- Copertura dei percorsi (Path Coverage): Esecuzione di tutti i percorsi possibili attraverso il programma. (La più completa, ma spesso poco praticabile).
Esempio di copertura delle ramificazioni in Python:
# Funzione di esempio
def calculate_discount(price, is_member):
if price > 100 and is_member: # Ramo 1 (true)
discount = price * 0.1 # Ramo 2 (viene eseguito se Ramo 1 è 'true')
else: # Ramo 3 (false)
discount = 0 # Ramo 4 (viene eseguito se Ramo 1 è 'false')
return price - discount
# Casi di test per coprire i rami:
# 1. price > 100 e is_member == True (copertura Ramo 1 true, Ramo 2)
# 2. price <= 100 o is_member == False (copertura Ramo 1 false, Ramo 3, Ramo 4)
Vantaggi:
- Rilevamento precoce degli errori.
- Garantisce che le parti importanti del codice siano state testate.
- Aiuta a capire come funziona il codice e a migliorare il suo design.
Svantaggi:
- Richiede una conoscenza approfondita del codice.
- Può essere laborioso per sistemi grandi e complessi.
- Non testa il funzionamento del programma dal punto di vista dell'utente finale (compito dei test di tipo black-box).
L'essenza è verificare "come" funziona il programma, non solo "cosa" fa.