segunda-feira, 30 de março de 2015

Gherkin: Declarativo VS. Imperativo

Ao escrever testes de aceitação utilizando uma linguagem de negócio como o Gherkin; tendemos a escrever de forma imperativa. Ou seja, definindo explicitamente os elementos da interface (UI) com os quais o usuário deverá interagir.
Por exemplo, definir exatamente quais botões ou quais elementos de um formulário devem ser clicados ou preenchidos, fará com que seu Gherkin tenha que ser reescrito caso a interface se altere.

Veja os exemplos abaixo.

Modo imperativo:

Funcionalidade: Receber email ao preencher formulário de cadastro

    Dado que o usuário clicou em "Fazer novo cadastro"
    Quando preenche os campos "Nome", "E-mail", "Senha" 
    E clica no campo de "Aceito os termos do contrato"
    Então ele recebe um email confirmando seu novo cadastro

Modo declarativo para a mesma funcionalidade:

    Dado que o usuário deseja fazer um novo cadastro
    Quando preenche os campos obrigatórios
    E aceita os termos do contrato
    Então ele recebe um email confirmando seu novo cadastro


Devemos manter por padrão a forma declarativa, a intenção da linguagem Gherkin é explicitar casos de uso em linguagem de negócio. Detalhes da interface devem ser encapsulados por frameworks como PageObject e detalhes de navegação por frameworks como Capybara. Esse frameworks ficam para um próximo post...