Na internet, há muitos artigos sobre como usar o SpecFlow e configurar o TFS para rodar testes, mas não existe nenhum que aborde todos os aspectos. Neste artigo, explicarei como facilitar a execução e edição de cenários do SpecFlow para todos.
Abaixo, você descobrirá como obter:
- Execução de testes a partir do TFS
- Linkagem automática de cenários aos casos de teste no TFS
- Conteúdo sempre atualizado dos casos de teste no TFS
- Capacidade de editar cenários diretamente no sistema de controle de versão pelos testadores

Antecedentes
Nos deparamos com a tarefa de automatizar o teste do aplicativo usando a abordagem BDD. Como o sistema principal de rastreamento de tarefas em nossa empresa é o TFS, visualizei que os passos do cenário do SpecFlow correspondem aos passos dos casos de teste no TFS, e a execução dos testes ocorre a partir dos planos de teste. A seguir, explicarei como implementei isso.
O que precisamos:
- Projeto com testes em SpecFlow
- Azure DevOps Server (também conhecido como Team Foundation Server)
- Ferramenta para sincronização de cenários do SpecFlow com casos de teste no TFS
Configuração
1. Criação de build do projeto com testes
Aqui é simples, build e publicação de artefatos. Falarei sobre a terceira tarefa com mais detalhes a seguir.

2. Criação de release para execução de testes
Criamos um release com uma tarefa — Visual Studio Test

Neste caso, a tarefa está configurada para executar testes manualmente a partir do plano de teste

3. Sincronização de casos de teste
Sabemos que o Visual Studio permite vincular métodos de teste a casos de teste no TFS e executá-los a partir dos planos de teste. Para não fazer isso manualmente, e também para sincronizar o conteúdo dos cenários, escrevi um simples aplicativo console . O princípio é simples — fazemos o parsing do arquivo feature e, com a ajuda da API do TFS, atualizamos os casos de teste.
Como usar o FeatureSync
Adicione o namespace e a localidade no cabeçalho do arquivo feature:
#language:en
@Namespace:Application.Autotests
Feature: Log to application*o namespace deve coincidir com o nome do arquivo .dll que contém os métodos de teste
Criamos casos de teste vazios no TFS e adicionamos tags com seus ids aos cenários:

@2124573 @positivo
Cenário: Autorização bem-sucedida
Dado que estou na página de autorização
E eu digito:
| Login | Senha |
| usuário | senha |
Quando eu pressiono o botão Login
Então o navegador redireciona para a página inicialExecutamos o FeatureSync:
FeatureSync.exe -f C:FolderWithFeatures -s https://tfs.server.com/collection -t 6ppjfdysk-seu-token-tfs-2d7sjwfbj7rzbaNo nosso caso, a execução ocorre após a build do projeto com testes:

Resultado da sincronização
Os passos do cenário do SpecFlow foram sincronizados e o status de automação foi atualizado


4. Configuração do plano de teste
Criamos um plano de teste, adicionamos nossos casos de teste automatizados, nas configurações escolhemos a versão e a build.


5. Execução dos testes
Selecionamos o teste necessário no plano de teste e o executamos.

Conclusão
Vantagens dessa configuração:
- qualquer testador pode abrir um arquivo de funcionalidade na interface web de controle de versões, editá-lo e as alterações entrarão em vigor imediatamente após a build.
- é possível executar os testes a qualquer momento, individualmente.
- modelo de teste transparente — sabemos sempre o que o teste que executamos está fazendo.
Fonte: habr.com

