A qualidade está nos detalhes

Artigos

Testes Bioinspirados

A geração automática de testes traz inúmeras melhorias para as empresas, aumentando a eficiência e a qualidade do processo, além de livrar a  equipe de testes da tediosa atividade manual, que tem alta probabilidade de ocasionar erros e demanda um tempo significativo.

Atualmente vários grupos de pesquisa estudam formas de aplicar técnicas bioinspiradas ao problema de automação de testes. Estas técnicas buscam as soluções na natureza, simulando alguns aspectos do comportamento dos seres vivos.

Algoritmos Genéticos: o teste baseado na análise de mutantes

Um exemplo bastante famoso são os Algoritmos Genéticos, inspirados em processos evolucionários, tais como seleção natural e mutação. Nesta categoria temos a Análise de Mutantes, um método de teste baseado em falhas que mede quão adequado está um conjunto de casos de teste. As falhas são representadas como mudanças sintáticas simples no programa em teste, que produzem programas mutantes. Essas mutações representam erros comuns que um programador pode cometer e são chamadas de operadores de mutação.

O objetivo do testador é, utilizando os operadores de mutação, produzir um conjunto de mutantes, onde cada mutante se diferencia do programa original através de uma mutação. Quando a saída do programa mutante se diferencia do programa original para algum dos dados de entrada, este mutante é morto, pois o conjunto de dados revela a diferença entre o mutante e o programa original.

No processo de análise de mutantes, o testador insere um caso de teste no programa. O caso de teste é executado na versão original do programa e gera uma saída esperada. Depois o caso de teste é executado nos programas mutantes. Os mutantes são mortos se sua saída não corresponde a do programa original. Se um dos mutantes permanece vivo, então novos casos de teste precisam ser incluídos e os testes devem ser executados novamente com os mutantes vivos.

A análise de mutantes permite avaliar quão bom é o conjunto de casos de teste, verificando a proporção de mutantes vivos. Um conjunto de casos de teste que mata todos os mutantes é dito adequado aqueles mutantes.

Otimizando a Cobertura com Colônia de Formigas

Outra ideia bioinspirada é a Otimização por Colônia de Formigas, baseada no comportamento das formigas na busca por alimentos. Mesmo que as formigas encontrem o alimento por diferentes trilhas, observa-se que, com o passar do tempo, elas tendem a convergir para a menor rota entre o ninho e o alimento.

As formigas estabelecem estas rotas depositando no trajeto uma substância denominada feromônio.  Como as formigas que trafegam pela menor trilha realizam o percurso em menor tempo, a quantidade de feromônio presente nesta trilha acaba sendo maior. O feromônio evapora com o passar do tempo, então o caminho mais curto terá uma quantidade desta substância tão alta, que quase todas as formigas seguirão apenas por ele.

Aplicando a Otimização por Colônia de Formigas ao contexto de teste de software, podemos obter conjuntos de casos de testes pequenos e com grande cobertura. Esse tipo de conjunto de teste possui uma grande aplicação prática, pois geralmente não é possível executar todos os testes devido a restrições de tempo ou custo. Mesmo nesta situação, o testador pode aumentar a cobertura dos testes escolhendo os casos de teste com maior quantidade de feromônio, ou seja, com impacto mais significativo na cobertura do sistema.

Para aplicar esta técnica, o testador deve primeiro definir quais são os parâmetros de entrada do programa e, para cada parâmetro, um conjunto de possíveis valores. Uma trilha corresponde a um caso de teste, sendo formada por um conjunto de valores, onde cada parâmetro possui um valor associado. A probabilidade de uma trilha ser escolhida depende da quantidade de feromônio dos valores que a compõe.

A seleção dos casos de teste ocorre iterativamente. Em uma iteração, as formigas escolhem independentemente qual valor atribuirão em cada um dos parâmetros, gerando ao final da iteração um conjunto de trilhas.

Todo valor possível de um parâmetro possui uma probabilidade associada: quanto maior a quantidade de feromônio depositada no valor e, quanto menor o número de vezes que o valor aparece no conjunto de testes da iteração anterior, maiores as chances de o valor ser escolhido.

Quando todas as formigas chegam ao ponto final, o feromônio de cada valor é atualizado para a próxima iteração. Nesta atualização considera-se quanto do feromônio que havia anteriormente será dissipado, e quanto feromônio cada formiga que passou por ali irá depositar. A quantidade depositada depende da trilha que a formiga produziu: quanto mais cobertura a trilha agrega ao conjunto de testes, maior a quantidade de feromônio.

Este procedimento é repetido até obtermos um conjunto de casos de teste refinado, relativamente pequeno e com a cobertura desejada. Também podemos limitar as repetições através da quantidade de trilhas que já foi gerada.

Muito mais que isso...

Além dos Algoritmos Genéticos e da Otimização por Colônia de Formigas, existem outras técnicas, como os Sistemas Imunológicos Artificiais, baseados na forma como os sistemas imunológicos biológicos combatem ataques de micro-organismos externos e também a Otimização por Enxame de Partículas, que se inspira na forma como um bando de pássaros (ou enxame de insetos) segue o pássaro que está mais próximo do objetivo, o que faz com que um pássaro aprenda com o acerto do outro. As técnicas bioinspiradas surgem como uma nova tendência na automação de testes. A Sofist investe em novas ideias, avaliando e trazendo para o mercado as tecnologias que se destacam.

 

Share Compartilhe esse artigo

Publicado em: 01/11/2010

Autor: Sofist - Intelligent Software Testing

O que fazemos?

Newsletters

Cadastre-se em nosso site para receber nossas novidades em seu e-mail.





©Copyright 2009-2017 - Todos os direitos reservados.