Tra la moltitudine di risposte, quindi, nessuno ha toccato partizionamento di equivalenza e analisi del valore al contorno , considerazioni fondamentali nella risposta alla domanda in questione.
Tutte le altre risposte, sebbene utili, sono qualitative ma è possibile - e preferibile - essere quantitative qui. @fishtoaster fornisce alcune linee guida concrete, semplicemente sbirciando sotto le copertine della quantificazione del test, ma l'analisi del partizionamento dell'equivalenza e del valore al contorno ci permettono di fare meglio.
Nel partizionamento equivalenza , dividi l'insieme di tutti i possibili input in gruppi in base ai risultati attesi. Qualsiasi input da un gruppo produrrà risultati equivalenti, quindi tali gruppi sono chiamati classi di equivalenza . (Nota che risultati equivalenti non significano risultati identici.)
Come semplice esempio, considera un programma che dovrebbe trasformare i caratteri ASCII minuscoli in caratteri maiuscoli. Altri personaggi dovrebbero subire una trasformazione dell'identità, ovvero rimanere invariati. Ecco una possibile suddivisione in classi di equivalenza:
| # | Equivalence class | Input | Output | # test cases |
+------------------------------------------------------------------------+
| 1 | Lowercase letter | a - z | A - Z | 26 |
| 2 | Uppercase letter | A - Z | A - Z | 26 |
| 3 | Non-alphabetic chars | 0-9!@#,/"... | 0-9!@#,/"... | 42 |
| 4 | Non-printable chars | ^C,^S,TAB... | ^C,^S,TAB... | 34 |
L'ultima colonna riporta il numero di casi di test se si elencano tutti. Tecnicamente, con la regola 1 di fishtoaster si includono 52 casi di test - tutti quelli per le prime due righe sopra citate rientrano nel "caso comune". @ la regola 2 di Fishtoaster aggiungerebbe un po 'o tutto dalle righe 3 e 4 sopra pure. Ma con il partizionamento dell'equivalenza è sufficiente testare ogni caso di test one in ogni classe di equivalenza. Se scegli "a" o "g" o "w" stai testando lo stesso percorso di codice. Pertanto, hai un totale di 4 test case invece di 52 +.
Analisi del valore al contorno raccomanda un leggero raffinamento: essenzialmente suggerisce che non tutti i membri di una classe di equivalenza sono, beh, equivalenti. Vale a dire, i valori ai limiti dovrebbero anche essere considerati degni di un caso di prova a pieno titolo. (Una semplice giustificazione per questo è il famigerato errore !) Quindi, per ogni equivalenza classe si potrebbe avere 3 ingressi di prova. Osservando il dominio di input sopra - e con una certa conoscenza dei valori ASCII - potrei trovare questi input del test case:
| # | Input | # test cases |
| 1 | a, w, z | 3 |
| 2 | A, E, Z | 3 |
| 3 | 0, 5, 9, !, @, *, ~ | 7 |
| 4 | nul, esc, space, del | 4 |
(Non appena ottieni più di 3 valori limite che suggeriscono che potresti voler ripensare alle tue delineazioni di classe di equivalenza originali, ma questo era abbastanza semplice da non tornare indietro per revisionarle.) Quindi, l'analisi del valore al contorno ci porta fino a 17 casi di test - con un'alta affidabilità di copertura completa - rispetto a 128 casi di test per eseguire test esaustivi. (Per non parlare del fatto che il combinatorics impone che test esaurienti siano semplicemente irrealizzabili per qualsiasi applicazione del mondo reale!)