Criando uma arquitetura para seus testes de API com RestAssured

Elias Nogueira
Elias NogueiraLead Software Engineer at Waes
Criando uma arquitetura para seus
testes de API com RestAssured
@eliasnogueira
Conceituação
Pirâmide de Testes Original
UI
Tests
Service Tests
Unit Tests
mais
isolamento
mais
integração
rápido
lento
Pirâmide de Testes IdealPirâmide de Testes Ideal
FRONTENDBACKEND
API Gateway
testes funcionais e de
aceitação para o frontend
web e/ou mobile
testes unitários e integração
no backend
testes na api de
consumo
APIs Individuais
API
API
API
API
API
API
API
API
APIs Individuais
API
API
API
API
API
API
API
API
Assumimos que as
API já possuem
testes unitários
Testes
Unitários done!
Individual APIs
API
API
API
API
API
API
API
API
Precisamos testar
funcionalmente as
APIs em separado
Foco desta apresentação
Testes de Contrato e E2E
API
API
API
API
API
API
API
API
Contrato
&
E2E
Contract and E2E testing
API
API
API
API
API
API
API
API
Contrato
&
E2E
Garante a
comunicação
entre APIs
Contract and E2E testing
API
API
API
API
API
API
API
API
Contrato
&
E2E
Garante que as
APIs podem ser
utilizadas em
conjunto
Como serão os projetos de teste?
Modelo 1
Um projeto de teste para todos os microserviço
BACKEND
TEST
PROEJTO
TESTE
Como serão os projetos de teste?
Modelo 2
Um projeto de teste para cada microserviço
BACKEND
TEST TEST TEST
PROEJTO
TESTE
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
Recapitulando
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"));
}
}
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
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
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
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
SUT – System Under Test
SUT – System Under Test | Front-end
Informar um CPF:
• válido
• que não esteja com restrição
• não cadastrado
SUT – System Under Test | Front-end
Efetuar o cadastro
respeitando as restrições
SUT – System Under Test | Front-end
Efetuar operações de CRUD
Modelo 1
Modelo 1
Você criará apenas um projeto de teste para todas as APIs
BACKEND
TEST
PROEJTO
TESTE
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
Criando uma arquitetura para seus testes de API com RestAssured
Modelo 2
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
Modelo 2
Ganhos
● Descentralização organizada dos projetos de teste para com uma API
● Isolamento entre APIs
Problemas
● Possíveis duplicidades de código
Criando uma arquitetura para seus testes de API com RestAssured
Modelo 3
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
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)
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
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
Criando uma arquitetura para seus testes de API com RestAssured
Próximos passos
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
Gratuito!
SCAN ME
Obrigado!
@eliasnogueira
github.com/eliasnogueira
SCAN ME
1 of 42

Recommended

Automação e virtualização de serviços by
Automação e virtualização de serviçosAutomação e virtualização de serviços
Automação e virtualização de serviçosElias Nogueira
2.2K views53 slides
De a máxima cobertura nos seus testes de API by
De a máxima cobertura nos seus testes de APIDe a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de APIElias Nogueira
3.2K views37 slides
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p... by
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...Elias Nogueira
1.2K views13 slides
Automação de Teste para REST, Web e Mobile by
Automação de Teste para REST, Web e MobileAutomação de Teste para REST, Web e Mobile
Automação de Teste para REST, Web e MobileElias Nogueira
3.6K views26 slides
API Testing following the Test Pyramid by
API Testing following the Test PyramidAPI Testing following the Test Pyramid
API Testing following the Test PyramidElias Nogueira
1.7K views51 slides
TDC2015: Testes em APIs REST com Rest-Assured by
TDC2015: Testes em APIs REST com Rest-AssuredTDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredJúlio de Lima
1.3K views27 slides

More Related Content

What's hot

An Introduction To Automated API Testing by
An Introduction To Automated API TestingAn Introduction To Automated API Testing
An Introduction To Automated API TestingSauce Labs
4.1K views23 slides
Como criar testes rápidos e robustos com Cypress by
Como criar testes rápidos e robustos com CypressComo criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressWalmyr Lima e Silva Filho
885 views24 slides
Agile testing by
Agile testing Agile testing
Agile testing Rodrigo Oliveira, Msc, PMP
706 views89 slides
Robot Framework - principais características by
Robot Framework - principais característicasRobot Framework - principais características
Robot Framework - principais característicasalinebiath
1.3K views14 slides
Pirâmide de testes mobile, dividindo seus testes de maneira efetiva by
Pirâmide de testes mobile, dividindo seus testes de maneira efetivaPirâmide de testes mobile, dividindo seus testes de maneira efetiva
Pirâmide de testes mobile, dividindo seus testes de maneira efetivaFrederico Augusto Do Carmo Moreira
891 views29 slides
Testes E2E em Cypress com JS by
Testes E2E em Cypress com JSTestes E2E em Cypress com JS
Testes E2E em Cypress com JSNàtali Cabral
240 views22 slides

