O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
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...
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ç...
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
conjun...
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 tes...
Recapitulando
Rest-Assured
http://rest-assured.io
DSL Java para simplificar a execução de testes para serviços REST
import static io.res...
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
public class RestAssuredExampleTest {
@...
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
public class RestAssuredExampleTest {
@...
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
public class RestAssuredExampleTest {
@...
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
public class RestAssuredExampleTest {
@...
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 pr...
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.
B...
Modelo 2
Ganhos
● Descentralização organizada dos projetos de teste para com uma API
● Isolamento entre APIs
Problemas
● P...
Modelo 3
Modelo 3
Um projeto de teste para cada microserviço dividido em um
projeto cliente e um projeto de teste.
BACKEND
PROEJTO
...
Modelo 3
Projeto Cliente
Colocaremos aqui toda a lógica necessária para efetuar as
requisições como:
○ Retorno de exceções...
Modelo 3
Projeto Teste
Colocaremos aqui todos os métodos de utilização da API que
criamos no projeto cliente, criando a ló...
Modelo 3
Ganhos
● Maior gestão de versões (novas funcionalidades, breaking changes)
● Fácil utilização por outros times
○ ...
Próximos passos
Próximos passos
Aplicação de estratégias e Design Patters para diminuir a manutenção e
acelerar o desenvolvimento dos test...
Gratuito!
SCAN ME
Obrigado!
@eliasnogueira
github.com/eliasnogueira
SCAN ME
Criando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssured
Próximos SlideShares
Carregando em…5
×

3

Compartilhar

Baixar para ler offline

Criando uma arquitetura para seus testes de API com RestAssured

Baixar para ler offline

Palestra ministrada no QAXperience dia 07 de Abril de 2020 que fala sobre como criar diferentes estruturas de um projeto de teste para uma API REST

Criando uma arquitetura para seus testes de API com RestAssured

  1. 1. Criando uma arquitetura para seus testes de API com RestAssured @eliasnogueira
  2. 2. Conceituação
  3. 3. Pirâmide de Testes Original UI Tests Service Tests Unit Tests mais isolamento mais integração rápido lento
  4. 4. Pirâmide de Testes IdealPirâmide de Testes Ideal
  5. 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
  6. 6. APIs Individuais API API API API API API API API
  7. 7. APIs Individuais API API API API API API API API Assumimos que as API já possuem testes unitários Testes Unitários done!
  8. 8. Individual APIs API API API API API API API API Precisamos testar funcionalmente as APIs em separado Foco desta apresentação
  9. 9. Testes de Contrato e E2E API API API API API API API API Contrato & E2E
  10. 10. Contract and E2E testing API API API API API API API API Contrato & E2E Garante a comunicação entre APIs
  11. 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. 12. Como serão os projetos de teste? Modelo 1 Um projeto de teste para todos os microserviço BACKEND TEST PROEJTO TESTE
  13. 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. 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
  15. 15. Recapitulando
  16. 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. 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. 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. 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. 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. 21. SUT – System Under Test
  22. 22. SUT – System Under Test | Front-end Informar um CPF: • válido • que não esteja com restrição • não cadastrado
  23. 23. SUT – System Under Test | Front-end Efetuar o cadastro respeitando as restrições
  24. 24. SUT – System Under Test | Front-end Efetuar operações de CRUD
  25. 25. Modelo 1
  26. 26. Modelo 1 Você criará apenas um projeto de teste para todas as APIs BACKEND TEST PROEJTO TESTE
  27. 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
  28. 28. Modelo 2
  29. 29. 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
  30. 30. Modelo 2 Ganhos ● Descentralização organizada dos projetos de teste para com uma API ● Isolamento entre APIs Problemas ● Possíveis duplicidades de código
  31. 31. Modelo 3
  32. 32. 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
  33. 33. 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)
  34. 34. 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
  35. 35. 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
  36. 36. Próximos passos
  37. 37. 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
  38. 38. Gratuito! SCAN ME
  39. 39. Obrigado! @eliasnogueira github.com/eliasnogueira SCAN ME
  • niksrn2011

    Jan. 27, 2021
  • marciosousa7528

    Dec. 17, 2020
  • powerirs

    May. 22, 2020

Palestra ministrada no QAXperience dia 07 de Abril de 2020 que fala sobre como criar diferentes estruturas de um projeto de teste para uma API REST

Vistos

Vistos totais

1.241

No Slideshare

0

De incorporações

0

Número de incorporações

16

Ações

Baixados

18

Compartilhados

0

Comentários

0

Curtir

3

×