Desde que cheguei na K21 e comecei a participar do EVDnC dentro das empresas, tive a oportunidade de comprovar o que a falta do uso dos Testes Automatizados no desenvolvimento de software pode causar. São inúmeros problemas em times variados, além dos questionamentos:

– Será que precisa mesmo testar de forma automática?
– Não dá pra parar alguém para automatizar os testes? Aqui é muito corrido.
– O sistema daqui é muito complexo para automatizar. Deixa com o pessoal de QA.

Por isso, resolvi compartilhar algumas experiências que o nosso Time K21 vivenciou em clientes de diversos portes e segmentos.

Aumento da carga de trabalho

A ausência de testes automatizados resulta no aumento exponencial da carga de trabalho (passado e presente precisam ser testados), elevando o custo financeiro do time e, como consequência, diminuindo o tempo de resposta para os clientes. Podemos fazer um paralelo com o aquecimento global. No início, o crescimento é muito sutil e, quando nos damos conta, já é praticamente impossível reverter o problema.

Promove a criação de “times dentro de times”

Quando um determinado produto de software não possui testes automatizados é comum encontrar a pessoa de testes – o único integrante do time responsável por garantir a qualidade do que está sendo entregue. Isso vai na direção contrária quando se tem como objetivo organizacional formar times multidisciplinares e de alta performance, em que todo o time é responsável pela entrega de ponta à ponta.

Interrupção na entrega contínua de valor

A ausência de testes automatizados dificulta a implantação de um processo de entrega contínua de valor. Isso faz aumentar o time to market (o tempo entre desenvolver o produto e disponibilizar para o consumidor final) da empresa.

Pouco espaço para inovação

O primeiro passo para inovar é adotar uma cultura de experimentação. Para conseguir trabalhar com experimentos é necessário conquistar a confiança,  principalmente das pessoas responsáveis pela camada estratégica da empresa. Quando você adota testes automatizados, você passa a ter a possibilidade de desenvolver novos produtos e garantir que o que já está em produção continuará funcionando.

Dificuldade na detecção de erros

Quando os testes são feitos de forma manual, o custo de desenvolvimento aumenta consideravelmente e o ROI (retorno sobre o investimento) do time diminui drasticamente. Na tabela abaixo, você pode imaginar quantos cenários são possíveis em uma tela com 10 campos.

Cenário Navegador Sistema Operacional Tempo
Todos os campos preenchidos Chrome Windows 15 minutos
1 campo preenchido e 9 não preenchidos Chrome Windows 2 minutos
2 campo preenchido e 8 não preenchidos Chrome Windows 3 minutos
Campos 1 e 3 preenchidos e os outros não Chrome Windows 5 minutos


Existem muitos cenários funcionais (regras de negócio) e não funcionais (navegadores, sistemas operacionais e etc). As possibilidades de cenários são enormes!

Problemas com sprints

Times que trabalham com Scrum e não automatizam seus testes tendem a ter ciclos de entrega maiores. A frase ‘tem que testar tudo para garantir que não quebrou nada’ não será apenas um lembrete e sim uma etapa presente em todas as sprints. Esta situação também estimula que times criem sprints específicas para testes, reforçando o comportamento coletivo da não garantia de qualidade sobre o produto entregue.

Visão ‘míope’ sobre o que está pronto!

A falta de testes automatizados impossibilita que se tenha uma verdadeira definição de pronto (definition of done). Se a proposta é trabalhar de forma contínua e incremental é necessário garantir que o produto de valor entregue para o cliente também tenha uma boa qualidade técnica.

 

Você concorda com os pontos acima? Quer acrescentar algo?
Vamos conversar mais sobre este assunto tão polêmico mas que é essencial nesta fase de transformação digital que estamos vivendo. Não sabe por onde começar com testes automatizados? Então dá uma lida em um outro post que fizemos: Por onde eu começo com testes automatizados.


Um abraço e viva agilidade de verdade! #trueagile