DEV Community

Rodolfo Marriel
Rodolfo Marriel

Posted on

2 1

Introdução ao cucumber

O Cucumber é uma ferramenta de teste de software que permite escrever cenários de teste em linguagem natural e, em seguida, verificar se o sistema está comportando-se de acordo com esses cenários. Esses cenários são escritos em um formato chamado Gherkin, que é uma linguagem específica para descrever cenários de teste. O Cucumber é amplamente utilizado em projetos de teste de aceitação, pois permite que os desenvolvedores, gerentes de projeto e outros partes interessadas escrevam cenários de teste de maneira clara e concisa, sem a necessidade de conhecimento técnico.

Existem anotações pré definidas que são utilizados na hora de especificar cenários de teste: Given, When, Then, And, But. As anotações permitem que o compilador saiba o que deve ser feito na execução. Para ilustrar como o Cucumber funciona, vamos considerar um exemplo de um sistema de gerenciamento de livros. O Gherkin para este cenário poderia ser escrito da seguinte maneira:

Scenario: Request a book by id
    Given set book id for search 1
    When find a book by id
    Then the request status for a book id mut return 200 HTTP status
    And the request must return a valid book
    And for book 1 title must be "Amsterdam" and author "Ian McEwan"
Enter fullscreen mode Exit fullscreen mode

Este cenário descreve o comportamento esperado do sistema quando um livro é pesquisado. O Cucumber lê esse cenário e, em seguida, chama o código para verificar se o sistema está se comportando de acordo com ele. Se o sistema não estiver se comportando de acordo com o cenário, o Cucumber apresentará um erro.

Para implementar este cenário de teste, seria necessário escrever código que verifique se o livro pesquisado realmente retornou como esperado. Um exemplo de código em Java seria:

@Given("set book id for search {long}")
public void setBookIdForSearch(Long id) {
    this.bookId = id;
}

@When("find a book by id")
public void findABookById() {
    RestTemplate restTemplate = new RestTemplate();
    ResponseEntity<Book> forEntity = restTemplate.getForEntity(format(ENDPOINT, 1L), Book.class);
    bookResponse = forEntity.getBody();
    httpStatusResponse = forEntity.getStatusCode();
}

@Then("the request status for a book id mut return {int} HTTP status")
public void theRequestStatusForABookIdMutReturnHTTPStatus(int statusCode) {
    assertThat(httpStatusResponse.value(), equalTo(statusCode));
}

@And("the request must return a valid book")
public void theRequestMustReturnAValidBook() {
    assertNotNull(bookResponse);
    assertNotNull(bookResponse.getId());
    assertNotNull(bookResponse.getTitle());
    assertNotNull(bookResponse.getAuthor());
}

@And("for book {long} title must be {string} and author {string}")
public void forBookTitleMustBeAndAuthor(Long id, String title, String author) {
    assertThat(bookResponse.getId(), equalTo(id));
    assertThat(bookResponse.getTitle(), equalTo(title));
    assertThat(bookResponse.getAuthor(), equalTo(author));
}
Enter fullscreen mode Exit fullscreen mode

Este código implementa cada uma das etapas do cenário de teste em Gherkin.

Um dos principais benefícios do Cucumber é que ele permite aos stakeholders escreverem cenários de teste sem conhecimento técnico, o que facilita a comunicação e a colaboração entre os membros do time. Além disso, o Cucumber é amplamente compatível com diversas linguagens de programação, o que significa que pode ser utilizado em praticamente qualquer projeto de software.

Outro benefício do Cucumber é que ele permite que os cenários de teste sejam reutilizados. Isso significa que, uma vez que um cenário de teste foi escrito e implementado, ele pode ser facilmente reutilizado em diferentes projetos ou até mesmo em projetos futuros. Isso pode economizar muito tempo e esforço ao longo do tempo.

Página documentação do cucumber: https://cucumber.io/

Código fonte: https://github.com/rodolfomarriel/cucumberexample

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up