A utilização da inteligência artificial (IA) na automação de testes é a tendência mais recente na garantia da qualidade. Os testes, em geral, e a automação de testes, em particular, parecem ter sido contagiados pelo vírus de que “tudo fica melhor com IA”.
Uma vez que a IA, a aprendizagem automática e as redes neuronais são o assunto do momento, talvez fosse inevitável que a IA acabasse por chegar à automação de testes de alguma forma.
Um pouco de contexto sobre a automação de testes
Lembro-me de uma altura, há vários anos, quando a automação de testes ainda era recente, em que uma das minhas equipas de garantia da qualidade estava a trabalhar num projeto para um grande cliente. Tratava-se de uma aplicação móvel com milhões de utilizadores e ciclos de lançamento mensais. A equipa de garantia da qualidade costumava estar descontraída durante as duas primeiras semanas do ciclo e a trabalhar freneticamente daí até ao lançamento — um dos efeitos secundários peculiares do desenvolvimento ágil de software sobre os quais não se lê nas manchetes!
Por fim, um dos responsáveis pela garantia da qualidade, farto de não fazer nada durante aquelas duas semanas mais calmas, começou a trabalhar numa estrutura para a automação de testes. Escreveu alguns scripts de teste em Ruby com Selenium / Appium e Jenkins para um pipeline rudimentar, incluindo relatórios bastante apelativos com indicadores Vermelho / Amarelo / Verde para indicar a falha ou o sucesso dos testes.
Conseguiu fazê-lo durante alguns ciclos de lançamento. Foi então que o apresentámos ao nosso responsável máximo pela Qualidade, que o apresentou aos nossos clientes e os entusiasmou o suficiente para pagarem pela automação de testes como subprojeto. Estávamos nas nuvens, na vanguarda de tudo!
A vanguarda adquiriu, no entanto, um novo significado alguns meses mais tarde, quando descobrimos aquela verdade fundamental sobre a automação de testes com que qualquer engenheiro de automação de garantia da qualidade competente se debate atualmente:

Porque razão digo isto? Porque, pouco tempo depois, sentíamo-nos como Alice na terra de Mordor, a correr como loucos com a Rainha Vermelha:

Tínhamos acabado de descobrir a dura realidade da armadilha da automação de testes: um dos nossos engenheiros de garantia da qualidade tinha de manter o conjunto de testes automatizados atualizado em relação à aplicação quase a cada ciclo de lançamento, porque as alterações surgiam a um ritmo alucinante!
Bastava alterar o nome de um campo para que os nossos testes de software automatizados descessem pela proverbial toca do coelho. O início de um novo lançamento era especialmente problemático, pois a equipa de desenvolvimento de software fazia imensas adições novas.
A automação de testes não sofreu alterações fundamentais desde então, porque continua a exigir monitorização e manutenção contínuas. Qualquer possibilidade de melhoria significativa na abordagem e na implementação só surgiu com os avanços recentes nas capacidades da IA.
O entusiasmo em torno da IA versus a realidade
A tecnologia de IA, na sua forma atual, consiste sobretudo na utilização de algoritmos de aprendizagem automática para treinar modelos com volumes de dados relativamente grandes e, em seguida, utilizar os modelos treinados para fazer previsões ou gerar um resultado pretendido. Quase tudo na IA se enquadra nesta descrição, reconhecidamente demasiado simplificada. No entanto, no que nos diz respeito, a principal questão aqui é:
Será que a IA conseguirá realmente ajudar a gerar e atualizar automaticamente casos de teste? Encontrar erros? Melhorar a cobertura do código?
A resposta a essa pergunta está longe de ser clara neste momento, porque estamos no auge do ciclo de entusiasmo em torno da IA. Um subcampo específico, a aprendizagem profunda, esteve na origem de grande parte deste entusiasmo.

O que considero mais interessante neste gráfico é o seguinte:
Se a Siri deveria já ter ultrapassado a curva do entusiasmo, então ainda estamos muito longe do Kansas, Dorothy!
Quero dizer, conheço muitas pessoas que têm de repetir o que dizem para conseguir que a Siri as compreenda (sem ofensa para os fãs da Siri. A sério 😉).
A curva do entusiasmo mostra-nos que existe muito entusiasmo relativamente ao potencial da IA, que diminui antes de todos entrarem no modo rotineiro do dia a dia. Em termos simples, o que o elegante gráfico da Gartner está a dizer é o seguinte:

