IA em automação de testes

De acordo com diversos artigos que listam tendências para área de Quality Assurance,  um dos temas mais constantes é o crescente uso de  IA (Inteligência Artificial) em testes de software. Mas antes de aprofundarmos neste assunto, é importante esclarecer alguns conceitos e desmitificar o termo.

O que é  a IA?

É muito comum a confusão existente entre os conceitos de IA, Machine Learning e Deep Learning.

 

Fonte: https://buzzrobot.com/difference-between-artificial-intelligence-machine-learning-and-deep-learning-ccfd779eca7b

Enquanto a IA é um ramo da ciência da computação que estuda replicar ou simular a inteligência humana em uma máquina de forma geral, Machine Learning é uma técnica  pertencente ao campo da IA, onde utiliza algoritmos para coletar dados, aprender com os dados coletados e realizar uma determinada tarefa. Já Deep Learning é uma técnica de Machine Learning onde há divisão de “camadas” de algoritmos capaz de realizar predições mais assertivas.

 

Como a IA pode ser utilizada em testes de software?

Fonte:https://smartbear.com/resources/ebooks/artificial-intelligence-for-faster-and-smarter-ui/

Diversas áreas do teste de software  podem ser beneficiadas com a utilização de conceitos e técnicas de IA. Abaixo há algumas das principais formas de utilização, não se limitando somente a testes automatizados:

 

  • Testes de Interface

Em Testes de Interface utilizamos ferramentas que simulam a interação do usuário através de ações em elementos presentes na tela. Há recursos de IA que auxiliam na identificação de elementos mais complexos através de reconhecimento de imagem. Por exemplo, podemos utilizar uma vasta biblioteca de imagens de um botão “Play”, assim o algoritmos irá procurar por um botão que possua o mesmo padrão de imagem para interagir, sem a necessidade de especificar atributos do elemento para encontrá-lo.

 

  • Testes Visuais

Em Testes Visuais visamos garantir que a aplicação se apresente para o usuário conforme o proposto (posição dos elementos em tela, cor dos elementos, etc). Para isso há recursos de IA que visam verificar se a cor, tamanho, formato e posição dos elementos em tela estão de acordo com o esperado.

 

  • Testes de API

Existem recursos de IA que analisam a interação do usuário através da interface para criar cenários de testes de API, reduzindo as habilidades técnicas necessárias para adotar o teste de API e auxiliando as organizações a criar uma estratégia abrangente de teste de API escalável.

 

  • Execução de Testes de acordo com a necessidade

Quando utilizamos recursos de integração contínua para testes automatizados, na maioria das vezes todos os cenários serão executados independente de quais alterações foram realizadas na aplicação. Isto aumenta o tempo de execução já que cenários que não estavam envolvidos diretamente ou indiretamente com as alterações serão executados. Há recursos que ao iniciar um pipeline de integração contínua  de testes automatizados, identificam quais alterações ocorreram na aplicação e quais cenários de testes são impactados com estas mudanças, fazendo com que somente tais cenários sejam executados.

 

  • Spidering AI

Uma das funcionalidades mais interessantes do uso de IA em testes é a criação de cenários através de Machine Learning. Apesar de ser uma área muito nova ainda e existir poucos recursos, futuramente poderá trazer uma redução no tempo gasto para criação de testes além de auxiliar a entender quais partes da aplicação devem ser testadas prioritariamente.

 

  • Garantir execução diante de pequenas alterações

É muito comum a necessidade de manutenção em scripts de testes automatizados. Seja porque houve alterações significativas em determinados fluxos da aplicação, ou seja porque algum elemento teve alterações em seu atributo e isto fez com que o script do teste deixasse de conseguir realizar uma interação com o mesmo. O segundo cenário é muito constante, principalmente em projetos com metodologia Ágil, fazendo com que pequenas alterações cause falhas na execução dos testes.

Para contornar tal tipo de situação, há recursos que realizam uma “varredura” durante a execução para que quando um determinado elemento não for encontrado devido a alteração de algum atributo,  o algoritmo encontre outra alternativa para encontrar o elemento e dar continuidade ao teste, sem dar como teste falho devido a uma pequena alteração em um elemento.

 

Quais ferramentas utilizar?

