Actualmente estoy trabajando en un proyecto que ha estado en producción durante más de dos años. El proyecto hace un uso extensivo de pruebas unitarias y pruebas de interfaz de usuario con guiones. Las pruebas unitarias de inicio cubrieron el marco del sistema, las reglas comerciales y las transiciones de estado (o flujo de trabajo). Los scripts de prueba se usan para las pruebas de caja negra. Sin embargo, con el tiempo, el costo de mantener nuestro conjunto completo de pruebas unitarias se ha vuelto cada vez más costoso, especialmente los relacionados con el estado.¿Cuándo utilizar scripts de prueba sobre pruebas unitarias?
Después de un poco de investigación, hemos encontrado que los scripts de prueba son más efectivos (es decir, proporcionan una mejor cobertura) y son más económicos de mantener que las pruebas unitarias relacionadas con el flujo de trabajo. Esto no quiere decir que el valor de las pruebas unitarias haya sido completamente negado, pero plantea la pregunta de si algunas clases de pruebas unitarias pueden descartarse en favor de los scripts de prueba.
Nuestro proyecto se ejecuta en un modelo incremental iterativo.
En general las pruebas de unidades deben cambiar para reflejar los nuevos requisitos comerciales, pero en algunos casos los cambios afectan a numerosos aspectos de nuestro sistema y el impacto de actualizar todas las pruebas unitarias impactadas es muy alto. En este caso, los scripts de prueba han demostrado ser más económicos de modificar que las pruebas unitarias. –
Debería tener mucho miedo de los cambios que tienen tal impacto en las pruebas unitarias. Es probable que las pruebas unitarias se estén pagando en este momento, ayudándote a detectar y entender los cambios que has introducido. – slim
Esto puede ser un poco nigromancia de hilos ... pero solo porque algo no es una "prueba de unidad" no significa que sea una prueba de aceptación. Hay muchas capas de verificación de que el código es correcto, desde la capa de la unidad hasta el sistema completo que encaja. Utilizo scripts de prueba externos en mi lugar de trabajo, y ellos * definitivamente * solo verifican que el código sea correcto, y no que se haya desarrollado el código correcto. – Tom