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"
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));
}
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)