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.

Guilherme Rogatto

March 23, 2022
Tweet

More Decks by Guilherme Rogatto

Other Decks in Technology

Transcript

  1. Quem sou eu? • Formado em Engenharia de Computação. •

    Consultor de Qualidade de Software na McKinsey & Company • Instrutor de Automação de Testes.
  2. 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
  3. 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
  4. 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
  5. “ Qual problema vamos resolver com TestContainers e como podemos

    utilizar essa estratégia para Gray Box Testing???
  6. 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
  7. 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.
  8. 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.
  9. 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
  10. 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