Sí, es posible escribir un test suite que cubra todas las decisiones del programa pero que no encuentre el defecto en el código.
Para ello, el test suite debe incluir casos de prueba que representen todas las combinaciones posibles de valores de entrada, pero que no incluyan casos de prueba que representen arreglos de números ordenados en orden descendente.
Por ejemplo, un conjunto de pruebas completo podría incluir los siguientes casos de prueba:
# Arreglos de longitud 0 test_min([[]]) # Arreglos de longitud 1 test_min([1]) test_min([2]) # Arreglos de longitud 2 test_min([1, 2]) test_min([2, 1]) # Arreglos de longitud 3 test_min([1, 2, 3]) test_min([2, 1, 3]) test_min([3, 1, 2]) # Arreglos de longitud 4 test_min([1, 2, 3, 4]) test_min([2, 1, 3, 4]) test_min([3, 1, 2, 4]) test_min([4, 1, 2, 3])
Este conjunto de pruebas cubre todas las decisiones del programa, ya que incluye casos de prueba que representan todas las combinaciones posibles de valores de entrada para arreglos de longitud 0, 1, 2, 3 y 4. Sin embargo, no incluye casos de prueba que representen arreglos de números ordenados en orden descendente.
Por lo tanto, si la implementación del problema de encontrar el mínimo tiene un defecto que solo se produce cuando el arreglo está ordenado en orden descendente, entonces este conjunto de pruebas no lo detectará.
Para detectar este defecto, es necesario incluir un caso de prueba que represente un arreglo de números ordenados en orden descendente. Por ejemplo:
test_min([4, 3, 2, 1])
Este caso de prueba provocará que la implementación del problema de encontrar el mínimo devuelva el valor máximo en lugar del mínimo.
Para escribir su respuesta aquí, Ingresar o Crear una cuenta
Compartir