Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Criando uma arquitetura para seus testes de API com RestAssured

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

  • Soyez le premier à commenter

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

×