Durante la scrittura di test (parametrizzati) per le funzioni stateless, come faccio a determinare il set di valori ideale da testare con?
Sto scrivendo una classe con funzioni matematiche in C #, e voglio scrivere test unitari per loro. Oggi voglio scrivere questa funzione (davvero!):
int Clamp(int value, int lowerBound, int upperBound)
{
// TODO: Implement.
return 0;
}
Come impone una buona pratica del TDD, scrivo prima i test unitari e successivamente l'implementazione. Posso scrivere un test parametrizzato per questa funzione stateless, ma devo decidere il miglior insieme di valori da testare.
La mia strategia attuale per il prelievo dei valori di test è:
Per ogni parametro, posso selezionare i valori dell'intero insieme di numeri interi con segno a 32 bit. Non sto usando valori generati casualmente perché ciò renderebbe il test non ripetibile. Per verificare i casi d'angolo, seleziono -1, 0, 1, ma anche -2147483648 (numero intero con segno minimo a 32 bit) e 2147483647 (numero intero con segno massimo a 32 bit). Avrei anche bisogno di scegliere un valore 'normale', ad esempio 42, per assicurarmi che non stia solo testando i casi d'angolo. Un valore normale è sufficiente? E uno negativo, diciamo -63. Ho perso qualcuno?
−2147483648, -63, -1, 0, 1, 42, 2147483647
Se uno qualsiasi dei tre parametri può avere uno solo di questi sette valori, finirò con 343 test per una funzione ! Prima di scrivere 343 test, devo davvero chiedere:
Sono questi i valori giusti da testare? In generale, quale strategia posso usare per scegliere i valori più efficaci da usare?