O documento descreve como um time de desenvolvimento e teste pode melhorar seus processos adotando práticas DevOps, como integração contínua, entrega contínua e deploy automático. Ele exemplifica as etapas para automatizar o build, adicionar testes unitários e de API/integração, implantar em um ambiente de staging e automatizar testes de aceitação, reduzindo o tempo de feedback de dias para minutos.
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
1. QAOPS
O Q A C O M P É Z I N H O N O M U N D O D E VO P S
2. DEVOPS - CAMS
Ref.: https://www.telehouse.com/2016/03/devops-how-a-culture-of-empathy-creates-massive-productivity/e/
1. Mude o seu mindset e
foque nos princípios e
boas práticas DevOps!
2. Crie processos que
permita a você
automatizar tudo que é
possível automatizar!
3. Meça os resultados e
aproveite das métricas
para prover ações de
melhoria contínua!
4. Compartilhe todo
o aprendizado e
resultados!
5. OS “CONTINUOUS”
v 1.1
Continuous Delivery
Continuous Integration
Continuous Deployment
Manual Deploy
Automatic Deploy
Source Control Build Staging Production
Commit Changes Run Build and
Unit Tests
Deploy toTest Environtment
Run Integration,Acceptance,
Load and othersTests
Deploy to Production
Environtment
6. VAMOS EXEMPLIFICAR...
Suponha que somos um time com DEV e QA e
desenvolvemos um sistema web com front-end e
back-end para geração de relatórios.
Esse sistema tem uma interface com vários campos
para o usuário preencher (front-end) e assim gerar
um relatório específico computado (back-end)
conforme as escolhas dele.
7. NOSSO TIME ANTES (BASEADO EM FATOS REAIS)...
- Versões do sistema compiladas pelo desenvolvedor, na máquina
dele e o QA precisa pedir para o DEV criar e liberar a versão
para ele. As vezes ele esquece, ou manda versão errada,
ou demora pra liberar...
8. - Não há testes unitários e, se existe algum, não são executados.
- O QA tem um ambiente próprio na máquina dele.
- O QA executa os testes manualmente apenas pela interface do
sistema.
NOSSO TIME ANTES (BASEADO EM FATOS REAIS)...
9. - A cada liberação de versão ao
cliente, o QA precisa testar uma
suíte de 60 testes regressivos,
isso hoje, pois esse número só
vai aumentar!! Leva em torno de
2 dias, isso quando são
executados!
NOSSO TIME ANTES (BASEADO EM FATOS REAIS)...
10. - As vezes quando implanta a versão no cliente, ocorre
problemas por causa do ambiente dele!
“Na minha máquina funciona”... É, mas o cliente não
vai comprar a sua máquina!
NOSSO TIME ANTES (BASEADO EM FATOS REAIS)...
11. ESTÁGIO 01: VAMOS MELHORAR O BUILD
Submit
Code
Build
AGORA:
Versão correta automaticamente
disponível no repositório para
download
40 s
12. NOSSO TIME HOJE (BASEADO EM FATOS REAIS)...
- Versões do sistema compiladas pelo desenvolvedor, na máquina
dele e o QA precisa pedir para o DEV criar e liberar a versão
para ele. As vezes ele esquece, ou manda versão errada,
ou demora pra liberar...
13. ESTÁGIO 02: UNIT TESTS
Submit
Code
Build Unit
Tests
AGORA:
TemosTestes Unitários!!
40 s 01 m
200 testes
14. ESTÁGIO 02: UNIT TESTS
Submit
Code
Build Unit
Tests
FEEDBACK:
E falhou!!! Em menos de 2 minutos
o desenvolvedor já fica sabendo
que há problemas e nem libera
para testes... E também já sabe
onde é o problema pontualmente!
40 s 01 m
200 testes
15. ESTÁGIO 02: UNIT TESTS
Submit
Code
Build Unit
Tests
FEEDBACK:
Problema resolvido rapidamente e
com custo baixo! Bugs em
produção evitados!
40 s 01 m
200 testes
16. NOSSO TIME HOJE (BASEADO EM FATOS REAIS)...
- Não há testes unitários e, se existe algum, não são executados.
- O QA tem um ambiente próprio na máquina dele.
- O QA executa os testes manualmente apenas pela interface do
sistema.
17. ESTÁGIO 03: DEPLOY STAGING
Submit
Code
Build Unit
Tests
AGORA:
Temos um ambiente com os requisitos
mínimos para rodar nossa aplicação.
Vamos executar nossos próximos
testes nele!
40 s
Staging
Environment
01 m
200 testes
1 m
18. ESTÁGIO 03: DEPLOY STAGING
Submit
Code
Build Unit
Tests
AGORA:
Para fazer o deploy nele, tivemos que criar
um script de instalação e configuração da
nossa aplicação!!! Ou seja, um passo
confiável para termos um futuro deploy
automatizado em produção!!!
40 s
Staging
Environment
01 m
200 testes
1 m
19. NOSSO TIME HOJE (BASEADO EM FATOS REAIS)...
- Não há testes unitários e, se existe algum, não são executados.
- O QA tem um ambiente próprio na máquina dele.
- O QA executa os testes manualmente apenas pela interface do
sistema.
20. - As vezes quando implanta a versão no cliente, ocorre
problemas por causa do ambiente dele!
“Na minha máquina funciona”... É, mas o cliente não
vai comprar a sua máquina!
NOSSO TIME HOJE (BASEADO EM FATOS REAIS)...
21. ESTÁGIO 04: API TESTS
Submit
Code
Build Unit
Tests
AGORA:
TemosTestes de API (ou integração, ou
serviços) !! Dos 60 que tínhamos, 40
eram possíveis de fazer via API.
40 s
API
Tests
01 m
200 testes
30 s
40 testes
Staging
Environment
1 m
22. ESTÁGIO 04: API TESTS
Submit
Code
Build Unit
Tests
40 s
API
Tests
01 m
200 testes
30 s
40 testes
Staging
Environment
1 m
FEEDBACK em menos de 04
minutos!
23. ESTÁGIO 04: API TESTS
Submit
Code
Build Unit
Tests
40 s
FEEDBACK:
Mais um problema resolvido
rapidamente e com custo baixo!
Mais bugs em produção evitados!
01 m
200 testes
API
Tests
30 s
40 testes
Staging
Environment
1 m
24. NOSSO TIME HOJE (BASEADO EM FATOS REAIS)...
- Não há testes unitários e, se existe algum, não são executados.
- O QA tem um ambiente próprio na máquina dele.
- O QA executa os testes manualmente apenas pela interface do
sistema.
25. ESTÁGIO 05: ACCEPTANCE TESTS
Submit
Code
Build Unit
Tests
AGORA:
TemosTestes de Aceitação (ou/e
end2end, ou/e funcionais) !! Dos 60 que
tínhamos, apenas 20 necessitam ser
testados via interface.
40 s
Acceptance
Tests
01 m
200 testes
10 m
20 testes
Staging
Environment
1 m
API
Tests
30 s
40 testes
26. ESTÁGIO 05: ACCEPTANCE TESTS
Submit
Code
Build Unit
Tests
AGORA:
Achamos melhor paralelizar esses
testes para ganhar alguns minutos!!
Reduzimos 6 minutos!!!
40 s
Acceptance
Tests
01 m
200 testes
3 m
20 testes
Staging
Environment
1 m
API
Tests
30 s
40 testes
27. ESTÁGIO 05: ACCEPTANCE TESTS
Submit
Code
Build Unit
Tests
40 s
Acceptance
Tests
01 m
200 testes
3 m
20 testes
Staging
Environment
1 m
API
Tests
30 s
40 testes
FEEDBACK em menos de 07
minutos!
28. ESTÁGIO 05: ACCEPTANCE TESTS
Submit
Code
Build Unit
Tests
40 s
Acceptance
Tests
01 m
200 testes
3 m
20 testes
Staging
Environment
1 m
API
Tests
30 s
40 testes
FEEDBACK:
Mais um problema resolvido rapidamente e
com custo baixo! Mais bugs em produção
evitados!
30. - A cada liberação de versão ao
cliente, o QA precisa testar uma
suíte de 60 testes regressivos,
isso hoje, pois esse número só
vai aumentar!! Leva em torno de
2 dias, isso quando são
executados!
NOSSO TIME HOJE (BASEADO EM FATOS REAIS)...
32. - 02 dias para automatizar as novas funcionalidades;
- 02 dias para testes exploratórios, aumentando mais ainda a
cobertura;
- 02 dias para revisar a documentação;
- Tranquilidade sabendo que testei em um ambiente parecido
com o de produção;
- Ajuda dos desenvolvedores que agora têm feedback rápido dos
bugs encontrados no CI e eles mesmos se prontificam a
analisar e corrigir;
EU COMO QA GANHEI...
33. PRÓXIMOS ESTÁGIOS...
Merge Request
Build Unit
Tests
40 s
Acceptance
Tests
01 m
200 testes
3 m
20 testes
Staging
Environment
1 m
API
Tests
30 s
40 testes
OthersTests
Automatic
Deploy to
Production
Publish
Documentation
Code Review
34. PRIMEIROS PASSOS PARA O QA FAZER
DEVOPS
- Gostar do que faz;
- Dialogar com Business, Devs e Ops;
- Saber programar (sim, tire da cabeça a frase “não gosto de
programar”!);
- Entender "por debaixo dos panos" como funciona a aplicação
que você está testando;
- DRY: dont repeat yourself: tudo que você faz e é recorrente,
você deve automatizar;
- Entender como funciona o ambiente em que se encontra a
aplicação;
Ref.: http://www.keeptesting.com.br/2014/12/01/7-passos-para-se-tornar-um-devops/