Machine Learning, o aliado perfeito para priorizar casos de teste
Atualmente, com a pressão crescente para a disponibilização contínua de soluções de software inovadoras, torna-se crítico ter uma forma ágil e rápida de colocar nova tecnologia em produção.
O Machine Learning apresenta-se como o aliado perfeito para priorizar casos de teste.
O Machine Learning vem resolver esta questão. Através da tecnologia conseguimos produzir uma lista de casos de teste ideais para cada fase de regressão.
Depois de conhecermos o que se pretende analisar, basta escolher o melhor algoritmo, ou seja, aquele que melhor se ajusta à situação em análise.
Como sabemos, o modelo de programação tradicional tem como base de trabalho os dados e o programa de desenvolvimento. O resultado surge através da computação.
Ao recorrermos ao Machine Learning, a base de trabalho são os dados e os resultados que procuramos obter, depois, através da computação, encontramos o programa ideal para determinar os testes adequados a cada situação.
Machine Learning, do que se trata afinal?
O termo Machine Learning, que em português poderíamos definir como aprendizagem das máquinas, refere-se a um ramo da inteligência artificial alicerçado num método de análise de dados que automatiza a construção de modelos analíticos.
Através desse modelo de análise, os sistemas podem aprender com os dados, ou seja, conseguem identificar padrões e tomar decisões com o mínimo de intervenção humana.
Modelos de Machine Learning
1. Modelo de Classificação – este modelo deverá ser utilizado quando queremos saber se uma imagem introduzida no sistema pertence à categoria humana ou animal.
2. Modelo de Regressão – este modelo é ajustado às situações em que pretendemos prever um preço, e não uma categoria. Imaginemos, por exemplo, o seguinte cenário: o dado é um T3 no Porto com jardim e piscina. Com este modelo conseguimos saber o valor de mercado da moradia.
3. Modelo de deteção de anomalias – este modelo é ideal para situações em que procuramos prever anomalias, como burlas bancárias.
4. Modelo de agrupamentos – este modelo é recomendado para os casos em que pretendemos descobrir a estrutura de um conjunto variado de dados aleatórios. Por exemplo, para um determinado número de previsões de vendas de várias empresas é possível dividir essas empresas por setor de atividade.
Random Forest, o algoritmo ideal para testes de software
Voltando ao início, ou seja, ao caso que nos trouxe até aqui - os testes de software - devemos utilizar o algoritmo Random Forest, de classificação e de regressão, pois pretendemos saber a categoria dos casos de teste e, mais importante, queremos priorizá-los.
O primeiro passo para lá chegarmos é definir quais são os parâmetros mais importantes de um caso de teste e com maior impacto na próxima entrega.
Nesta análise é importante ter em consideração a severidade e o número de bugs detetados, as áreas que serão alvo de atualizações num curto espaço de tempo ou o número de cenários em que correu o caso de teste.Depois de criar uma folha csv com os parâmetros definidos, temos o nosso primeiro modelo de dados.
O próximo passo será treinar o algoritmo de Machine Learning para nos dar os melhores resultados.
É também possível utilizar os check ins no código para perceber quais as áreas do produto que tiveram alterações, e ainda ter um ranking de qualidade de código por programador. Baixos valores de qualidade de código levam à necessidade de mais casos de teste.
Aplicabilidade da priorização de casos de teste
A priorização de casos de teste pode ser aplicada às seguintes situações:
1. Testes manuais – para saber a lista de casos de teste a usar nos próximos testes de regressão.
2. Teste automáticos – selecionar e priorizar os casos de teste automáticos que são executados.
3. Testes de validação – no caso de apenas termos poucas horas para validar o produto, podemos encontrar primeiro os bugs mais críticos.
Independentemente da tecnologia usada para testar os produtos, escusado será dizer que quanto maior for a qualidade do desenvolvimento do código, melhores serão os índices de qualidade dos testes e melhores serão as soluções disponibilizadas ao mercado. E essa é a grande missão de todos os engenheiros de sistemas.