What's hot(20)

An Introduction To Automated API Testing by Sauce Labs
An Introduction To Automated API TestingAn Introduction To Automated API Testing
An Introduction To Automated API Testing
Sauce Labs4.1K views
Robot Framework - principais características by alinebiath
Robot Framework - principais característicasRobot Framework - principais características
Robot Framework - principais características
alinebiath1.3K views
Testes E2E em Cypress com JS by Nàtali Cabral
Testes E2E em Cypress com JSTestes E2E em Cypress com JS
Testes E2E em Cypress com JS
Nàtali Cabral240 views
API Test Automation Using Karate (Anil Kumar Moka) by Peter Thomas
API Test Automation Using Karate (Anil Kumar Moka)API Test Automation Using Karate (Anil Kumar Moka)
API Test Automation Using Karate (Anil Kumar Moka)
Peter Thomas5.4K views
Driving Pipeline Automation With Newman and the Postman API by Postman
Driving Pipeline Automation With Newman and the Postman APIDriving Pipeline Automation With Newman and the Postman API
Driving Pipeline Automation With Newman and the Postman API
Postman3.2K views
Automação de testes de API utilizando Postman by Lucas Amaral
Automação de testes de API utilizando PostmanAutomação de testes de API utilizando Postman
Automação de testes de API utilizando Postman
Lucas Amaral3.7K views
Automation testing introduction for FujiNet by Hai Tran Son
Automation testing introduction for FujiNetAutomation testing introduction for FujiNet
Automation testing introduction for FujiNet
Hai Tran Son1.3K views
API Testing. Streamline your testing process. by Andrey Oleynik
API Testing. Streamline your testing process.API Testing. Streamline your testing process.
API Testing. Streamline your testing process.
Andrey Oleynik795 views
Todas as abordagens de testes dentro do ágil by Elias Nogueira
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
Elias Nogueira5.7K views
Mocking in Java with Mockito by Richard Paul
Mocking in Java with MockitoMocking in Java with Mockito
Mocking in Java with Mockito
Richard Paul14.3K views

Similar to Criando uma arquitetura para seus testes de API com RestAssured

Desafio Rest API by
Desafio Rest APIDesafio Rest API
Desafio Rest APIReinaldo Junior
738 views16 slides
Meet up teste api htt-party cucumber by
Meet up   teste api htt-party cucumberMeet up   teste api htt-party cucumber
Meet up teste api htt-party cucumberRafael Berçam
880 views60 slides
Construindo APIs com Amazon API Gateway e AWS Lambda by
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaAmazon Web Services LATAM
1.6K views40 slides
Tipos de automação de teste by
Tipos de automação de testeTipos de automação de teste
Tipos de automação de testeMarcos Pessoa
1.4K views10 slides
CDI Extensions e DeltaSpike by
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeRafael Benevides
1.3K views37 slides
Paralelize seus testes web e mobile para ter feedbacks mais rápidos by
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosElias Nogueira
704 views49 slides

Similar to Criando uma arquitetura para seus testes de API com RestAssured(20)

Meet up teste api htt-party cucumber by Rafael Berçam
Meet up   teste api htt-party cucumberMeet up   teste api htt-party cucumber
Meet up teste api htt-party cucumber
Rafael Berçam880 views
Tipos de automação de teste by Marcos Pessoa
Tipos de automação de testeTipos de automação de teste
Tipos de automação de teste
Marcos Pessoa1.4K views
Paralelize seus testes web e mobile para ter feedbacks mais rápidos by Elias Nogueira
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Elias Nogueira704 views
JavaEE 7, na era do cloud computing by Eder Magalhães
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computing
Eder Magalhães1.1K views
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis... by GUTS-RS
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
GUTS-RS 2.4K views
Solucionando a Teoria do Caos com Cypress.io by Patrick Monteiro
Solucionando a Teoria do Caos com Cypress.ioSolucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.io
Patrick Monteiro178 views
[DevOps Carioca] Testes Automatizados by Samanta Cicilia
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados
Samanta Cicilia1.1K views
C# 6.0 - Novos Recursos (Agosto/2015) by Renato Groff
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)
Renato Groff2.2K views
Criando APIs com Node e TypeScript by Andre Baltieri
Criando APIs com Node e TypeScriptCriando APIs com Node e TypeScript
Criando APIs com Node e TypeScript
Andre Baltieri441 views
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor by Allyson Barros
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Allyson Barros9K views

More from Elias Nogueira

