Vantagens e desvantagens da automação de teste

A automação de testes, quando feita corretamente, pode ter muitas vantagens e ser muito benéfica para o projeto e a organização. No entanto, existem algumas armadilhas ou desvantagens da automação de teste das quais precisamos estar cientes.



Vantagens de automação de teste

Quais são as vantagens da automação de teste?

Confirmação do conhecido

As verificações automatizadas são uma ótima maneira de confirmar se o aplicativo ainda funciona corretamente após as alterações feitas nele.


É possível que quando um novo recurso é adicionado a um aplicativo ou um bug é corrigido, isso afeta a funcionalidade do software de trabalho, ou seja, um bug de regressão é introduzido.

Ao executar um conjunto de verificações de regressão automatizadas quando o aplicativo é atualizado, podemos identificar quaisquer novos bugs introduzidos como resultado das alterações.


A principal informação aqui é executar verificações automatizadas sempre que o aplicativo for atualizado.

Não há necessidade de executar o conjunto completo de verificações automatizadas. Um pacote de regressão de fumaça rápida deve ser suficiente para detectar qualquer problema importante.

Feedback rápido

Outra grande vantagem das verificações automatizadas é o feedback rápido que recebemos quando o aplicativo é atualizado. Idealmente, a equipe de desenvolvimento deve corrigir todas as falhas assim que surgirem, antes de passar para outras tarefas.

Observe que esse feedback rápido só pode ser obtido com testes de unidade e testes de API. Se testarmos a funcionalidade da IU ou no nível do sistema, os testes podem levar muito tempo para serem concluídos.


Execução rápida de verificações

As verificações automatizadas podem demorar um pouco para serem processadas. No entanto, quando os executamos, eles geralmente são rápidos e podem passar por várias etapas muito mais rápido do que um humano. Portanto, eles ajudam a fornecer um feedback rápido para a equipe de desenvolvimento.

Isso é especialmente verdadeiro no caso de cenários baseados em dados.

Libera o tempo dos testadores

O melhor uso de verificações automatizadas são os testes de regressão.

Automatizar testes de regressão nos libera o tempo dos testadores, para que eles possam se concentrar mais em testes exploratórios de novos recursos.


Da mesma forma, quando implementadas corretamente, as verificações automatizadas podem ser executadas automaticamente com o mínimo ou nenhuma supervisão ou intervenção manual.

A equipe de desenvolvimento pode contribuir

As verificações automatizadas geralmente são escritas no mesmo idioma do aplicativo em teste. Por este motivo, a responsabilidade de escrever, manter e executar os testes passa a ser uma responsabilidade compartilhada.

Todos na equipe de desenvolvimento podem contribuir, não apenas os testadores.



Desvantagens da automação de teste

Quais são as desvantagens da automação de teste?


Falsa sensação de qualidade

Cuidado para não passar nos testes! Isso é especialmente importante para verificar a funcionalidade no nível da IU ou do sistema.

Uma verificação automática verifica apenas o que foi programado para verificar.

Todas as verificações automatizadas em um conjunto de testes podem ser aprovadas, mas pode haver grandes falhas não detectadas. A razão para isso é porque a verificação automática não foi codificada para “procurar” essas falhas.

Solução: assegure-se de projetar bons cenários de teste antes de automatizá-los. Uma verificação automatizada é tão boa quanto o design do teste. Complemente também as verificações automatizadas com testes manuais / exploratórios.


Não confiável

As verificações automatizadas podem falhar devido a vários fatores. Se as verificações automatizadas continuarem falhando devido a problemas que não sejam bugs genuínos, elas podem disparar alarmes falsos.

Por exemplo, as verificações automatizadas podem ser interrompidas devido a uma alteração da interface do usuário, um serviço desativado ou problemas com a rede.

Esses problemas não são diretamente do aplicativo em teste, mas podem afetar o resultado das verificações automatizadas.

Solução: Sempre que possível / aplicável, use stubs. Os stubs superam problemas de conectividade ou alterações nos sistemas de terceiros. Portanto, as verificações automatizadas seriam independentes de quaisquer falhas downstream.

