• Nenhum resultado encontrado

A geração de sequências de teste guiada pelo teste baseado em busca multiobjetivo (do inglês Multi-Objective Search-based Testing, MOST), proposto em [55], auxilia a atividade de teste através da geração automática de sequências de entrada para modelos de máquina de estados nitos estendida (MEFE). O método faz uso de dois conceitos: teste baseado em modelo e teste baseado em busca. Neste contexto, o MOST deriva as sequências automaticamente a partir de modelos, utilizando um algoritmo meta-heurístico.

Para executar o MOST, além do modelo descrito em MEFE, é necessário também um modelo executável da MEFE. O modelo executável é utilizado visando evitar a geração de sequências de entrada para caminhos infactíveis.

As etapas básicas do método consistem em: denir uma especicação M em MEFE, gerar o modelo executável de M e validar M, pré-processar M, gerar as sequências de entrada (eventos e dados paramétricos) e avaliar os caminhos gerados.

A especicação sob teste deve estar de acordo com os requisitos do sistema. Esta é uma etapa que depende muito da habilidade e competência dos projetistas. Após a especica- ção ser validada, um modelo executável é gerado a partir dela. Com o modelo executável, é possível de se obter dinamicamente os caminhos de transições disparados pelos eventos e dados paramétricos gerados pelo MOST durante a execução do algoritmo. Assim, é possível descobrir quais caminhos são factíveis e quais são infactíveis, a m de evitar os caminhos infactíveis. Um caminho infactível é um caminho que existe sintaticamente no modelo, mas que, não pode ser exercitado semanticamente. Algumas transições podem conter uma condição de guarda, e condições de guarda podem utilizar-se dos valores das variáveis e dos parâmetros de entrada do modelo. Para uma transição ser ativada, a con- dição de guarda deve ser satisfeita. Se o contexto do modelo restringe que um requisito de teste seja satisfeito, diz-se que o caminho é infactível, ou seja, uma transição alvo não pode ser exercitada devido ao contexto do modelo.

Antes de iniciar a etapa de geração, é realizado um pré-processamento, o qual visa fornecer ao algoritmo de geração as informações necessárias para sua inicialização. O MOST realiza uma análise de dependência das transições do modelo na etapa de pré- processamento do modelo. Dois conjuntos são fornecidos para cada transição: o conjunto das transições que dependem de controle e/ou dados (TA), e o conjunto das transições críticas, transições que desviam o uxo do caminho alvo (TC ). Estes dois conjuntos são utilizados pelo MOST. Os caminhos que contêm transições em TA são graticados, e tendem a estar próximos à solução nal, enquanto que os caminhos que contêm transições em TC são penalizados.

A última etapa consiste na geração das sequências de entrada, com auxílio de um algo- ritmo meta-heurístico. O algoritmo meta-heurístico utilizado pelo MOST é um algoritmo evolutivo denominado M-GEOvsl. São utilizadas duas funções objetivo no M-GEOvsl: uma função cujo objetivo é garantir a cobertura da transição alvo e das transições em TA (F1 ), outra função cujo objetivo é encontrar sequências de entrada de tamanho mínimo ótimo (F2 ).

Com os objetivos denidos em F1 e F2, as sequências de entrada para o modelo são geradas, as quais exercitam somente caminhos factíveis de tamanho mínimo ótimo.

F2 tem também a função de reduzir custos computacionais através do MOST. Maiores detalhes sobre o MOST podem ser encontrados em [55].

Teste de Mutação Baseado em Modelo

de Estados

Os primeiros trabalhos sobre teste de mutação são todos voltados ao teste de programas. Muitos operadores foram propostos para a maioria das linguagens de programação mais utilizadas tal como Fortran, C e Java.

Contudo, houve um crescimento também em pesquisas sobre teste de mutação de especicações de sistema, principalmente em especicações formais de sistema. A análise de mutantes pode ser útil quando se deseja avaliar conjuntos de teste visando aperfeiçoá- los. Durante a modelagem do sistema é possível que os analistas de software por engano introduzam defeitos na própria modelagem. Uma modelagem de sistema defeituosa resulta em um sistema defeituoso. É importante que a modelagem do sistema seja validada para que não haja este tipo de problema.

No contexto de mutação de especicação, foram propostos operadores de mutação para diferentes tipos de modelos de software. Os modelos de máquina de estados são os mais abordados em pesquisas sobre teste de mutação de especicação. Conjuntos de operadores foram propostos e avaliados para modelos de: MEF, MEFE, Statecharts, máquina de estados da UML, entre outros.

4.1 Operadores de Mutação de Máquina de Estados Fi-

nita

Operadores de mutação interferem diretamente na efetividade e custo do teste com mu- tantes. A seleção dos operadores de mutação é um problema crítico para o teste, pois cada operador difere tanto na quantidade de requisitos derivados para teste quanto no esforço gasto com a geração e execução dos mutantes gerados.

O trabalho de Fabbri et. al. [40] pode ser considerado pioneiro no projeto de opera- dores de mutação para MEF. Para isto, os autores se basearam nos seguintes conceitos: assume-se que a hipótese do programador competente é válida e que o conjunto de opera- dores de mutação deve subassumir requisitos mínimos de teste, por exemplo, subassumir o critério de percorrer todas as transições.

O conjunto de operadores proposto é baseado também nas classes de erros denidas no 27

extras e ausentes. Erros de operação são produzidos alterando-se as funções de saída do modelo. Erros de transferência são produzidos alterando-se as funções de transição, alterando o próximo estado.

O conjunto de operadores de mutação propostos por Fabbri et. al. [40] é composto pelos seguintes operadores de mutação:

a) Alteração do estado inicial; b) Ausência de transição;

c) Ausência de evento; d) Permutação de evento;

e) Estado extra/ausente;

f) Permutação de função de saída; g) Ausência da função de saída; h) Função de saída extra.

A Figura 4.1 ilustra a aplicação dos operadores de mutação em um modelo de exemplo. Note que existe apenas um único evento para todos os estados do modelo original, nesse caso o operador de mutação ausência de transição e o operador de mutação ausência de evento produzem os mesmos resultados.

4.2 Operadores de Mutação de Máquina de Estados Fi-

Documentos relacionados