In rete ci sono molti articoli su come utilizzare SpecFlow, su come configurare TFS per eseguire test, ma non ce n'è nemmeno uno che tratti tutti gli aspetti. In questo articolo spiegherò come rendere l'esecuzione e la modifica degli scenari SpecFlow comodi per tutti.
Nel seguito scoprirete come ottenere:
- Esecuzione dei test da TFS
- Collegamento automatico degli scenari ai test case in TFS
- Contenuti sempre aggiornati dei test case in TFS
- Possibilità di modificare gli scenari direttamente nel sistema di controllo versione da parte dei tester

Antefatti
Ci siamo posti l'obiettivo di automatizzare il test dell'applicazione utilizzando l'approccio BDD. Poiché il sistema di task tracking della nostra azienda è TFS, nella mia mente si è formata l'immagine in cui i passaggi dello scenario SpecFlow sono i passaggi dei test case in TFS, e l'esecuzione dei test avviene dai piani di test. Di seguito spiegherò come ho realizzato ciò.
Cosa ci serve:
- Progetto con test su SpecFlow
- Azure DevOps Server (noto anche come Team Foundation Server)
- Strumento per sincronizzare gli scenari SpecFlow con i test case in TFS
Configurazione
1. Creazione della build del progetto con test
Qui è tutto semplice, build e pubblicazione degli artefatti. Di seguito maggiori dettagli sul terzo task.

2. Creazione di un rilascio per eseguire test
Creiamo un rilascio con un task - Visual Studio Test

In questo caso, il task è configurato per eseguire 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 evitare di farlo manualmente e per sincronizzare i contenuti degli scenari, ho scritto una semplice applicazione console . Il principio è semplice: analizziamo il file feature e, con l'aiuto dell'API TFS, aggiorniamo i test case.
Come utilizzare FeatureSync
Aggiungiamo il namespace e la 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 sono contenuti i metodi di test
Creiamo test case vuoti in TFS e aggiungiamo i tag con i loro id agli scenari:

@2124573 @positivi
Scenario: Autorizzazione riuscita
Given mi trovo sulla pagina di autorizzazione
And inserisco:
| Login | Password |
| utente | password |
When premo il pulsante di accesso
Then il browser reindirizza alla pagina principaleEseguiamo FeatureSync:
FeatureSync.exe -f C:CartellaConFeatures -s https://tfs.server.com/collection -t 6ppjfdysk-il-tuo-token-tfs-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 di Automazione è stato impostato


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


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

Conclusione
Vantaggi di questa configurazione:
- qualsiasi tester può aprire il file feature nell'interfaccia web di controllo versioni, modificarlo e le modifiche entreranno in vigore immediatamente dopo la 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