Usando containers com auto-escala de testes by
Usando containers com auto-escala de testesUsando containers com auto-escala de testes
Usando containers com auto-escala de testesElias Nogueira
1.1K views22 slides
Coach por Imersão - Buscando a excelência técnica com o time by
Coach por Imersão - Buscando a excelência técnica com o timeCoach por Imersão - Buscando a excelência técnica com o time
Coach por Imersão - Buscando a excelência técnica com o timeElias Nogueira
882 views22 slides
O Agile Coach pode (e muitas vezes deve) ser técnico by
O Agile Coach pode (e muitas vezes deve) ser técnicoO Agile Coach pode (e muitas vezes deve) ser técnico
O Agile Coach pode (e muitas vezes deve) ser técnicoElias Nogueira
714 views19 slides
Create an architecture for web test automation by
Create an architecture for web test automationCreate an architecture for web test automation
Create an architecture for web test automationElias Nogueira
1.3K views26 slides
Como 4 Agile Coaches trabalham em uma Transformação Ágil by
Como 4 Agile Coaches trabalham em uma Transformação Ágil Como 4 Agile Coaches trabalham em uma Transformação Ágil
Como 4 Agile Coaches trabalham em uma Transformação Ágil Elias Nogueira
810 views26 slides
Papel do QA na Transformação Ágil by
Papel do QA na Transformação ÁgilPapel do QA na Transformação Ágil
Papel do QA na Transformação ÁgilElias Nogueira
1.2K views23 slides

More from Elias Nogueira(20)

Usando containers com auto-escala de testes by Elias Nogueira
Usando containers com auto-escala de testesUsando containers com auto-escala de testes
Usando containers com auto-escala de testes
Elias Nogueira1.1K views
Coach por Imersão - Buscando a excelência técnica com o time by Elias Nogueira
Coach por Imersão - Buscando a excelência técnica com o timeCoach por Imersão - Buscando a excelência técnica com o time
Coach por Imersão - Buscando a excelência técnica com o time
Elias Nogueira882 views
O Agile Coach pode (e muitas vezes deve) ser técnico by Elias Nogueira
O Agile Coach pode (e muitas vezes deve) ser técnicoO Agile Coach pode (e muitas vezes deve) ser técnico
O Agile Coach pode (e muitas vezes deve) ser técnico
Elias Nogueira714 views
Create an architecture for web test automation by Elias Nogueira
Create an architecture for web test automationCreate an architecture for web test automation
Create an architecture for web test automation
Elias Nogueira1.3K views
Como 4 Agile Coaches trabalham em uma Transformação Ágil by Elias Nogueira
Como 4 Agile Coaches trabalham em uma Transformação Ágil Como 4 Agile Coaches trabalham em uma Transformação Ágil
Como 4 Agile Coaches trabalham em uma Transformação Ágil
Elias Nogueira810 views
Papel do QA na Transformação Ágil by Elias Nogueira
Papel do QA na Transformação ÁgilPapel do QA na Transformação Ágil
Papel do QA na Transformação Ágil
Elias Nogueira1.2K views
BDD não é automação de teste - Scrum Gathering by Elias Nogueira
BDD não é automação de teste - Scrum GatheringBDD não é automação de teste - Scrum Gathering
BDD não é automação de teste - Scrum Gathering
Elias Nogueira4.1K views
Como criar e executar testes paralelos web usando Selenium e containers by Elias Nogueira
Como criar e executar testes paralelos web usando Selenium e containersComo criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containers
Elias Nogueira3.5K views
Improve Yourself -- Learn the Skills, Join the Community - Tests by Elias Nogueira
Improve Yourself -- Learn the Skills, Join the Community - TestsImprove Yourself -- Learn the Skills, Join the Community - Tests
Improve Yourself -- Learn the Skills, Join the Community - Tests
Elias Nogueira376 views
BDD não é Automação de Testes by Elias Nogueira
BDD não é Automação de TestesBDD não é Automação de Testes
BDD não é Automação de Testes
Elias Nogueira5.3K views
Criando uma grid para execução de testes paralelo com Appium by Elias Nogueira
Criando uma grid para execução de testes paralelo com AppiumCriando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com Appium
Elias Nogueira1.4K views
Como ter sucesso ministrando uma palestra técnica by Elias Nogueira
Como ter sucesso ministrando uma palestra técnicaComo ter sucesso ministrando uma palestra técnica
Como ter sucesso ministrando uma palestra técnica
Elias Nogueira594 views
Quais são os steps de que deve conter na sua pipeline? by Elias Nogueira
Quais são os steps de que deve conter na sua pipeline?Quais são os steps de que deve conter na sua pipeline?
Quais são os steps de que deve conter na sua pipeline?
Elias Nogueira391 views
Testes em todos os niveis de planejamento by Elias Nogueira
Testes em todos os niveis de planejamentoTestes em todos os niveis de planejamento
Testes em todos os niveis de planejamento
Elias Nogueira644 views
Java Test Automation for REST, Web and Mobile by Elias Nogueira
Java Test Automation for REST, Web and MobileJava Test Automation for REST, Web and Mobile
Java Test Automation for REST, Web and Mobile
Elias Nogueira1.6K views
Trust Your Pipeline - Automatically Testing and End-to-End Java Application by Elias Nogueira
Trust Your Pipeline - Automatically Testing and End-to-End Java ApplicationTrust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java Application
Elias Nogueira972 views
Criando uma grid para execução de teste automatizado funcional e e2e by Elias Nogueira
Criando uma grid para execução de teste automatizado funcional e e2eCriando uma grid para execução de teste automatizado funcional e e2e
Criando uma grid para execução de teste automatizado funcional e e2e
Elias Nogueira816 views

