Conseguir probar todo es complicado, sobre todo teniendo en cuenta que la cantidad de pruebas al menos se duplica por cada if que tenga el programa.
Llamemos C a todo el conjunto posible de entradas para una función del programa, y llamemos A al conjunto de datos válidos para esa función. Evidentemente, A está incluido en C.
Por ejemplo, para la función que dadas dos palabras, devuelve un texto que contiene la primera y la segunda palabra si ambas palabras se encuentran en ese orden en un texto fijo. C es el conjunto de {strings, strings}, y A es el conjunto de palabras presentes en el texto fijo.
Casi todos hacen pruebas para comprobar que cuando se pasan dos parámetros de A el resultado es el esperado. Pero casi nadie hace pruebas para comprobar que cuando se pasan dos parámetros fuera de A (de C menos A), el resultado también está controlado y no se para por excepciones de ningún tipo.
Ahora complicamos un poco y suponemos que ese conjunto A, además tiene una forma concreta de un JSON. Es decir, C ha pasado de ser {string, string} a ser {string}, y A ha pasado a ser el JSON del conjunto de palabras presentes en el texto fijo, pero lo que está fuera de A puede ser desde un JSON con los parámetros incorrectos, pasando por cifras, algo que no sea JSON, y una buena cantidad de combinaciones .... Cuando se realizan pruebas ahora, hay que probar los casos buenos de A, pero también representantes de los casos malos de C menos A. Solo con hacer eso, la estabilidad y fiabilidad de los programas supera con creces a los de cierta corporación.
Copyleft Ender. El presente artículo no tiene finalidad informativa, de creación de opinión pública o de entretenimiento. Tiene como finalidad principal, la enseñanza y la divulgación de experiencias, proyectos, pensamientos y conocimientos del autor. Se permite la copia textual, la traducción y la distribución de este artículo entero en cualquier medio, a condición de que este aviso sea conservado. Se permite la cita. El autor no reclamará ninguna cantidad por el ejercicio de las dos autorizaciones anteriores. No autorizo a ninguna Entidad de Derechos de Autor a reclamar cantidad alguna en mi nombre por el ejercicio de los dos derechos anteriores.