Como a Inteligência Artificial pode ser aplicada nos Testes de Software

Imagem de capa do post Como a Inteligência Artificial pode ser aplicada nos Testes de Software

O teste de software sempre foi uma parte essencial no ciclo de vida de desenvolvimento de um software. Atualmente, os sistemas são testados principalmente de duas formas: automatizada e manual. O teste manual é feito através de pessoas interagindo com o sistema, utilizando técnicas e documentos para analisar o software. Já os testes automatizados são programados para enviar, receber e analisar dados de entrada e saída a partir de parâmetros previamente estabelecidos.

Agora, a inteligência artificial surge para transformar os testes de software. Isso inclui tarefas como otimizar a criação de testes, diminuir a necessidade de manutenção de testes, identificar novas formas de analisar os resultados e até mesmo realizar testes autônomos. Mas primeiro, é importante entender um pouco sobre Machine Learning (Aprendizado de Máquina).

Machine Learning na Inteligência Artificial

A Inteligência Artificial é uma área muito ampla que abrange qualquer coisa em que um computador aplique alguma forma de inteligência para resolver um problema. Isso significa que a máquina pode resolver algum problema sem estar explicitamente programada para isso. O Machine Learning é uma das principais técnicas utilizadas para isso. No aprendizado de máquina, um computador aprende a reconhecer determinados padrões e, em seguida, ele utiliza esse aprendizado para realizar as ações apropriadas. O Machine Learning trabalha com três frentes:

  1. Aprendizado supervisionado: Semelhante a forma de ensinar uma criança a ler, mostra-se ao computador diversos exemplos do que se deseja que ele aprenda e ele descobre como reconhecê-los. Isso significa que é necessário um grande volume de dados rotulados (descritos) para o computador aprender.

  2. Aprendizado não supervisionado: é semelhante ao modo como se aprende um caminho em uma cidade nova. Inicialmente, não se sabe onde estão as lojas ou hotéis, mas com o tempo, aprende-se onde estão e como os diferentes locais se relacionam. Da mesma forma, um computador pode examinar um conjunto de dados não rotulados e identificar padrões e relacionamentos nos dados.

  3. Aprendizado por reforço: é semelhante a forma de aprender a andar. Inicialmente os bebês não conseguem se sustentar de pé. Depois de um tempo, eles aprendem a engatinhar, então eles dão alguns passos, depois aprendem a andar e, por fim, até aprendem a correr. Com o tempo, eles vão aprendendo a se equilibrar e se mover. Ao fazer errado eles caem. Quando fazem certo são elogiados por seus pais e sentem uma sensação de realização. De maneira semelhante, no aprendizado por reforço, o computador recebe algumas formas de “recompensa” quando tomam boas decisões e, com o tempo, ficam cada vez melhores em fazer as escolhas certas.

Existem várias outras formas de Inteligência Artificial, tais como Visão Computacional, Processamento de Linguagem Natural e Aprendizado profundo, mas que não serão contextualizadas neste artigo.

Como a Inteligência Artificial é aplicada no teste de software

Existem três áreas principais que a aplicação de Inteligência Artificial no teste de software pode ajudar:

Criação de testes de software

O teste automatizado requer que sejam criados e executados testes. Tradicionalmente, isso significa usar um framework, como por exemplo, o Selenium. O Selenium replica as ações de um “usuário real” interagindo com a interface do sistema. Ele faz isso usando uma combinação de seletores de elementos e ações. Os seletores permitem identificar o elemento correto na tela. Em seguida, ele pode executar ações como clicar, passar o mouse, inserir texto ou apenas verificar se um elemento existe. Tudo isso é controlado criando um script de teste detalhado. Cada script é um “miniprojeto” de desenvolvimento de software. A criação de um novo script é iterativa e exige rodadas frequentes de teste e depuração. Mesmo um script simples pode levar horas para ser criado.  

A Inteligência Artificial possibilita que os scripts de testes sejam criados facilmente executando os passos de um caso de teste. Sendo assim, o testador poderia criar os scripts de teste em minutos em vez de horas, já que está essencialmente executando o teste manualmente enquanto a Inteligência Artificial paralelamente o automatiza. Em segundo plano, o sistema está construindo modelos de Machine Learning de como o software funciona, registrando enormes quantidades de dados à medida que avança. A Inteligência Artificial pode aprender qual botão está sendo pressionado e por quê, usando técnicas como o Processamento de Linguagem Natural para entender o que o botão faz. Criar um modelo é importante, o que significa que o teste funcionará em qualquer navegador ou dispositivo. Ele ainda lidará com conteúdo dinâmico e plugins de terceiros, como o botão “Comprar agora” de operadoras de pagamento. A Inteligência Artificial pode ajudar também a escrever testes por conta própria e validar caminhos que não foram considerados anteriormente.

Análise de testes de software