Automação de teste não está testando

Infelizmente, muitas pessoas confundem “Automação de Teste” com Teste.

Assim que tiverem as ferramentas para automatizar os testes, eles querem “automatizar todos os testes”. Eles querem se livrar de todos os “testadores manuais”.

A verdade é que o teste é um exercício de exploração. O teste requer conhecimento de domínio, uma mente focada e vontade de aprender a aplicação.

Testar não é apenas executar um conjunto de etapas de teste predefinidas e comparar os resultados reais com os resultados esperados. Este é o trabalho das verificações automatizadas.

Para testar adequadamente um aplicativo, uma inteligência humana é sempre necessária.

Solução: Entenda que, para uma entrega bem-sucedida de um projeto, você precisa de testes automatizados e manuais.

Um não é um substituto do outro; complemente as verificações automatizadas com testes manuais / exploratórios.

Tempo e esforço de manutenção

Você tem que aceitar o fato de que os testes automatizados requerem manutenção. À medida que o aplicativo em teste evolui, o mesmo ocorre com as verificações automatizadas.

As verificações automatizadas duram pouco. Se os pacotes de regressão não forem mantidos atualizados, você começará a ver todos os tipos de falhas.

Talvez algumas verificações não sejam mais relevantes. Ou talvez as verificações não sejam uma representação verdadeira das novas implementações.

Essas falhas podem poluir os resultados do teste.

Embarcar na automação de testes não é um esforço isolado. Para obter o máximo das verificações automatizadas, elas devem ser mantidas atualizadas e relevantes. Isso requer muito tempo, esforço e recursos.

Solução: Como o fator de manutenção é uma atividade contínua, invista tempo no projeto de uma boa estrutura. Use módulos reutilizáveis, separe os testes da estrutura e use bons princípios de design para aliviar o esforço de manutenção.

Feedback lento

Quando uma funcionalidade está pronta para ser testada, na maioria das vezes é mais rápido fazer uma verificação manual.

O problema é que as verificações automatizadas podem levar muito tempo para serem processadas, dependendo da complexidade do teste. Portanto, fazer uma verificação manual fornece um feedback mais rápido do que criar scripts, executar e verificar os resultados.

Além disso, em termos de IU e teste de nível de sistema, as verificações automatizadas podem levar muito tempo para serem concluídas e relatadas. Portanto, se houver um bug genuíno, podemos não estar cientes até que todos os testes tenham terminado.

Solução: Tente automatizar os testes junto com o desenvolvimento para que, quando o desenvolvimento for concluído, você possa executar os testes automatizados na nova funcionalidade.

Além disso, separe os cheques automatizados em pacotes diferentes.

Um pacote de regressão de fumaça deve ser super rápido. Os testes devem apenas verificar se o aplicativo pode ser iniciado e acessado.

Em seguida, você pode ter um pacote de regressão funcional que verifica as principais funcionalidades.

Outro pacote de regressão pode incluir todos os testes de ponta a ponta e testes detalhados. Essas verificações podem ser executadas durante a noite.

Um exemplo de execução noturna são as verificações automatizadas entre navegadores. Normalmente, eles demoram muito para serem executados em todos os navegadores.

Não foram encontrados muitos bugs

A maioria dos bugs parece ser encontrada por “acidente” ou durante a execução de testes exploratórios.

Isso provavelmente ocorre porque, em cada sessão de teste exploratório, poderíamos testar o aplicativo de maneiras diferentes.

Por outro lado, as verificações de regressão automatizadas sempre seguem um determinado caminho. Às vezes, com o mesmo conjunto de dados de teste. Isso reduz a chance de encontrar novos defeitos no aplicativo.

Além disso, o número de bugs de regressão parece ser menor do que os bugs de novos recursos.

Solução: Tente criar aleatoriedade no cenário e nos dados. Tentar caminhos diferentes com dados diferentes a cada vez pode revelar possíveis problemas.



Conclusão

Nesta postagem, vimos algumas das vantagens e desvantagens dos testes automatizados. Quando estamos envolvidos na automação de testes, devemos considerar os pontos acima para obter o máximo benefício.