Já existe um bom número de ferramentas no mercado que utilizam conceitos de IA para facilitar os testes porém em sua maioria, utilizam poucos recursos do potencial uso da IA, já que se trata de uma área consideravelmente nova se tratando de testes de software.

Applitools https://applitools.com/

O Applitools utiliza o conceito de validação visual dos testes através de comparação entre screenshots das telas da aplicação com um baseline. Tem fácil implementação com código de um teste funcional (aceita diversas linguagens como: Java, Javascript, Python, PHP e Ruby) e também para plataformas mobile. Possui uma versão gratuita porém limitada.

 

Testim https://www.testim.io/

 

Utiliza um conceito interessante de pontuação, onde a cada execução do teste, é utilizado um parâmetro de pontuação para identificar qual atributo possui maior confiabilidade para ser utilizado no mapeamento de elementos.

Tem uma vasta integração com outros serviços. Possibilita a criação de testes através de código ou interface e possui uma versão gratuita porém limitada.

 

Sealights https://www.sealights.io/

O Sealights utiliza IA para identificar quais foram as alterações do código da aplicação e quais cenários de teste são impactados, visando proporcionar que somente tais cenários sejam executados, assim minimizando o tempo de execução. Possui uma versão gratuita porém apenas para Java.

 

Test.AI https://www.test.ai/

O Test.AI utiliza conceitos de IA para auxilar a execução de testes automatizados com Selenium ou Appium. Através de uma sintaxe de BDD, reduz a complexidade do código cuidando de toda a parte de localização de elementos e se adaptando de acordo com as mudanças da aplicação. Ainda se encontra em um estado inicial porém vale a pena ficar de olho em suas atualizações.

 

MABL https://www.mabl.com/

O Mabl também utiliza conceitos de validação visual em comparação a um baseline e técnicas de Machine Learning para adaptar o teste de acordo com mudanças na interface. Possui integração com diversos serviços de Integração Contínua. Criação de testes através de interface sem necessidade de código. Possui uma versão trial.

 

ReTest https://retest.de/

O ReTest utiliza conceitos de IA para diversa funcionalidades como: auxiliar na identificação de alterações para testes manuais de regressão, utiliza o “Unbreakable Selenium” fazendo com que a execução do código de teste não seja interrompida caso os elementos não sejam encontrados conforme os atributos utilizados, testes visuais automatizados e criação de testes através de Machine Learning. Possui fácil implementação com o código de testes. Atualmente só disponível para Java. Algumas de suas funcionalidades são gratuitas e open source.

 

ReportPortal https://reportportal.io/

 

O ReportPortal utiliza técnicas de Machine Learning para analisar e auxiliar a construção de relatórios de testes automatizados, facilitando a visualização de resultados das execuções. Ideal para projetos que possuam uma grande massa de dados geradas a partir dos testes já que utiliza o histórico para criar relatórios condizentes com a realidade de cada projeto. Possui uma versão Trial.

 

Functionlize https://www.functionize.com/

O Functionlize utilize Machine Learning para criação e manutenção de testes através de uma interface simples sem a necessidade de código. Assim com outras ferramentas, a cada execução faz alterações nas estratégias de localização de elementos caso haja alterações na aplicação. Possui um conjunto de serviços para diversas áreas de teste. Possui uma versão demo.

 

Outras Ferramentas

Além disso há outras ferramentas que utilizam conceitos de Machine Learning para criação e manutenção de testes de software como Sofy.AI , Appsurify , Endtest.io , Screenster.io , TestComplete entre outras que não foram citadas.

 

Qual o futuro da IA dentro do teste de software?

Como podemos observar, existem diversas funcionalidades e recursos existem que utilizam conceitos de IA para trazer benefícios ao setor de testes de software, porém em sua maioria ainda se encontram em estados iniciais e/ou utilizam pouco potencial das técnicas de IA. Com o passar dos anos novas ferramentas, produtos e novas abordagens têm surgido , facilitando não somente os testes de software como até mesmo o seu desenvolvimento. 

Tem se tornado cada vez mais importante que o QA esteja sempre aprendendo novas tecnologias, frameworks e a Inteligência Artificial é uma das áreas de maior destaque nos últimos anos.

 

Autor: Aldrich Bezerra

Analista de Automação de Testes da Base2

Deixe uma resposta

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