Os scripts de teste geralmente são casos de aprovação e falha. O teste funciona verificando se o resultado de uma ação é o que se esperava. Os scripts de teste devem ser programados exatamente com o que procurar para que funcionem. Isso torna a análise de teste muito fácil – ou o teste foi aprovado ou falhou. Mas a realidade pode ser mais complexa.

Idealmente, o teste é sempre confiável. Um teste de software só pode falhar se encontrar um defeito. Em contrapartida, também só deve passar se o comportamento do sistema estiver funcionando conforme o esperado. No entanto, há algumas questões sobre a automação de testes tradicionais.

  1. Os scripts de automação testam funcionalidades para as quais foram programados expressamente, isso pode deixar grandes quantidades da interface do sistema não testadas, a menos que sejam criados os seus testes. Como resultado, pode-se descobrir que há um erro que nenhum dos testes está detectando.

  2. Muitas falhas de teste são “falsos positivos”, ou seja, significa que eles não são realmente “falhos”. Isso ocorre por conta de como os scripts de teste selecionam elementos na página. Esses seletores às vezes são frágeis e podem mudar toda vez que o sistema é atualizado ou redesenhado. 

A Inteligência Artificial pode melhorar a análise de testes de três formas. Primeiro, pode-se aproveitar a visão computacional e o Machine Learning para aumentar a quantidade de cobertura da interface do sistema. Essa abordagem de testes visuais permite comparar a aparência do sistema agora com as execuções de teste anteriores. Se algo mudar inesperadamente, isso pode ser sinalizado como uma falha em potencial. Segundo, ajuda os testes em relação aos “falsos positivos”, tornando-os  menos prováveis, visto que os testes são adaptáveis a alterações na interface do usuário. Em terceiro, os modelos de Machine Learning aprendem constantemente como o sistema deve funcionar. Por exemplo, os modelos podem aprender quanto tempo cada carregamento de página deve levar, usando isso para criar uma espera inteligente antes da primeira interação com a página. Portanto, se uma página de repente demorar mais tempo que o normal para carregar, ele vai saber como relatar isso.

Manutenção de testes de software

Muitas vezes, nas atualizações dos sistemas, quando a interface ou algum fluxo é atualizado, os testes automatizados são quebrados. Isso pode significar horas “perdidas” corrigindo os scripts de testes. Em média, os testadores de software gastam aproximadamente 30% de seu tempo na manutenção dos testes. Um dos principais motivos para que um script de teste precise de manutenção são os seletores. Os seletores são usados ​​para informar ao framework (Por exemplo, o Selenium) com quais elementos ele deve interagir. O problema é que esses seletores tendem a mudar sempre que o sistema muda. Isso acontece muitas vezes independentemente do cuidado na escolha de seletores. E se o seletor mudar, o script falhará imediatamente ou continuará com o elemento errado. De qualquer forma, o resultado exibe uma falha de teste que não precisava ter acontecido.

É possível diminuir a demanda de manutenção de testes aplicando um modelo de Machine Learning no sistema. Se, por exemplo, um componente for alterado, a Inteligência Artificial descobre o que aconteceu e seleciona o componente correto. Também é possível que seja implementado uma edição de testes inteligentes, por exemplo, atualizando um passo de um teste diretamente de um print de tela, usando assim todos os dados já coletados em cada execução anterior do teste. 

Às vezes uma mudança no sistema pode ser mais significativa, como a remoção completa de um botão, ou a alteração de todos os itens do menu. Mesmo assim, a Inteligência Artificial perceberá que há um problema e apresentará sugestões do que pode ter sido mudado. Essas sugestões são baseadas em dados coletados em milhões de testes diferentes. Nesse caso, o testador poderia indicar o cenário correto e o teste seria atualizado.

Tendências na automação de testes com Inteligência Artificial

A utilização de Inteligência Artificial em testes de software ainda é uma novidade, porém está evoluindo aceleradamente como todas as áreas de sua aplicação. A principal tendência que está sendo explorada é em relação aos Testes de Software Autônomos. 

Os testes autônomos de software são uma evolução dos testes automatizados e manuais. Eles têm a capacidade de, não apenas executar, mas de criar um conjunto de cenários e casos de testes sem a intervenção humana. Tudo isso com uso de Machine Learning e Deep Learning (Aprendizado de Máquina Profundo). Em conceito, os testes autônomos são modelos de aprendizagem onde são capazes de avaliar um software, decidir o quê, quando, onde e como os testes devem ser realizados e resumir os resultados para fornecer uma decisão de liberação/não liberação com base nos resultados dos testes.

Compartilhar:
1 Comentário
  1. Everton

    Essa IA é assustadora, vai mudar muita coisa em um futuro breve.

    Responder

Deixe seu comentário

Fale AGORA com um de nossos CONSULTORES

Comentário adicionado com sucesso