Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Simulando diversos componentes com TestContainers para qualidade de Microsserviços e Continuous Testing

Simulando diversos componentes com TestContainers para qualidade de Microsserviços e Continuous Testing

Com TestContainers podemos estruturar diversos componentes como banco de dados, eventos distribuídos como Kafka/RabbitMQ, serviços terceiros, meios de autenticação, mocks e muitos mais. Com isso não temos a dependência de ambientes em nossos testes de integração, obtendo diversos ganhos expressivos em diversos pontos que serão apresentados, inclusive em pipelines de Integração Contínua e como se encaixa a abordagem de Continuous Testing.

38f0f8d04a3f4c9f83915bfdcf81a1fd?s=128

Guilherme Rogatto

March 23, 2022
Tweet

More Decks by Guilherme Rogatto

Other Decks in Technology

Transcript

  1. Simulando diversos componentes com TestContainers para qualidade de Microsserviços e

    Continuous Testing
  2. Quem sou eu? • Formado em Engenharia de Computação. •

    Consultor de Qualidade de Software na McKinsey & Company • Instrutor de Automação de Testes.
  3. Agenda ⬢ Infraestrutura e Arquitetura ⬢ Automação de testes dos

    microsserviços atualmente ⬢ Gray Box Testing ⬢ Containers e TestContainers ⬢ Mostrando o código ⬢ Estratégias de espera ⬢ Pipelines
  4. None
  5. Automação de testes microsserviços/APIs atualmente 1. Flaky tests 2. Dependência

    de ambientes (bancos de dados, cloud, gateway, vpns e mais) 3. Novos códigos entrando a todo momento no ambiente 4. Não podemos colocar esse projeto em uma pipeline de entrega contínua / testes contínuos
  6. Camadas de Testes Unit Test O TestContainers não entraria nesse

    caso específico que somente válida partes unitárias do código, aqui teremos mocks e stubs para simular componentes. 3 Service/Integration Test O TestContainers se encaixa perfeitamente dentro dessa camada de testes, onde precisamos de componentes como banco de dados, filas e outros. 2 UI Test Temos exemplos que podemos colocar o TestContainers para sua automação de user interface, mas iremos focar em outra camada. 1
  7. “ Qual problema vamos resolver com TestContainers e como podemos

    utilizar essa estratégia para Gray Box Testing???
  8. Containers Com o uso do containers simplificamos diversas camadas do

    sistema operacional, temos uma rápida execução e diversas imagens oficiais para a utilização, como por exemplo: ⬢ Mysql ⬢ PostgreSQL ⬢ Kafka ⬢ Redis ⬢ RabbitMQ
  9. TestContainers TestContainers é uma biblioteca Java que suporta componentes JUnit

    controlarem e gerenciarem containers Docker leves e descartáveis por código. Podemos utilizá-lo para diversos objetivos quando falamos de qualidade de software.
  10. Linguagens Temos as bibliotecas disponibilizadas para diferentes linguagens de programação

    para o uso do TestContainers.
  11. Continuous Testing Testes contínuos é um processo que executa testes

    automatizados de alto valor como parte de todas as entregas do software em uma pipeline estruturada. O maior valor está em receber feedbacks constantes e todo o risco de negócio de cada nova release do software desenvolvido.
  12. 5 fatores para Continuous Testing Risco do negócio como prioridade

    Sem falhas na integração dentro do CI/CD pipeline Feedback extensivo em todos os stages Ambientes de testes mais estáveis Compartilhando responsabilidade pela qualidade do software
  13. “ Vamos para o TestContainers!!

  14. Estratégias de espera Wait por diversos status code Wait 200

    ok
  15. Pipelines Utilizando TestContainers conseguimos realmente adicionar nossos testes na camada

    de integração contínua, assim podemos parar o pipeline caso algum teste não execute como esperado ou até mesmo ter insights de como está a qualidade por trás desse novo deploy da nova versão do microservice O teste inicial economiza tempo e dinheiro
  16. /Rogatto Obrigado!!!!! /guilherme-rogatto