Simulando diversos componentes com TestContainers para qualidade de Microsserviços e Continuous Testing - Speaker Deck
More Decks by Guilherme Rogatto
See All by Guilherme Rogatto
Aplicando TestContainers para garantir qualidade de Microsserviços
As 8 melhores práticas e formas de simplificar e estruturar todos seus Testes Automatizados
Applying quality and test automation in the world of technology
Testes em APIs com Karate e Gatling
API Mockaroo - Gerando Massa de Dados para Testes Automatizados
Simulando diversos componentes com TestContainers para qualidade de Microsserviços e
Quem sou eu? • Formado em Engenharia de Computação. •
Consultor de Qualidade de Software na McKinsey & Company • Instrutor de Automação de Testes.
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
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
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
" Qual problema vamos resolver com TestContainers e como podemos
utilizar essa estratégia para Gray Box Testing???
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
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.
Linguagens Temos as bibliotecas disponibilizadas para diferentes linguagens de programação
para o uso do TestContainers.
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.
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
" Vamos para o TestContainers!!
Estratégias de espera Wait por diversos status code Wait 200
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