Il existe de nombreux articles sur l'utilisation de SpecFlow, sur la configuration de TFS pour exécuter des tests, mais aucun ne couvre tous les aspects. Dans cet article, je vais expliquer comment rendre le lancement et l'édition des scénarios SpecFlow accessibles à tous.
Sous ce titre, vous découvrirez comment obtenir :
- Lancement des tests depuis TFS
- Lien automatique des scénarios aux cas de test dans TFS
- Contenu toujours à jour des cas de test dans TFS
- Possibilité d'éditer les scénarios directement dans le système de contrôle de version par les testeurs

Contexte
Nous avons pour mission d'automatiser les tests de l'application en utilisant l'approche BDD. Puisque notre système principal de suivi des tâches dans notre entreprise est TFS, j'ai imaginé une situation où les étapes des scénarios SpecFlow correspondent aux étapes des cas de test dans TFS, et où les tests sont exécutés à partir des plans de test. Voici comment j'ai réalisé cela.
Ce dont nous aurons besoin :
- Un projet avec des tests sur SpecFlow
- Azure DevOps Server (alias Team Foundation Server)
- Un outil pour synchroniser les scénarios SpecFlow avec les cas de test dans TFS
Configuration
1. Création d'une build du projet avec des tests
Ici, tout est simple, création et publication des artefacts. Je détaillerai la troisième tâche plus loin.

2. Création d'une release pour exécuter les tests
Nous créons une release avec une seule tâche — Visual Studio Test

Dans ce cas, la tâche est configurée pour lancer les tests manuellement depuis le plan de test

3. Synchronisation des cas de test
Nous savons que Visual Studio permet de lier les méthodes de test aux cas de test dans TFS et de les exécuter à partir des plans de test. Afin de ne pas le faire manuellement, et pour synchroniser le contenu des scénarios, j'ai écrit une simple application console . Le principe est simple : nous analysons le fichier feature, et grâce à l'API TFS, nous mettons à jour les cas de test.
Comment utiliser FeatureSync
Ajoutez le namespace et la locale dans l'en-tête du fichier feature :
#language:en
@Namespace:Application.Autotests
Feature: Log to application*le namespace doit correspondre au nom du fichier .dll contenant les méthodes de test
Nous créons des cas de test vides dans TFS et ajoutons des balises avec leurs id aux scénarios :

@2124573 @positive
Scenario: Autorisation réussie
Given I on authorization page
And I enter:
| Login | Password |
| user | pass |
When I press Login button
Then Browser redirect on Home pageLançons FeatureSync :
FeatureSync.exe -f C:FolderWithFeatures -s https://tfs.server.com/collection -t 6ppjfdysk-your-tfs-token-2d7sjwfbj7rzbaDans notre cas, le lancement se fait après la construction du projet avec des tests :

Résultat de la synchronisation
Les étapes du scénario SpecFlow ont été synchronisées et le statut Automation a été défini.


4. Configuration du plan de test
Nous créons un plan de test, ajoutons nos cas automatisés, sélectionnons la version et la build dans les paramètres.


5. Lancement des tests
Nous choisissons le test nécessaire dans le plan de test et le lançons.

Conclusion
Avantages de cette configuration :
- tout testeur peut ouvrir le fichier feature dans l'interface web de gestion des versions, le modifier et les modifications prendront effet immédiatement après la build.
- il est possible de lancer les tests séparément à tout moment.
- modèle de test transparent — nous savons toujours ce que fait le test que nous avons lancé.
Source : habr.com

