O documento apresenta Localstack, uma ferramenta que permite simular localmente os serviços da AWS para fins de desenvolvimento e testes. O autor discute a importância dos testes de software e motiva o uso de ferramentas como Localstack para permitir testes automatizados dos sistemas sem depender de infraestrutura na nuvem. Uma demonstração mostra a integração de Localstack com JUnit para execução de testes que usam os serviços simulados.
Testando serviços aws localmente com Localstack e JUnit
1. R O D R I G O V I E I R A P I N T O
2 0 1 9
TESTANDO SERVIÇOS AWS LOCALMENTE
COM LOCALSTACK E JUNIT
1
2. AGENDA
• Quem sou eu?
• O que dizer sobre testes de software?
• Motivação
• O que já existe por ai?
• Localstack
• Demo
• Referências
2
3. QUEM SOU EU?
• Engenheiro de Software no Elo7
• Professor de Técnicas de Programação Web na Bandtec
• Instrutor nos cursos de Java na Caelum e Alura
• Mestre em Engenharia de Software - IPT
• Pós Graduado em Engenharia de Software - PUC
• Bacharel em Ciência da Computação - USJT
• Amante de software bem escrito ☺
3
4. O QUE DIZER SOBRE TESTES DE
SOFTWARE?
• É algo que nos preocupamos desde …. 1995
4
5. O QUE DIZER SOBRE TESTES DE
SOFTWARE?
• Não pera…..1975!
5
6. O QUE DIZER SOBRE TESTES DE
SOFTWARE?
• Cada vez mais falamos sobre isso
6
7. O QUE DIZER SOBRE TESTES DE
SOFTWARE?
• A academia também:
• TDD diminui em 50% a quantidade de erros encontrados em testes caixa-
preta
• 87,5% dos programadores acreditam que TDD facilitou o entendimento
dos requisitos
• 95,8% acreditam que TDD reduziu o tempo gasto com debug
• Resultados de projetos na Microsoft e IBM indicaram que o número de
defeitos de quatro produtos diminuiu entre 40% a 90%, mas aumentaram o
tempo inicial de desenvolvimento entre 15% a 35%
• Tres diferentes grupos de alunos (cada um deles usando uma abordagem
diferente: TDD, test-last e sem testes) mostrou que o código produzido pelo
time que fez TDD usou melhor conceitos de orientação a objetos e as
responsabilidades foram melhor separadas entre as classes, enquanto que
os outros times produziram um código mais procedural.
• Estudos com estudantes mostraram que o código produzido com TDD tem
45% menos defeitos e faz com que o programador se sinta mais a vontade
com ele
7
8. O QUE DIZER SOBRE TESTES DE
SOFTWARE?
• Podemos dizer que, no mínimo, testes são
importantes para que escrevamos cada vez menos
bugs!
• Mas mais do que isso: testes nos ajudam a
desenvolver software extensível e manutenível!
• Desenvolvimento Guiado por Testes é uma forma
de administrar o medo durante a programação -
Kenk Beck
• O júri chegou, a controvérsia acabou, GOTO é
prejudicial, e TDD funciona! - Robert C. Martin
8
9. TÁ, MAS E DAÍ? (OU: MOTIVAÇÃO)
AWS é líder quando o assunto é computação em nuvem
Existe desde 2006 (Grande know-how)
9
10. MOTIVAÇÃO
10
• Apesar de existir há mais de 10 anos, não possui
soluções que:
• favoreçam o desenvolvimento
local
• com testes automatizados
• e sem a necessidade de infra
estrutura externa
• custos que poderiam ser
evitados
11. O QUE JÁ EXISTE POR AI?
• Minio (para S3)
• DynamoDB (local)
• SQS-Local (para SQS)
• Outras ferramentas que suportam apenas uma ou
outra tecnologia específica da AWS
11
12. • E se houvesse uma única ferramenta que suportasse
a simulação de todas as tecnologias da AWS?
12
13. LOCALSTACK
• Pode ser instalado
localmente ou via
docker
• Integração com JUnit:
• sobe o container com a
infra necessária
• roda os testes
• derruba o container
13