10. Contract and E2E testing
API
API
API
API
API
API
API
API
Contrato
&
E2E
Garante a
comunicação
entre APIs
11. Contract and E2E testing
API
API
API
API
API
API
API
API
Contrato
&
E2E
Garante que as
APIs podem ser
utilizadas em
conjunto
12. Como serão os projetos de teste?
Modelo 1
Um projeto de teste para todos os microserviço
BACKEND
TEST
PROEJTO
TESTE
13. Como serão os projetos de teste?
Modelo 2
Um projeto de teste para cada microserviço
BACKEND
TEST TEST TEST
PROEJTO
TESTE
14. Como serão os projetos de teste?
Modelo 3
Um projeto de teste para cada microserviço
dividido em projetos de cliente e testes
BACKEND
PROEJTO
TESTE
TEST TEST TEST
CLIENT CLIENT CLIENT
16. Rest-Assured
http://rest-assured.io
DSL Java para simplificar a execução de testes para serviços REST
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
public class RestAssuredExampleTest {
@Test
public void welcome() {
given().
param(”nome", "Elias").
when().
post("/registro").
then().
body(”mensagem", is(”Oi Elias"));
}
}
17. import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
public class RestAssuredExampleTest {
@Test
public void welcome() {
given().
param(”nome", "Elias").
when().
post("/registro").
then().
body(”mensagem", is(”Oi Elias"));
}
}
Rest-Assured
http://rest-assured.io
importar as bibliotecas
DSL Java para simplificar a execução de testes para serviços REST
18. import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
public class RestAssuredExampleTest {
@Test
public void welcome() {
given().
param(”nome", "Elias").
when().
post("/registro").
then().
body(”mensagem", is(”Oi Elias"));
}
}
Rest-Assured
http://rest-assured.io
pre-condição do
request
DSL Java para simplificar a execução de testes para serviços REST
19. import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
public class RestAssuredExampleTest {
@Test
public void welcome() {
given().
param(”nome", "Elias").
when().
post("/registro").
then().
body(”mensagem", is(”Oi Elias"));
}
}
Rest-Assured
http://rest-assured.io
ação (request)
DSL Java para simplificar a execução de testes para serviços REST
20. import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
public class RestAssuredExampleTest {
@Test
public void welcome() {
given().
param(”nome", "Elias").
when().
post("/registro").
then().
body(”mensagem", is(”Oi Elias"));
}
}
Rest-Assured
http://rest-assured.io
asserção do resultado
response body
DSL Java para simplificar a execução de testes para serviços REST
26. Modelo 1
Você criará apenas um projeto de teste para todas as APIs
BACKEND
TEST
PROEJTO
TESTE
27. Modelo 1
Ganhos
● Centralização do código em um único projeto
● Rapidez e agilidade na criação de testes e resolução de problemas
Problemas
● Mudanças constantes por diversas pessoas podem gerar efeitos
colaterais nos resultados
30. Modelo 2
Um projeto de teste para cada microserviço onde as interações
com o(s) endpoint(s) estarão no projeto de teste.
BACKEND
TEST TEST TEST
PROEJTO
TESTE
31. Modelo 2
Ganhos
● Descentralização organizada dos projetos de teste para com uma API
● Isolamento entre APIs
Problemas
● Possíveis duplicidades de código
34. Modelo 3
Um projeto de teste para cada microserviço dividido em um
projeto cliente e um projeto de teste.
BACKEND
PROEJTO
TESTE
TEST TEST TEST
CLIENT CLIENT CLIENT
35. Modelo 3
Projeto Cliente
Colocaremos aqui toda a lógica necessária para efetuar as
requisições como:
○ Retorno de exceções
○ Objetos de Transporte
○ Chamada das requisições
○ Customizações para validações
○ Configurações de apontamento (URI, base path, porta)
36. Modelo 3
Projeto Teste
Colocaremos aqui todos os métodos de utilização da API que
criamos no projeto cliente, criando a lógica de testes e
validando os resultados.
Em resumo, todos os testes serão criados aqui
37. Modelo 3
Ganhos
● Maior gestão de versões (novas funcionalidades, breaking changes)
● Fácil utilização por outros times
○ eles só precisam consumir o cliente e criar seus testes
Problemas
● Aumento de tempo, comparado com os modelos anteriores
40. Próximos passos
Aplicação de estratégias e Design Patters para diminuir a manutenção e
acelerar o desenvolvimento dos testes
Gerais Tipo Biblioteca?
Builder Design Pattern Lombok
Logging Estratégia Log4J
Base Test Testing Pattern
Data Driven Testing Pattern TestNG | JUnit
Test Data Factory Testing Pattern
Properties Strategy Estratégia Owner
Reporting Estratégia Allure Report
RestAssured
Request Specification
Response Specification
Validatable response
Filters
Logging