No entanto, embora ainda estejamos muito longe da singularidade, a IA, na sua forma atual, continua a ter potencial para melhorar significativamente a automatização de testes.
Como é que a aprendizagem automática produz testes automatizados?
- Treino: Na fase de treino, o modelo de aprendizagem automática precisa de ser treinado com um conjunto de dados organizacional específico, incluindo a base de código, a interface da aplicação, os registos, os casos de teste e até os documentos de especificação. Não dispor de um conjunto de dados de treino suficientemente grande pode reduzir a eficácia do algoritmo.
Algumas ferramentas têm modelos pré-treinados que são atualizados através de aprendizagem contínua para aplicações específicas, como os testes de interfaces de utilizador, de modo a que a aprendizagem generalizada possa ser utilizada numa organização específica. - Geração de resultados / saídas: Dependendo do caso de utilização, o modelo gera casos de teste, verifica se os casos de teste existentes abrangem o código, a completude e a exatidão, e até executa testes. Em todos os casos, um testador precisa de verificar o resultado gerado para o validar e garantir que é utilizável.
Se usarmos a analogia dos carros autónomos, os resultados são mais semelhantes a assistência à condução do que a um verdadeiro carro sem condutor. - Melhoria contínua: À medida que uma organização continua a utilizar regularmente a ferramenta, os dados de treino vão aumentando, aumentando potencialmente a precisão e a eficácia das redes treinadas existentes. Em suma, o sistema de IA continua a aprender e a melhorar.
Os algoritmos de aprendizagem automática estão a revolucionar a automatização de testes. Para encontrar ferramentas que incorporam estes algoritmos avançados, consulte o nosso guia das melhores ferramentas de teste de software
Aplicações da IA na automatização de testes
Vamos analisar mais detalhadamente algumas aplicações da IA na automatização de testes, incluindo testes unitários, testes de interfaces de utilizador, testes de API e a manutenção de uma suite de testes automatizados.
Have an account? Log In
Criar e atualizar testes unitários
Os testes unitários, frequentemente utilizados como parte dos testes contínuos, da integração contínua / entrega contínua (CI / CD) em DevOps, podem ser uma verdadeira dor de cabeça no… cinturão de asteroides.
Normalmente, os programadores passam uma quantidade significativa de tempo a criar e a manter testes unitários, o que não é nem de perto tão divertido como escrever código de aplicações. Neste caso, os produtos baseados em IA para a criação automatizada de testes unitários podem ser úteis, especialmente para as organizações que planeiam introduzir testes unitários numa fase tardia do ciclo de vida do produto.
Benefícios:
- Os testes unitários automatizados baseados em IA representam um avanço significativo relativamente à geração automatizada de testes unitários baseada em modelos, que utiliza análise estática ou dinâmica. Os testes assim gerados são código real, não apenas esqueletos.
- Os testes unitários baseados em IA podem ser gerados muito rapidamente, o que é útil para uma base de código existente de grandes dimensões.
- Os programadores só precisam de modificar os testes e podem configurar a suite de regressão unitária com relativa rapidez.
Limitações:
- Os testes unitários gerados por IA limitam-se a espelhar o código no qual se baseiam. Ainda não conseguem adivinhar a funcionalidade pretendida do código. Se o código não se comportar como pretendido, o teste unitário gerado para esse código refletirá esse comportamento não pretendido.
Esta é uma desvantagem significativa, porque o objetivo principal dos testes unitários é impor e verificar um contrato implícito ou explícito. - Os testes unitários gerados através de aprendizagem automática podem quebrar testes unitários existentes que funcionam, cabendo ao programador garantir que isso não acontece.
- Os programadores precisam de escrever eles próprios os testes para lógicas de negócio complexas.
Testes automatizados de interfaces de utilizador
Esta é uma área em que a IA está a começar a destacar-se. Nos testes de interface do utilizador baseados em IA, as ferramentas de automatização de testes analisam o DOM e o código relacionado para determinar as propriedades dos objetos. Também utilizam técnicas de reconhecimento de imagem para navegar pela aplicação e verificar visualmente os objetos e elementos da interface do utilizador, de modo a criar testes da interface.
Além disso, os sistemas de testes de IA utilizam testes exploratórios para encontrar erros ou variações na interface do utilizador da aplicação e gerar capturas de ecrã para posterior verificação por um engenheiro de garantia de qualidade. Do mesmo modo, os aspetos visuais do Sistema Sob Teste (SUT), como o esquema, o tamanho e a cor, podem ser verificados.
Benefícios:
- Os testes automatizados da interface do utilizador podem levar a um aumento da cobertura do código.
- Pequenas variações na interface do utilizador não fazem com que o conjunto de testes falhe. Os modelos de IA do produto conseguem lidar com estas situações.
Limitações:
- Em qualquer aplicação moderna, o número de plataformas, versões da aplicação e versões dos navegadores é elevado. Não é claro até que ponto a automatização da interface do utilizador baseada em IA funciona nestas condições. No entanto, as ferramentas de testes na nuvem podem executar testes em paralelo, pelo que este será um espaço interessante de acompanhar!
Utilizar a IA para auxiliar nos testes de API
Mesmo sem IA, automatizar os testes de API é uma tarefa complexa, uma vez que envolve compreender a API e, em seguida, configurar testes para uma multiplicidade de cenários, de modo a garantir uma cobertura abrangente e aprofundada.
As atuais ferramentas de automatização de testes de API, como a Tricentis e a SoapUI, registam as atividades e o tráfego da API para os analisar e criar testes. No entanto, modificar e atualizar os testes exige que os testadores se debrucem sobre os pormenores das chamadas REST e dos parâmetros, atualizando depois o conjunto de testes da API.
As ferramentas de automatização de testes de API baseadas em IA tentam atenuar este problema examinando o tráfego e identificando padrões e ligações entre chamadas de API, agrupando-as efetivamente por cenário. As ferramentas também utilizam testes existentes para aprender sobre as relações entre APIs, usam-nas para compreender alterações nas APIs e atualizam testes existentes ou criam novos testes baseados em cenários.
Benefícios:
- Para testadores principiantes ou sem experiência em programação, isto pode ser muito útil para começarem imediatamente.
Mais uma vez, a gestão de alterações seria significativamente mais fácil, uma vez que pelo menos algumas das alterações à API podem ser tratadas por uma ferramenta de automatização baseada em IA.
Limitações:
- De um modo geral, é difícil configurar os testes de API e poucas ferramentas oferecem capacidades baseadas em aprendizagem automática neste domínio. As que oferecem parecem ter capacidades bastante rudimentares.
Manutenção da automatização de testes
As ferramentas baseadas em IA podem avaliar alterações ao código e corrigir vários testes existentes que não estejam alinhados com essas alterações, especialmente quando as alterações ao código não são demasiado complexas. As atualizações aos elementos da interface do utilizador, aos nomes dos campos e a outros elementos semelhantes já não têm necessariamente de fazer falhar o conjunto de testes.
Algumas ferramentas de IA monitorizam os testes em execução e experimentam variantes modificadas para os testes que falharam, escolhendo elementos da interface do utilizador com base no melhor ajuste. Também podem verificar a cobertura dos testes e preencher as lacunas, se necessário.
More Articles
Geração de dados de teste baseada em IA
A geração de dados de teste é outra área promissora para os modelos de IA. A aprendizagem automática pode gerar facilmente conjuntos de dados, como fotografias de perfil pessoais e informações como a idade e o peso, com base em modelos de aprendizagem automática treinados que utilizam conjuntos de dados de produção existentes para aprender.
Deste modo, os dados de teste gerados são muito semelhantes aos dados de produção, o que é ideal para utilizar em testes de software. O modelo de aprendizagem automática que gera os dados chama-se Rede Adversarial Generativa (GAN).
Ferramentas de automatização de testes que utilizam aprendizagem automática
Consulte as ferramentas abaixo se procura software que utilize aprendizagem automática para realizar e acompanhar testes automatizados. Muitas incluem opções de código aberto ou sem código para responder às necessidades da sua equipa de testes.
Conclusão
A inteligência artificial teve um impacto significativo nas ferramentas e nos métodos de teste, e particularmente na automatização de testes. Uma análise geral das ferramentas atuais que prometem utilizar IA mostra que, embora estejam a ser adicionadas muitas funcionalidades novas, várias dessas funcionalidades ainda estão a caminho da maturidade.
Se considerou este artigo útil, subscreva a newsletter The QA Lead e mantenha-se a par de todas as atualizações mais recentes no mundo dos testes.