Recently uploaded

DevFest2023-Pragmatismo da Internet das Coisas by
DevFest2023-Pragmatismo da Internet das CoisasDevFest2023-Pragmatismo da Internet das Coisas
DevFest2023-Pragmatismo da Internet das CoisasWalter Coan
36 views40 slides
ProxySQL no MySQL: Apenas um load balancer? by
ProxySQL no MySQL: Apenas um load balancer?ProxySQL no MySQL: Apenas um load balancer?
ProxySQL no MySQL: Apenas um load balancer?Roberto Garcia de Bem
6 views62 slides
MAPA - SAÚDE - FUNDAMENTOS DE FARMACOLOGIA - 54/2023 by
MAPA - SAÚDE - FUNDAMENTOS DE FARMACOLOGIA - 54/2023MAPA - SAÚDE - FUNDAMENTOS DE FARMACOLOGIA - 54/2023
MAPA - SAÚDE - FUNDAMENTOS DE FARMACOLOGIA - 54/2023AcademicaDlaUnicesum
6 views3 slides
Conheça agora o UiPath Autopilot™ para o Studio.pdf by
Conheça agora o UiPath Autopilot™ para o Studio.pdfConheça agora o UiPath Autopilot™ para o Studio.pdf
Conheça agora o UiPath Autopilot™ para o Studio.pdfBrunaCavalcanti29
14 views8 slides
Shift left DevOps Experience by
Shift left DevOps ExperienceShift left DevOps Experience
Shift left DevOps ExperienceWalter Coan
5 views19 slides
TechConnection 2023 Floripa Azure Container Apps by
TechConnection 2023 Floripa Azure Container AppsTechConnection 2023 Floripa Azure Container Apps
TechConnection 2023 Floripa Azure Container AppsWalter Coan
6 views14 slides

Recently uploaded(8)

DevFest2023-Pragmatismo da Internet das Coisas by Walter Coan
DevFest2023-Pragmatismo da Internet das CoisasDevFest2023-Pragmatismo da Internet das Coisas
DevFest2023-Pragmatismo da Internet das Coisas
Walter Coan36 views
Conheça agora o UiPath Autopilot™ para o Studio.pdf by BrunaCavalcanti29
Conheça agora o UiPath Autopilot™ para o Studio.pdfConheça agora o UiPath Autopilot™ para o Studio.pdf
Conheça agora o UiPath Autopilot™ para o Studio.pdf
Shift left DevOps Experience by Walter Coan
Shift left DevOps ExperienceShift left DevOps Experience
Shift left DevOps Experience
Walter Coan5 views
TechConnection 2023 Floripa Azure Container Apps by Walter Coan
TechConnection 2023 Floripa Azure Container AppsTechConnection 2023 Floripa Azure Container Apps
TechConnection 2023 Floripa Azure Container Apps
Walter Coan6 views

Criando uma arquitetura para seus testes de API com RestAssured

  • 1. Criando uma arquitetura para seus testes de API com RestAssured @eliasnogueira
  • 3. Pirâmide de Testes Original UI Tests Service Tests Unit Tests mais isolamento mais integração rápido lento
  • 4. Pirâmide de Testes IdealPirâmide de Testes Ideal
  • 5. FRONTENDBACKEND API Gateway testes funcionais e de aceitação para o frontend web e/ou mobile testes unitários e integração no backend testes na api de consumo
  • 7. APIs Individuais API API API API API API API API Assumimos que as API já possuem testes unitários Testes Unitários done!
  • 9. Testes de Contrato e E2E API API API API API API API API Contrato & E2E
  • 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
  • 21. SUT – System Under Test
  • 22. SUT – System Under Test | Front-end Informar um CPF: • válido • que não esteja com restrição • não cadastrado
  • 23. SUT – System Under Test | Front-end Efetuar o cadastro respeitando as restrições
  • 24. SUT – System Under Test | Front-end Efetuar operações de CRUD
  • 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