Haciendo lo correcto
El desarrollo moderno no puede existir sin pruebas automatizadas. Las pruebas pueden ser escritas muy rápidamente incluso por laicos. Por lo tanto, tenemos pruebas, todo es como si fuera bueno. ¿Podemos confiar en tales pruebas? ¿Cuál es la calidad de nuestras herramientas de control de calidad? Veamos las pruebas de Specflow que se pueden escribir en lenguaje humano.
Feature: SpecFlowFeature In order to avoid silly mistakes As a math idiot I want to be told the sum of two numbers Scenario: Add two numbers Given I have entered 50 into the calculator And I have entered 70 into the calculator When I press add Then the result should be 120 on the screen
Esta prueba consta de tres partes estándar llamadas configuración, acción y verificación. Todo se ve bien. Pero, ¿qué sucede cuando alguien agrega un paso adicional a esta prueba?
Feature: SpecFlowFeature In order to avoid silly mistakes As a math idiot I want to be told the sum of two numbers Scenario: Add two numbers Given I have entered 50 into the calculator And I have entered 70 into the calculator When I press add And I press memorize Then the result should be 120 on the screen
La memorización es una operación común en la calculadora para escribir el número actual en la memoria. Si ejecutamos esta prueba, seguirá siendo verde. Esta no es una buena prueba ahora, porque nadie verifica cómo un nuevo paso en la prueba afecta a todo el sistema.
Este tipo de prueba puede aparecer como resultado de muchas refactorizaciones o cambios significativos en los términos de referencia. Esto significa que tendremos todas las pruebas en verde, pero no verifican muy bien el rendimiento del sistema. La prueba mencionada anteriormente se puede solucionar de dos maneras: elimine este paso agregado “Y presiono memorizar” o agregue un paso más al final de la prueba para verificar el estado de la memoria “Entonces el valor almacenado en la memoria es 120”.
Plugin SpecFlowMaster
Este complemento para Specflow le permite encontrar tales pruebas y líneas de pruebas sospechosas. Como funciona Para cada línea de la función Specflow, genera una prueba especial que ejecuta la misma prueba, pero sin esta línea. Si la ejecución de la prueba conduce a un error, este es el comportamiento esperado y todo está bien aquí. Si dicha prueba es exitosa, entonces algo está mal con la línea de prueba en esta prueba y el sistema determina que esta línea es sospechosa. Es decir la nueva prueba generada será roja.
También se verifican casos más complejos para pasos o escenarios de fondo con múltiples conjuntos de datos. Para los pasos de precondición, el complemento realiza todas las pruebas del archivo, pero sin la línea de prueba. Para las pruebas con conjuntos de datos, el complemento genera la ejecución de pruebas para todos los conjuntos de datos.
Notas técnicas- C #, VB
- SpecFlow 3.0 o superior
- .NET Framework 4.7.1 o posterior, .NET Core 2.0 o posterior
¿Qué se planea hacer en el futuro?- Soporte para atributos Antes y Después
- Complementos similares para Java y Node.js
Referencias- El complemento se puede encontrar en github
- Envíe cualquier comentario a arskiev@gmail.com