Automação de testes: o que é, quando e por que automatizar

Automação de testes é o uso de software para controlar a execução de testes de software através da aplicação de estratégias e ferramentas, comparando os resultados esperados com os resultados reais. Seus objetivos são a redução do envolvimento humano em atividades manuais, de tempo demandado e de custo final.

Quando automatizar?

A importância da automação de testes está diretamente relacionada à qualidade do produto final. Assim, ao pensar em automatizar, é preciso estudar a sua viabilidade: com a automação conseguiremos obter ganho de tempo? Conseguimos reduzir os custos e manter a qualidade?

Se a resposta for sim, outros fatores precisam ser analisados: a maturidade do time de processo do teste; grau de reutilização dos testes automatizados; conhecimento sobre o comportamento que é esperado do sistema a ser testado; e, ainda, o tempo disponível para a automação.

Também deve ser considerado o quão frequentes são as mudanças das funcionalidades a serem verificadas — pode não ser viável automatizar um teste de uma funcionalidade que poderá sofrer alterações amanhã — ; e se é possível garantir que a mesma qualidade de execução manual do teste será mantida em uma execução automatizada.

O que automatizar? Por quê?

Testes de regressão podem ser maçantes, pois são repetições de testes já realizados após modificações a um programa. Eles procuram descobrir a existência de defeitos introduzidos ou não cobertos originalmente no desenvolvimento das alterações ao programa. Esses testes são desenvolvidos, geralmente, de forma vagarosa e precisam ser executados repetidas vezes. Tudo isso os torna fortes candidatos à automação.

Além de evitar o trabalho manual em excesso, como testes de regressão, um dos grandes benefícios da automação é prover feedback de forma frequente desde o início das atividades de desenvolvimento. Isso é realizado, principalmente, através da automação dos testes unitários — geralmente realizados por desenvolvedores –, o que quer dizer que a automação não deve ser responsabilidade apenas da área de testes, mas uma prática comum no desenvolvimento de software como um todo.

Funcionalidades consideradas críticas pelo cliente devem ser um dos focos das atividades de automação, pois são partes do sistema de muita importância, que certamente serão muito utilizadas e terão alta visibilidade. Exatamente por isso, essas funcionalidades requerem cuidados especiais. Se certo esforço em automação for dado a essas partes do sistema, é possível estabilizá-las mais rapidamente e com mais qualidade.

Ferramentas de automação possuem outros usos, além da medição de performance de aplicações. Elas também podem ser usadas para preparar um ambiente de teste com um grande volume de dados.

Por exemplo: é preciso validar a performance de uma funcionalidade que cadastra clientes, mas o cadastro manual demanda muito tempo. Com a ferramenta de testes automatizados, é possível gravar essa criação uma vez, e, em uma estrutura de loop, executá-la diversas vezes, conforme a necessidade. Acelerando a criação da massa de dados, é possível utilizar o tempo restante com o que é necessário — nesse caso, a melhora do desempenho do sistema após a inserção de um grande volume de dados.

Sempre automatizar?

A automação reduz a probabilidade de erros das tarefas de teste, libera tempo para que o resto do trabalho de testes seja realizado da melhor forma e provê uma rede de segurança ao sistema — por exemplo, quando é feita uma mudança no código, testes automatizados permitem identificar se algo foi quebrado. Além disso, também é uma excelente forma de documentação do processo de desenvolvimento.

Assim, a automação de testes é um investimento e esforço de médio e longo prazo, cujos frutos são colhidos com o passar do tempo. Quando é usada corretamente, pode trazer vários benefícios para uma organização.

Entretanto, é importante considerar os casos em que cabe utilizar a automação. É preciso analisar cada projeto para definir quais realmente valem a pena ser automatizados e considerar que, mesmo quando se opta por usar uma ferramenta de automação de teste, ainda é necessário utilizar testes manuais para diversas funcionalidades.