Mas afinal, o que são testes automatizados?

Testes automatizados consistem na utilização de ferramentas para controlar a execução de testes de software, assim como a verificação dos resultados esperados, a configuração das pré-condições e outras funções de controle.

A automação é um processo que consiste basicamente na escrita de um programa que irá realizar o teste automaticamente para você, sendo que uma vez automatizado, o teste pode ser executado sempre e quando necessário de forma rápida e com pouco esforço.

A reprodução dos testes faz com que os mesmos testes sejam executados identicamente e inúmeras vezes simulando situações específicas, facilitando a identificação de um possível comportamento indesejado.

Além disso, através da automação de testes é possível elaborar e executar testes que de maneira manual não são viáveis, como por exemplo, uma grande quantidade de acessos simultâneos a uma aplicação ou uma carga massiva de registros num banco de dados.

Todas essas características permitem minimizar os problemas existentes na abordagem manual, visando o aumento da qualidade do software que será entregue, pois através dessa abordagem se torna mais fácil executar uma quantidade maior de testes sempre que houver uma alteração na aplicação que está sendo testada. Outra questão é que uma abordagem puramente manual não consegue acompanhar as demandas e o volume de testes ao longo do ciclo de vida do desenvolvimento.

No entanto, os testes automatizados podem ser caros, sendo geralmente utilizada em conjunto com técnicas manuais de teste. Porém, quando aplicado em larga escala leva a redução de custos no longo prazo, pois permite que defeitos sejam identificados mais rapidamente, permite uma maior cobertura de testes na aplicação e necessitam de menos esforço para serem executados.

Com relação ao esforço, há um custo do teste manual que normalmente não é levado em consideração que é o custo de oportunidade, ou seja, o custo que os testadores geram ao executar testes manuais que poderiam estar sendo gastos em atividades criativas/intelectuais que agregam mais valor ao processo de qualidade.

Existem duas abordagens principais na automação:

Teste de Interface Gráfica

No teste de interface gráfica, uma plataforma gera os eventos de entrada na interface gráfica e observa os resultados produzidos, simulando as ações de um usuário real. Para esta abordagem existem diversas ferramentas, como Selenium, Cucumber, Protractor, etc que podem ser utilizadas para gravar scripts de teste e reproduzi-los automaticamente.

Uma das vantagens dessa abordagem é que ela exige menos codificação, além do fato de não requerer alterações na aplicação para criar ou executar os testes. Porém, temos que tomar cuidado no momento da manutenção desses scripts, pois eles estão fortemente acoplados à interface gráfica, de maneira que qualquer alteração pode fazer com que deixem de funcionar.

Testes Unitários

Na abordagem de testes unitários, os testes são realizados diretamente no código fonte da aplicação, onde cada componente é validado individualmente, cujo objetivo principal é garantir que cada unidade de software execute conforme esperado.

Uma das principais vantagens é que através dessa abordagem é possível garantir que os defeitos serão encontrados mais cedo, uma vez que é possível executar esses testes com maior frequência. Além disso, também servem como documentação do código, pois ajudam a descrever o comportamento de cada componente do sistema.

Atualmente, é possível automatizar testes utilizando praticamente qualquer linguagem de programação comercial (Java, Python, C#, Ruby, etc) através da utilização de ferramentas como Selenium Web Driver, Cucumber, Xunit, JUnit, entre outras, sendo que iremos conhecer as principais ferramentas num post futuro.

No próximo post iremos discutir um pouco mais as vantagens e desvantagens dos testes automatizados comparado à abordagem de testes manuais que é a prática mais comum encontrada.

Até lá!

1 thought on “Mas afinal, o que são testes automatizados?”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *