scrum gathering rio 2016 - conteinerizando testes com docker compose

34
Conteinerizando Testes com Docker Compose Stefan Teixeira @stefan_teixeira [email protected] stefanteixeira.com.br stefanteixeira.com

Upload: stefan-teixeira

Post on 09-Jan-2017

485 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

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

• 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

Docker Compose

Page 4: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

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

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

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

Compose File (v1)

Page 8: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

Compose File (v2)

Page 9: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

Conteinerizando testes com Docker Compose

Page 10: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

Como assim?

Page 11: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

Containers != mini-VMs

https://twitter.com/rhein_wein/status/662995114235678720

Page 12: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

Motivações

Page 13: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

#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

#2

Configurar um ambiente para rodar testes pode ser um inferno.

👹

Page 15: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

“Docker delivers a predictable, reproducible testing environment.”

(Laura Frank, Codeship)

🐳❤

Page 16: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

Exemplos

Page 17: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

App A

Page 18: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

App A

DB

Page 19: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

App A

DB Mock Service

Page 20: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

App A

DB Mock Service

API Tests

Page 21: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

App A

DB Mock Service

API Tests

UI Tests

Page 22: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

App A

DB Mock Service

API Tests

UI Tests

Security Tests

Page 23: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

App A

DB Mock Service

API Tests

UI Tests

Security Tests

Smoke Tests

Page 24: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

Demo

Page 25: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

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

Pontos de atenção

• Logs

Page 27: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

Pontos de atenção

• Logs • volumes ou data containers

Page 28: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

Pontos de atenção

• Logs • volumes ou data containers

• Tempo de inicialização

Page 29: Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose

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

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

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

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

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

Obrigado!

Stefan Teixeira @stefan_teixeira

[email protected] stefanteixeira.com.br

stefanteixeira.com