A maneira como os testes são encarados pela comunidade de desenvolvimento de aplicações mudou consideravelmente ao longo das décadas. Inicialmente, eles nada mais eram do que uma etapa relegada ao final da entrega, para se certificar de que estava “tudo certo”. Sua importância foi se tornando mais evidente conforme a área amadurecia e os processos se tornavam mais complexos. Os testes passaram a ser realizados ao longo dos ciclos de entrega, não apenas no final.
Agora, cada vez mais organizações estão dando um novo passo na execução dos testes, realizando-os imediatamente antes e até mesmo depois do lançamento das aplicações – uma tendência batizada de “shift-right testing”. Essa mudança de abordagem exige novas técnicas, práticas e conhecimentos. Entra em cena o TestOps.
Evolução na testagem
A necessidade de expandir a gama dos testes para além do desenvolvimento se deve em parte à priorização do time to market (ou lead time, no caso de alterações): abordagens já consolidadas como testagem baseada em modelos, automação de execução etc. podem demandar muito tempo e se tornarem gargalos no processo.
Isso se torna especialmente válido no caso de sistemas complexos e que oferecem diversos “micro serviços”. Testá-los satisfatoriamente na fase de pré-produção pode ser difícil, e até mesmo desnecessário, já que, dependendo da natureza do sistema, é possível fazer entregas pequenas e reverter alterações (rollback) facilmente se for preciso. Bastaria garantir que o sistema seja “bom o bastante” e refiná-lo em um ambiente real de uso.
Finalmente, os dados colhidos a partir da experiência dos consumidores (CX) tendem a oferecer insights mais ricos que os que se limitam a dizer “funcionou/falhou”. Ao implementar corretamente o shift-right testing, as equipes podem criar um ciclo contínuo de feedback-aprimoramento entre os usuários e os profissionais responsáveis pela aplicação.
A disciplina de TestOps
O termo “TestOps” é inspirado, como se pode imaginar, em “DevOps”, e implica uma colaboração direta e eficiente entre as equipes de Testes e Operações. Isso beneficia toda a cadeia de desenvolvimento e produção das aplicações.
As possibilidades são incontáveis. Por isso, reunimos apenas algumas que podem guiar a adoção dessa disciplina:
- Testes precoces de confiabilidade (inclui testes de performance, análise estática de escalabilidade e testes de estresse);
- Monitoramento precoce (monitorar os sistemas na fase de desenvolvimento e em ambientes de teste, por exemplo);
- Chaos engineering (testar a confiabilidade do sistema inserindo cenários controlados de falha);
- Monitoramento sintético (usar emulação ou scripts de transações que simulem o comportamento típico do usuário);
- Testagem e analytics de CX (extrair dados de experiência de usuários tanto para compreensão quanto para geração de insights relacionados a problemas e possíveis melhorias).
Os profissionais de testes que queiram implementar estas e outras práticas devem ser capazes de trabalhar bem em conjunto com outras equipes: data science, CX, operações e site reliability. A tendência é que isso deixe de ser um diferencial e se torne obrigatório para as organizações que queiram crescer.