In rete ci sono molti articoli su come utilizzare SpecFlow e come configurare TFS per eseguire test, ma non ce n'è nessuno che contenga tutti gli aspetti. In questo articolo parlerò di come rendere l'esecuzione e la modifica degli scenari SpecFlow comoda per tutti.
Di seguito scoprirai come ottenere:
- Esecuzione dei test da TFS
- Collegamento automatico degli scenari ai test case in TFS
- Contenuto sempre aggiornato dei test case in TFS
- Possibilità di modificare gli scenari direttamente nel sistema di controllo versione dagli tester

Contesto
Ci siamo posti l'obiettivo di automatizzare il test dell'applicazione utilizzando l'approccio BDD. Poiché il sistema di task tracking principale nella nostra azienda è TFS, ho immaginato che i passaggi dello scenario SpecFlow siano i passaggi dei test case in TFS e che l'esecuzione dei test avvenga dai piani di test. Di seguito ti spiegherò come ho realizzato tutto ciò.
Cosa ci servirà:
- Progetto con test su SpecFlow
- Azure DevOps Server (conosciuto anche come Team Foundation Server)
- Strumento per sincronizzare gli scenari SpecFlow con i test case in TFS
Impostazione
1. Creazione della build del progetto con i test
Qui è tutto semplice, build e pubblicazione degli artefatti. Maggiori dettagli sul terzo task più avanti.

2. Creazione di un rilascio per eseguire i test
Creiamo un rilascio con un'attività — Visual Studio Test

In questo caso, l'attività è impostata per eseguire i test manualmente dal piano di test.

3. Sincronizzazione dei test case
Sappiamo che Visual Studio consente di collegare i metodi di test ai test case in TFS ed eseguirli dai piani di test. Per non doverlo fare manualmente e per sincronizzare il contenuto degli scenari, ho scritto una semplice applicazione console. . Il principio è semplice: analizziamo il file feature e, tramite l'API TFS, aggiorniamo i test case.
Come utilizzare FeatureSync
Aggiungiamo namespace e locale nell'intestazione del file feature:
#language:en
@Namespace:Application.Autotests
Feature: Log to application*il namespace deve corrispondere al nome del file .dll in cui si trovano i metodi di test
Creiamo test case vuoti in TFS e aggiungiamo i tag con i loro id agli scenari:

@2124573 @positive
Scenario: Autenticazione riuscita
Given sono nella pagina di autorizzazione
E inserisco:
| Login | Password |
| utente | pass |
When premo il pulsante Login
Then il browser reindirizza alla homepageEseguiamo FeatureSync:
FeatureSync.exe -f C:FolderWithFeatures -s https://tfs.server.com/collection -t 6ppjfdysk-your-tfs-token-2d7sjwfbj7rzbaNel nostro caso, l'esecuzione avviene dopo la build del progetto con i test:

Risultato della sincronizzazione
I passaggi dello scenario SpecFlow sono stati sincronizzati e lo stato Automation è stato assegnato.


4. Configurazione del piano di test
Creiamo un piano di test, aggiungiamo i nostri casi automatizzati, nelle impostazioni scegliamo il build e la release


5. Esecuzione dei test
Selezioniamo il test necessario nel piano di test e lo avviamo.

Conclusione
Vantaggi di questa configurazione:
- qualsiasi tester può aprire il file feature nella web form di controllo versione, modificarlo e le modifiche avranno effetto immediatamente dopo il build
- è possibile eseguire i test in qualsiasi momento singolarmente
- modello di test trasparente — sappiamo sempre cosa sta facendo il test che abbiamo avviato.
Fonte: habr.com

