SpecFlowMaster: comment améliorer la qualité des tests

Faire la bonne chose


Le développement moderne ne peut exister sans tests automatisés. Les tests peuvent être écrits très rapidement même par des profanes. Ainsi, nous avons des tests, tout est comme si bon. Pouvons-nous faire confiance à de tels tests? Quelle est la qualité de nos outils de contrôle qualité? Examinons les tests Specflow qui peuvent être écrits en langage humain.

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 

Ce test se compose de trois parties standard appelées configuration, action et vérification. Tout a l'air bien. Mais que se passe-t-il lorsque quelqu'un ajoute une étape supplémentaire à ce test?

 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 mémorisation est une opération courante dans la calculatrice pour écrire le nombre actuel dans la mémoire. Si nous exécutons ce test, il sera toujours vert. Ce n'est pas un bon test maintenant, car personne ne vérifie comment une nouvelle étape du test affecte l'ensemble du système.

Ce type de test peut apparaître à la suite d'une refonte importante ou de changements importants dans les termes de référence. Cela signifie que nous aurons tous les tests en vert, mais ils ne vérifient pas très bien les performances du système. Le test indiqué ci-dessus peut être fixé de deux manières: supprimez cette étape ajoutée "Et j'appuie sur mémoriser" ou ajoutez une étape supplémentaire à la fin du test pour vérifier l'état de la mémoire "La valeur stockée en mémoire est alors 120".

Plugin SpecFlowMaster


Ce plugin pour Specflow vous permet de trouver de tels tests et des lignes de tests suspectes. Comment ça marche? Pour chaque ligne de la fonction Specflow, elle génère un test spécial qui exécute le même test, mais sans cette ligne. Si l'exécution du test conduit à une erreur, c'est le comportement attendu et tout va bien ici. Si un tel test réussit, alors quelque chose ne va pas avec la ligne de test dans ce test et le système détermine cette ligne comme suspecte. C'est-à-dire le nouveau test généré sera rouge.

Des cas plus complexes pour des étapes ou des scénarios d'arrière-plan avec plusieurs ensembles de données sont également vérifiés. Pour les étapes de précondition, le plugin effectue tous les tests à partir du fichier, mais sans la ligne de test. Pour les tests avec des ensembles de données, le plugin génère l'exécution des tests pour tous les ensembles de données.

Notes techniques

  1. C #, VB
  2. SpecFlow 3.0 ou supérieur
  3. .NET Framework 4.7.1 ou version ultérieure, .NET Core 2.0 ou version ultérieure

Que doit-on faire à l'avenir?

  1. Prise en charge des attributs Avant et Après
  2. Plugins similaires pour Java et Node.js

Les références

  1. Le plugin peut être trouvé sur github
  2. Envoyez vos commentaires à arskiev@gmail.com

Source: https://habr.com/ru/post/fr473320/


All Articles