O documento descreve o desenvolvimento do Rocket-engine, uma ferramenta para executar testes de forma automatizada e distribuída em várias máquinas. Inicialmente os testes eram executados manualmente 1x por semana, demorando 1-2 dias e reduzindo a produtividade da equipe. O Rocket-engine permitiu distribuir os testes em diferentes máquinas, reduzindo o tempo de build para 2h e permitindo executar testes várias vezes ao dia, aumentando a produtividade e qualidade.
8. Demorava….
- 1 a 2 dias boa parte da equipe executando os testes
durante na semana
- Causava mau humor na equipe
- Em 1 semana boa, conseguíamos ter 3 dias de
desenvolvimento
- Testes eram executados 1x por semana
9. Iniciativas
MyContainer Grid
Rodar vários containers numa mesma máquina - Escalabilidade vertical
Testes rodaram em 15min, porém com falsos negativos/positivos e resultados
intermitentes
10. Iniciativas
MyContainer Grid
Rodar vários containers numa mesma máquina - Escalabilidade vertical
Testes rodaram em 15min, porém com falsos negativos/positivos e resultados
intermitentes
Problemas encontrados
Código do MyContainer Grid ficou muito desatualizado muito rápido, não
conseguimos fazer o merge da branch atualizada.
Na máquina mais rápida da época no EC2:
- 32 processadores físicos
- 64Gb+ RAM
Custo alto por hora($$)
Mostrou mais de 100% de utilização de CPU para algumas instâncias
17. Tests distribuídos
Distribuição do código entre as máquinas da Dextra
Estilo Map-Reduce
Display over ssh
Agregação de resultados ao final de cada parte
19. Primeiras versões
Divisão simples de suítes por máquinas, verificamos
que algumas máquinas ficavam ociosas
Identificamos que existiam vários testes
intermitentes 75-80% de sucesso
20. Resultados
Recuperação de 20 a 30% da produtividade do time
Recuperação do humor do time às segundas e terças
feiras o/
Escalabilidade horizontal
Build todo dia, mais de 1x ao dia o/
21. Resultados
Build time 2h em 4 máquinas
10h boa parte do time alocado
(ninguém alocado)
22. Resultados
Build time 2h em 4 máquinas
10h boa parte do time alocado
(ninguém alocado)
False negatives
75% success 99% success
23. Resultados
Build time 2h em 4 máquinas
10h boa parte do time alocado
(ninguém alocado)
False negatives
75% success 99% success
Build 10x ao dia
Segurança para mudar ou criar novas features