Entre la gran cantidad de respuestas, por lo tanto, nadie ha tratado sobre partición de equivalencia y análisis de valor de límite , consideraciones vitales en la respuesta a la pregunta en cuestión.
Todas las demás respuestas, aunque son útiles, son cualitativas, pero es posible, y preferible, ser cuantitativas aquí. @fishtoaster proporciona algunas pautas concretas, solo mirando bajo las coberturas de la cuantificación de prueba, pero la partición de equivalencia y el análisis del valor límite nos permiten hacerlo mejor.
En partición de equivalencia , divide el conjunto de todas las entradas posibles en grupos según los resultados esperados. Cualquier entrada de un grupo producirá resultados equivalentes, por lo que dichos grupos se denominan clases de equivalencia . (Tenga en cuenta que los resultados equivalentes no significa no resultados idénticos).
Como ejemplo simple, considere un programa que debería transformar los caracteres ASCII en minúsculas en caracteres en mayúsculas. Otros personajes deben sufrir una transformación de identidad, es decir, permanecer sin cambios. Aquí hay un posible desglose en clases de equivalencia:
| # | 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 |
La última columna informa el número de casos de prueba si los enumera todos. Técnicamente, según la regla 1 de @ fishtoaster, incluiría 52 casos de prueba, todos los que corresponden a las dos primeras filas mencionadas anteriormente corresponden al "caso común". La regla 2 de @ fishtoaster agregaría también algunas o todas las filas 3 y 4 anteriores. Pero con la partición de equivalencia es suficiente probar cualquier caso de prueba en cada clase de equivalencia. Si selecciona "a" o "g" o "w", está probando la misma ruta de código. Por lo tanto, tiene un total de 4 casos de prueba en lugar de 52+.
El análisis del valor límite recomienda un ligero refinamiento: esencialmente sugiere que no todos los miembros de una clase de equivalencia son, bueno, equivalentes. Es decir, los valores en los límites también deben considerarse dignos de un caso de prueba por derecho propio. (Una justificación fácil para esto es el infame error off-by-one !) Por lo tanto, para cada equivalencia clase podría tener 3 entradas de prueba. Mirando el dominio de entrada anterior, y con un poco de conocimiento de los valores ASCII, puedo encontrar estas entradas de caso de prueba:
| # | Input | # test cases |
| 1 | a, w, z | 3 |
| 2 | A, E, Z | 3 |
| 3 | 0, 5, 9, !, @, *, ~ | 7 |
| 4 | nul, esc, space, del | 4 |
(Tan pronto como obtenga más de 3 valores de límite, eso sugiere que tal vez quiera replantearse las delineaciones de su clase de equivalencia original, pero esto fue lo suficientemente simple como para que no volviera a revisarlas). Por lo tanto, el análisis del valor de límite nos lleva a hasta solo 17 casos de prueba, con una alta confianza en la cobertura completa, en comparación con 128 casos de prueba para realizar pruebas exhaustivas. (¡Sin mencionar que la combinatoria dicta que las pruebas exhaustivas son simplemente inviables para cualquier aplicación del mundo real!)