scrum gathering rio 2016 - conteinerizando testes com docker compose
TRANSCRIPT
![Page 1: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/1.jpg)
Conteinerizando Testes com Docker Compose 🐳🐙
Stefan Teixeira @stefan_teixeira
[email protected] stefanteixeira.com.br
stefanteixeira.com
![Page 2: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/2.jpg)
• QA Automation Engineer @ Toptal • Blogs técnicos: stefanteixeira.com.br (pt-br) /
stefanteixeira.com (en) • Co-organizador dos meetups DevOps Carioca e Grupo de
Testes Carioca
Contatos: • E-mail: [email protected] • Twitter: twitter.com/stefan_teixeira • LinkedIn: linkedin.com/in/stefanteixeira • GitHub: github.com/stefanteixeira • SlideShare: slideshare.net/stefanteixeira
Sobre
![Page 3: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/3.jpg)
Docker Compose
![Page 4: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/4.jpg)
Docker Compose
• Ferramenta para definir/rodar aplicações multi-container
https://docs.docker.com/compose/
![Page 5: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/5.jpg)
Docker Compose
• Ferramenta para definir/rodar aplicações multi-container
• Conhecido antigamente como Fig
https://docs.docker.com/compose/
![Page 6: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/6.jpg)
Docker Compose
• Ferramenta para definir/rodar aplicações multi-container
• Conhecido antigamente como Fig
• YAML ❤
https://docs.docker.com/compose/
![Page 7: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/7.jpg)
Compose File (v1)
![Page 8: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/8.jpg)
Compose File (v2)
![Page 9: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/9.jpg)
Conteinerizando testes com Docker Compose
![Page 10: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/10.jpg)
Como assim?
![Page 11: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/11.jpg)
Containers != mini-VMs
https://twitter.com/rhein_wein/status/662995114235678720
![Page 12: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/12.jpg)
Motivações
![Page 13: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/13.jpg)
#1
Se os testes (exceto testes unitários) são trabalhosos para rodar
localmente, os devs não vão rodar.
¯\_( )_/¯
![Page 14: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/14.jpg)
#2
Configurar um ambiente para rodar testes pode ser um inferno.
👹
![Page 15: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/15.jpg)
“Docker delivers a predictable, reproducible testing environment.”
(Laura Frank, Codeship)
🐳❤
![Page 16: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/16.jpg)
Exemplos
![Page 17: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/17.jpg)
App A
![Page 18: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/18.jpg)
App A
DB
![Page 19: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/19.jpg)
App A
DB Mock Service
![Page 20: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/20.jpg)
App A
DB Mock Service
API Tests
![Page 21: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/21.jpg)
App A
DB Mock Service
API Tests
UI Tests
![Page 22: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/22.jpg)
App A
DB Mock Service
API Tests
UI Tests
Security Tests
![Page 23: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/23.jpg)
App A
DB Mock Service
API Tests
UI Tests
Security Tests
Smoke Tests
![Page 24: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/24.jpg)
Demo
![Page 25: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/25.jpg)
Demonstração
• Exemplo mais simples possível, com três containers:
• App (uma API REST) • DB (banco de dados MongoDB) • API Tests (testes de API escritos com Supertest)
• https://github.com/stefanteixeira/demo-testing-compose
![Page 26: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/26.jpg)
Pontos de atenção
• Logs
![Page 27: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/27.jpg)
Pontos de atenção
• Logs • volumes ou data containers
![Page 28: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/28.jpg)
Pontos de atenção
• Logs • volumes ou data containers
• Tempo de inicialização
![Page 29: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/29.jpg)
Pontos de atenção
• Logs • volumes ou data containers
• Tempo de inicialização • netcat (nc), curl, wait-for-it, wait_for module
(Ansible)
![Page 30: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/30.jpg)
Pontos de atenção
• Logs • volumes ou data containers
• Tempo de inicialização • netcat (nc), curl, wait-for-it, wait_for module
(Ansible)
• Geração de imagens
![Page 31: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/31.jpg)
Pontos de atenção
• Logs • volumes ou data containers
• Tempo de inicialização • netcat (nc), curl, wait-for-it, wait_for module
(Ansible)
• Geração de imagens • Alpine-linux, Phusion (minimal base images)
![Page 32: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/32.jpg)
Pontos de atenção
• Logs • volumes ou data containers
• Tempo de inicialização • netcat (nc), curl, wait-for-it, wait_for module
(Ansible)
• Geração de imagens • Alpine-linux, Phusion (minimal base images) • Automatizar processo
![Page 33: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/33.jpg)
Referências• "Stop Being Lazy and Test Your Software”:
• https://www.youtube.com/watch?v=Mx1Il9wIepw • http://www.slideshare.net/rheinwein/stop-being-lazy-and-test-your-
software
• https://hharnisc.github.io/2016/06/19/integration-testing-with-docker-compose.html
• https://docs.docker.com/compose/startup-order/
• https://github.com/vishnubob/wait-for-it
• https://www.ansible.com/blog/six-ways-ansible-makes-docker-compose-better
• https://www.vivaolinux.com.br/artigo/Tutorial-Netcat
![Page 34: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose](https://reader031.vdocuments.mx/reader031/viewer/2022030305/5873311e1a28ab596c8b6a8f/html5/thumbnails/34.jpg)
Obrigado!
Stefan Teixeira @stefan_teixeira
[email protected] stefanteixeira.com.br
stefanteixeira.com