Specflow – Parte 01

Olá,

Conforme mencionado anteriormente, uma das minhas metas de estudo é estudar o Specflow… tá certo que já existe uma documentação muito bem explicada (que é o que estou estudando inclusive), mas vou tentar explicar desse meu jeito perdido e em português.

O specflow já faz parte da minha rotina profissional, mas mesmo assim preciso aprimorar (MUITO) meu conhecimento sobre o mesmo….e como me ensinaram uma vez “Se você quer ser bom em alguma coisa, nunca deixe de treinar o básico disso”, então vamos lá!

Primeiro ponto, o Specflow é uma ferramenta dentro do visual studio e uma forma de escrever os testes (automatizados) de uma forma que o usuário possa entender , então cria-se um cenário que seja simples para o usuário entender, e simples de ser utilizado na hora de criar o teste, o próprio specflow dá um exemplo bem bacana:

Feature: Calculadora

Para evitar erros bobos

Como um idiota em matemática

Eu quero que ser informado sobre a soma de dois números

@MinhaTag

Cenário: Somar dois números

Dado que  eu adicionei o valor 50 na calculadora

E eu também adicionei o valor 70 na calculadora

Quando eu pressionar adicionar

Então o resultado  na tela deve ser 120″

Screenshot_1
Insira uma legenda

Bem, vou continuar dando os exemplos em português, mas caso você ainda não saiba inglês, aconselho que faça comece a estudar também…ajuda e MUITO na nossa vida!

Depois de criar o cenário simplificado para que o usuário entenda, é hora de escrever de um jeito que o computador entenda, então nós clicamos com o botão direito na feature e pedimos para o programa gerar as definições dos passos( Dado que/quando/então), vamos selecionar os passos, e dar um nome para a classe (nesse caso um “Passos da calculadora”), quando fazemos isso  o próprio sistema já cria um esqueleto da classe no projeto, incluindo cada um dos passos selecionados.

Screenshot_2
Fica com essa cara aqui 🙂

Se você reparar bem, o sistema copiou os steps dentro de uma classe, e o “E” do segundo step virou um “Dado que”, o “E” assume o formato do cenário anterior pois é um complemento dele, não sou a pessoa mais indicada para falar de programação, mas sobre o código exbido…funciona mais ou menos assim:

[Dado que (@”eu adicionei o valor (.*) na calculadora”)]

public void DadoQueEuAcesseiACalculadora(int p0)

{

ContextodoCenário.Atualmente.Pendente();

}

  • As chaves {}  servem para mostrar que dentro delas temos o código referente a linha superior
  • As aspas mostram que o texto entre elas é uma string (texto)
  • O (.*) mostra que esse espaço não é uma string (Apesar de estar entre aspas) e será preenchido com uma variável diferente
  • O int é a variável que se refere ao (.*), avisando para o campo, que ele será preenchido por um número inteiro

Mas não vou me aventurar mais que isso em explicar programação para vocês, apenas para uma contextualizada para aqueles que também estão começando…. De qualquer forma, depois de criar os cenários e códigos você pode fazer a build e rodar o teste, que vai rolar automaticamente na tela para você acompanhar, se o sistema não se portar da forma esperada o teste vai falhar, e avisar em qual passo falhou…. Digamos que se na hora em que ele tentar adicionar o número 50 ele não encontrar o campo para digitar o valor, logo ele vai falhar já que não conseguiu concluir a ação esperada.

Bem, agora sobre o que nós fizemos anteriormente, os steps vão ficar em uma pasta separada dos cenários, mas precisamos das duas implementadas, e pro teste funcionar também precisamos que eles estejam no mesmo projeto em que a aplicação que vamos testar (não adianta pedir pra rodar a aplicação da calculadora se o teste não consegue acessar a aplicação né? rs)

 

Saindo um pouco da documentação, e indo para algumas explicações gerais:

  • “Sou obrigado a usar Given/When/Then/And?”

Sim, são comandos que o specflow entende e permite a criação do código, mas notem que o AND pode ser usado junto com qualquer um dos outros comandos,  e que o cenário não precisa ter essa quantidade exatas de linhas, isso é algo que vai variar de acordo com a necessidade do cenário

  • Mas como assim? Eu posso variar o cenário??”

Sim, isso é algo que varia muito de acordo com a necessidade do cliente/projeto, mesmo que a função seja uma só e o teste automatizado vá fazer o mesmo fluxo, é possível criar detalhes diferentes para a situação…. vou dar um exemplo

Cenário – preencher e salvar um formulário

1. Dado que eu abri o fomulário

E preenchi o mesmo com dados válidos

Quando eu salvar o mesmo

Então ele irá ser armazenado no sistema

E será exibida uma mensagem de sucesso

2. Dado que eu abri o fomulário

E preenchi o campo nome

E preenchi o campo sobrenome

E preenchi o campo idade

Quando eu salvar o mesmo

Então ele irá ser armazenado no sistema

E será exibida uma mensagem de sucesso

É um exemplo  bem bobo, mas que mostra que o mesmo teste pode ser descrito de formas diferentes 🙂

Certo, por hoje isso é o bastante né pessoal? Vou continuar com esses posts ao longo do tempo (escrever os posts é uma ótima forma de estudar rs) e espero que possa vir a ajudar mais gente 🙂
Abraços, e até logo!

 

5 comentários sobre “Specflow – Parte 01

  1. Ola! Forgive me writing in English, as my Portuguese is terrible. I just wanted to thank you for your work and making a tutorial that is accessible to the Portuguese-speaking SpecFlow community. I will add your article to the list of resources on the SpecFlow website.

    Thank you too for your kind words about the SpecFlow Getting Started Tutorial.

    Curtir

    1. Hello Stephen, no problems for writing in english 🙂
      And I can make those posts, just because there is the material in english, so I’m the one who have to say thanks 🙂

      It’s a honor to have my post added on the list of resources! I will do my best to translate the Getting Started Tutorial!

      Thanks again

      Curtir

  2. Ola Diego, estou testando a ferramenta SoapUi para automatizar testes nos serviços que consumo, porem ao criar o novo projeto o e informar o caminho do serviço os métodos retornados não apresentam o arquivo Request, você já passou por essa situação? Consegue me dar uma ajuda de como resolver para criar meus casos de teste para os métodos, fico no aguardo caso possa me dar uma ajuda serei muito grato.

    Curtir

Deixe um comentário