Testes Automatizados – O que a falta deles pode causar?

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

Por |2018-09-16T18:02:55+00:0028 de março, 2018|Desenvolvedor, eXtreme Programming, Software Ágil, Técnico, Testes Automatizados|

Sobre o Autor:

Profissional sênior com vasta experiência no desenvolvimento de produtos de software e aplicativos usando técnicas de engenharia enxuta.

2 Comments

  1. Genilson 07/05/2018 em 17:47 - Responder

    Muito bom!
    Já pensava que teste automatizado era uma boa escolha a se fazer após o desenvolvimento, até porque todas as pessoas cometem erros. Mas é sempre bom fazer os dois teste, tanto manual como automatizado.

    Seria interessante você colocar os principais erros capturados por teste automatizados.
    Quanto tempo em média leva para automatizar?

    Grande abraços.
    Att,
    Genilson de Maceno

    • Sidney Coelho 14/05/2018 em 14:03 - Responder

      Fala, Genilson. Então, geralmente os tipos de erros mais capturados dependem do contexto (muda de sistema para sistema), e não fazem taaaaaanta diferença nesse cenário mais geral. Independente do tipo de erro, é legal pensar que testes automatizados são importantes no médio a longo prazo, pois o tempo investido na implementação deles evitará retrabalho com debug e bugfix.

      Nos primeiros testes, fatalmente você vai demorar um tempinho a mais, por conta da curva de aprendizado… Lembro que eu levava mais ou menos o mesmo tempo de desenvolvimento (mão na massa) de uma feature para escrever testes para ela, talvez um pouco menos. Depois que você vai pegando prática, as duas coisas (desenvolvimento e testes) se misturam tanto que você não consegue nem distinguir quando está fazendo um ou outro (nem consegue mais fazer um sem o outro 😀 ).

      Tanto que a influência dos testes vai além do técnico, e passa para o aspecto cultural: com testes, você gera um ambiente que proporciona segurança aos desenvolvedores para modificar e refatorar código, pois qualquer erro inserido será descoberto muito cedo, enquanto a lógica está fresca na mente do desenvolvedor.

      Nosso treinamento de CSD aborda muito bem esse tema, de maneira totalmente prática. Tenho certeza que você iria adorar. Qualquer dúvida, estamos aí.

Deixar Um Comentário