Testes Imperativos VS Declarativos


Índice

  1. Introdução
    1.1 Imperativo
    1.2 Declarativo
  1. Ferramentas
    2.1 Imperative
    2.2 Declarative
  1. Conclusão
  1. Agradecimentos
  1. Bibliografia


1. Introdução


1.1 Imperativo

Imperativo é quando você especifica o cenário utilizando etapas bastante descritivas, procurando por “response codes”, campos diferentes, valores do cabeçalho e parâmetros.

Exemplo de gherkin escrito no estilo imperativo:

    Given I visit "/login"
    When I enter "Bob" in the "user name" field
        And I enter "tester" in the "password" field
        And I press the "login" button
    Then I should see the "welcome" page


1.2 Declarativo

Declarativo é focado em um comportamento mais “end-to-end”, chamar serviços e esperar o que está no sistema e o que está no banco de dados.
Descrevendo em uma linguagem natural, em outras palavras, descrever o que fazer e não como fazer.

Exemplo de gherkin escrito no estilo declarativo:

    When "Bob" logs in


2. Ferramentas


2.1 Imperativo

Para um estilo imperativo um framework BDD não seria a melhor opção, nesse caso seria melhor utilizar os frameworks de teste de api abaixo:

  • Tavern (Utiliza pytest debaixo do capô).
  • Karate (Pode misturar automação de testes de api e UI).
  • Rest-Assured (Testa e valida serviços rest).


2.2 Declarativo

É preferível ser declarativo com as ferramentas abaixo:

  • Behave (Similar ao cucumber).
  • Radish (Mais amigável para testagem programática).
  • Lettuce (Similar ao cucumber, mas a comunidade não é mais tão ativa).
  • Pytest-bdd (Plugin para o pytest).


3. Conclusão

Qual deles é o melhor?

Depende.

Caso você queira fazer simples “requests” e “responses” individuais validando se os dados foram salvos no banco de dados em um teste mais “data-driven”, ser imperativo é melhor porque ele costuma ser muito programático e de baixo nível.

Caso você queira fazer testes de api em um estilo declarativo você deveria escrever os cenários em um comportamento mais “end-to-end”.


4. Agradecimentos


5. Bibliografia

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *