Você está na página 1de 11

Revista de Sistemas de Informao da FSMA

n. 5 (2010) pp. 3-13


http://www.fsma.edu.br/si/sistemas.html

Otimizao em Teste de Software com


Aplicao de Metaheursticas
Fabrcio Gomes de Freitas1, Camila Loiola Brito Maia2, Gustavo Augusto Lima de Campos3.
Jerffeson Teixeira de Souza4
Grupo de Otimizao em Engenharia de Software da UECE (GOES.UECE)
Laboratrio de Computao Natural e Inteligente (LACONI)
Universidade Estadual do Cear (UECE)
Avenida Paranjana, 1700 Fortaleza, CE Brasil
fabriciogf@uece.br, camila.maia@gmail.com, gustavo@larces.uece.br, jeff@larces.uece.br
de Requisitos e Teste de Software.
Resumo Durante a fase de Teste de Software so encontrados
alguns problemas que no podem ser resolvidos com tcnicas
tradicionais da Engenharia de Software. Contudo, tais problemas
podem ser modelados matematicamente e serem resolvidos
atravs de otimizao matemtica, especialmente com uso de
metaheursticas. Nesse contexto, surgiu um recente campo
denominado Search-based Software Engineering (SBSE) que trata
da resoluo de problemas de Engenharia de Software por meio
de tcnicas de otimizao. Dada a importncia da fase de Teste de
Software, uma subrea denominada Search-Based Software
Testing (SBST) se destaca no campo. Este artigo objetiva
apresentar o estado atual desta recente rea de pesquisa e
mostrar seu potencial. Para isso, inicialmente so descritas as
principais metaheursticas empregadas na rea. Em seguida, o
estado da arte da SBST apresentado atravs da descrio dos
principais problemas j modelados e dos resultados j
conseguidos. A partir dos resultados, indicamos que os resultados
so promissores.
Index Terms Teste de Software, Otimizao Matemtica

I. INTRODUO

relevncia da Engenharia de Software notvel para o


importante estgio atual de desenvolvimento de sistemas.
Desde a sua criao na dcada de 1970, importantes avanos
na qualidade do software produzido foram conseguidos devido
pesquisa em modelos, normas e metodologias de suporte ao
desenvolvimento de sistemas [1]. A aplicao de tais mtodos
acontece nos mais diversos aspectos relacionados ao processo
de desenvolvimento, como Planejamento de Projeto, Anlise
1
Fabrcio Gomes de Freitas graduando em Cincias da Computao na
Universidade Estadual do Cear (UECE).
2 Camila Loiola Brito Maia mestranda em Cincias da Computao na
Universidade Estadual do Cear.
3 Gustavo Augusto Lima de Campos Doutor em Engenharia Eltrica pela
Universidade Estadual de Campinas, Professor Permanente do Mestrado
Acadmico em Cincias da Computao da UECE.
4 Jerffeson Teixeira de Souza PhD em Cincia da Computao pela
University of Ottawa, Professor Permanente do Mestrado Acadmico em
Cincias da Computao da UECE.

Infelizmente, em alguns casos, as normas e metodologias


convencionais desenvolvidas pela comunidade cientfica
especializada no so capazes de resolver certos problemas
que acontecem durante o processo de desenvolvimento de
software, ou o fazem de modo insatisfatrio. Isso acontece
com problemas intrinsecamente complexos, como aqueles
envolvendo a seleo de uma soluo em um conjunto
proibitivamente grande de possibilidades. Em problemas desse
tipo so exigidas formas automatizadas de resoluo para que
o problema possa ser resolvido de forma eficiente.
Na fase de Teste de Software, especificamente, so
encontrados problemas que podem ser modelados dessa forma.
Por exemplo, considere a atividade de priorizao de casos de
teste. Esta atividade trata da determinao da melhor ordem de
execuo dos casos de teste de um sistema. A definio da
qualidade de uma ordem realizada por meio de uma mtrica
de cobertura definida matematicamente para calcular o quanto
tal ordem executa cedo todo o sistema. Apesar de tal mtrica
poder ser descrita em texto, a resoluo do problema em si se
mostra em demasia custosa dada a quantidade de permutaes
possveis entre os casos de teste. Assim, a soluo para o
problema de priorizao de casos de teste no pode ser
facilmente descrita por meio de regras textuais ou passos
escritos em documentos e normas. Entretanto, a modelagem
matemtica do mesmo como um problema de otimizao se
mostra conveniente dada a existncia de caractersticas
matemticas especiais deste problema.
Percebeu-se que de fato possvel unir essas duas reas da
computao de forma a possibilitar a resoluo de problemas
que antes no poderiam ser solucionados de forma satisfatria.
Assim, inmeros trabalhos foram realizados nos ltimos anos
demonstrando a aplicabilidade de tcnicas de otimizao
matemtica em diversos problemas da Engenharia de
Software, especialmente em problemas da fase de testes.
Recentemente, percebeu-se que de fato possvel unir essas

Freitas, F. G.; Maia, C. L. B.; Campos, G. A. L.; Souza, J. T./ Revista de Sistemas de Informao da FSMA n. 5 (2010) pp. 3-13

duas reas da computao de forma a possibilitar a


resoluo de problemas que antes nem poderiam ser
solucionados e os termos Search-based Software Engineering
(SBSE) e Search-based Software Testing (SBST) foram
definidos para representar as reas. O uso do termo busca
(search, em Ingls) se d porque as tcnicas de otimizao
utilizadas na resoluo so conhecidas como algoritmos de
busca. Em especial, as tcnicas de otimizao utilizadas so
metaheursticas devido ao fato de as mesmas geralmente
apresentarem boas solues para os problemas, independente
de particularidades da instncia ou do seu tamanho.
O presente artigo apresenta uma reviso bibliogrfica de
trabalhos relacionados ao uso de metaheursticas em
problemas de Teste de Software. Nesse sentido, esta verso
desenvolve uma verso anterior relacionada Engenharia de
Software de forma geral [2] com o intuito de apresentar mais
detalhes aos trabalhos descritos. Dessa forma, pretende-se
alcanar os seguintes objetivos:
Difundir este recente campo de pesquisa para
engenheiros de software para que os mesmos
tenham conhecimento da possibilidade de
resoluo de problemas complexos durante a fase
de desenvolvimento;
Instigar pesquisadores relacionados com sistemas
de informao que com a experincia podem, a
partir do levantamento realizado, adicionar
conhecimento ou ideias para a rea, como a
modelagem de novos problemas;
Servir como base de conhecimento e guia para
futuros pesquisadores interessados no campo,
funcionando como um panorama do estado da arte
da rea e indicando avanos que ainda podem ser
conseguidos.
O artigo inicia com a exposio sucinta da teoria de
otimizao matemtica, incluindo a otimizao multiobjetiva.
Alm disso, so apresentadas cinco metaheursticas
amplamente utilizadas na resoluo de problemas de SBST.
Em seguida, indicamos os fatores que favorecem a utilizao
das tcnicas de otimizao pelas empresas de desenvolvimento
de sistemas como complemento s tcnicas convencionais
atuais. Aps isso, a seo principal apresenta o estgio atual da
pesquisa em SBST, incluindo cinco reas, a saber: gerao de
dados de teste; seleo de casos de teste; priorizao de casos
de teste; testes no funcionais; e testes funcionais. Ao final, a
concluso apresenta consideraes finais sobre o cenrio geral
de aplicaes de metaheursticas em Teste de Software e
indica trabalhos futuros na rea.
II. OTIMIZAO POR METAHEURSTICAS
A atividade de otimizao representa maximizar ou
minimizar uma funo matemtica definida a partir de
coeficientes e variveis. As variveis que definem a funo
podem estar sujeitas a restries, ou seja, as variveis devem
satisfazer um conjunto de equaes definidas de acordo com
cada instncia do problema. Entre as tcnicas que podem ser

utilizadas para resolver problemas de otimizao se encontram


as heursticas. Tais mtodos so caracterizados por, em geral,
serem especficos para o problema a ser resolvido.
O termo metaheursticas foi introduzido por Glover [3] e
representa uma classe de algoritmos genricos de busca.
Assim, metaheursticas so heursticas de forma genrica, ou
seja, que podem ser utilizadas em diferentes tipos de
problemas. Estes mtodos utilizam ideias de diversos domnios
como inspirao para realizar o processo de busca da soluo
para problemas de otimizao. Por exemplo, a metaheurstica
Tmpera Simulada [4] baseada em um processo fsico da
metalurgia. Outros exemplos so os Algoritmos Genticos [5]
que so fundamentados em conceitos da evoluo
populacional.
O processo geral de execuo de uma metaheurstica trata
da busca de solues a partir da visitao de regies do espao
de solues guiando-se por funes de satisfao [6]. A funo
de satisfao uma funo matemtica que atribui um valor a
cada soluo do espao de busca. Para comparao, considere
uma tcnica exaustiva: para determinar a melhor soluo de
um problema, todas as solues existentes so visitadas e ao
final a melhor retornada. Outro tipo de tcnica que pode ser
usada para a resoluo de problemas de otimizao so os
mtodos exatos. Em tal abordagem a busca efetuada a partir
de decises fundamentadas em teoremas matemticos.
O funcionamento das metaheursticas faz com que apenas
algumas das solues existentes sejam visitadas para a
determinao de uma soluo. A maneira como o processo de
busca segue especfico de cada metaheurstica, mas uma
maneira que tenta de forma inteligente encontrar boas
solues. Contudo, no existe garantia de a soluo retornada
por uma metaheurstica ser a melhor possvel.
A utilizao de metaheursticas pode ser justificada devido a
alguns fatores, entre eles [7]:
Complexidade interna do problema que impede a
aplicao de tcnicas exatas;
Quantidade muito grande de possveis solues que
impede a utilizao de tcnicas exaustivas.
Para maior compreenso do tema do presente trabalho, a
seguir descrevemos a teoria de otimizao com mais detalhes.
Alm disso, cinco metaheursticas utilizadas nos trabalhos em
SBST citados neste artigo so explicadas. As metaheursticas
apresentadas esto divididas em duas sees: otimizao
mono-objetivas e otimizao multiobjetivas. A diferena entre
essas classes reside apenas na quantidade de funes atacadas
pelas tcnicas. No caso da otimizao mono-objetiva, as
metaheursticas realizam o processo de busca seguindo apenas
uma funo de satisfao. Em tcnicas de otimizao
multiobjetiva, como o nome sugere, a busca deve considerar
mais de uma funo ao mesmo tempo. Os algoritmos descritos
a seguir so quatro mono-objetivos (Hill-Climbing, Tmpera
Simulada, GRASP e Algoritmos Genticos) e uma
metaheurstica multiobjetiva (NSGA-II).

Freitas, F. G.; Maia, C. L. B.; Campos, G. A. L.; Souza, J. T./ Revista de Sistemas de Informao da FSMA n. 5 (2010) pp. 3-13

A. Otimizao mono-objetiva
Na otimizao mono-objetiva, como apresentado, a busca de
solues realizada de acordo com os valores de uma funo
de satisfao. Assim, se considerarmos um problema de
maximizao e tivermos uma soluo com valor maior que
outra, tal soluo com valor maior de funo de satisfao
melhor que a segunda. O processo continua seguindo este
conceito at que algum critrio de parada, como tempo
mximo de execuo, seja satisfeito.
1) Hill-Climbing
A tcnica Hill-Climbing definida como um mtodo de
busca local de solues [8]. O seu nome, subida de colina,
em uma traduo livre, representa a atividade que efetuada
durante o processo de busca: a partir da soluo corrente a
prxima soluo tomada a partir da vizinhana local de
forma que esta prxima soluo seja melhor que a anterior. O
uso do termo subida uma referncia a problemas de
maximizao, onde o objetivo encontrar solues que
apresentem o maior valor para a funo de satisfao. A
Figura 1, a seguir, ilustra este conceito.

resfriamento, tendo em vista a atividade que este processo


efetua sobre o material.
No processo de tmpera, um material aquecido com altas
temperaturas e, aps, resfriado de forma que ao final de todo
o processo o material se encontre em um estado cristalizado de
energia mnima. Na relao com a otimizao matemtica, o
objetivo minimizar o valor da funo de satisfao a partir
das solues encontradas durante o processo de busca.
Novamente, perceba que a Tmpera Simulada pode ser
aplicada tanto a problemas de maximizao quanto a
problemas de minimizao. Se a funo deve ser minimizada,
o algoritmo j est pronto. No caso de o desejado ser a
maximizao da funo, basta considerar o oposto da mesma,
pois a minimizao do oposto de uma funo corresponde
maximizao da mesma.
O algoritmo Tmpera Simulada, diferentemente da tcnica
Hill-Climbing, permite a aceitao de solues que no
melhoram o valor da funo de satisfao. Por exemplo, em
problemas de minimizao possvel a aceitao para a
prxima iterao de uma soluo com valor maior que a
soluo corrente. Estas aceitaes contra o objetivo so
controladas a fim de definir um processo de busca inteligente.
A forma de controle de aceitao deriva de funes estatsticas
definidas para o processo real. Em resumo, o algoritmo
funciona da seguinte forma: se a nova soluo encontrada
melhor que a soluo corrente, ento ela aceita; caso
contrrio, se a nova soluo encontrada piora o objetivo, ento
ela aceita com certa probabilidade definida em termos da
diferena entre as solues, do valor atual da varivel de
temperatura e de uma constante fsica. Ilustrativamente para
um problema de minimizao com funo de satisfao f, o
processo como mostra a Figura 2.

Fig. 1. Processo de busca do algoritmo Hill-Climbing.

Pode-se perceber que o mtodo Hill-Climbing apresenta


uma estratgia simples de busca. De fato, esse um dos mais
simples algoritmos de otimizao conhecidos. Contudo, tal
simplicidade representa uma desvantagem para o processo de
busca. Isto acontece porque esta tcnica capaz apenas de
encontrar a melhor soluo localmente. Em outros termos, o
mtodo Hill-Climbing no explora o possvel grande espao de
busca que pode ter solues melhores das encontradas apenas
na vizinhana da soluo atual.
importante destacar que o mtodo Hill-Climbing pode ser
utilizado tanto em problemas de maximizao quanto em
problemas de minimizao. No caso de minimizao, o
algoritmo faria o mesmo processo de busca local, mas as
solues encontradas dariam menores valores para a funo de
satisfao
2) Tmpera simulada
A metaheurstica Tmpera Simulada considerada a mais
conhecida entre as metaheursticas [4]. Seu procedimento de
busca baseado em um processo fsico real que ocorre na
metalurgia de ligas e metais. Especificamente, o processo
tomado como base originalmente definido como annealing e
traduzido como tmpera. Outro termo utilizado

Fig. 2. Processo de busca do algoritmo Tmpera Simulada.

Existem vrias variaes do algoritmo original. Entre as


mais usadas destaca-se aquela na qual durante o processo de
busca o valor da varivel de temperatura decrescido. Isso
feito para simular o resfriamento realizado no processo real de
tmpera. Esta diminuio do valor da temperatura faz com que
a probabilidade de aceitao de solues piores definida em
frmulas fsicas diminua durante o processo de busca. Dessa
forma, o algoritmo apresenta um fator de convergncia terica
ao aceitar solues melhores no limite de tempo e ao mesmo
tempo permitir a diversificao do processo de busca ao
aceitar certas vezes solues piores.

Freitas, F. G.; Maia, C. L. B.; Campos, G. A. L.; Souza, J. T./ Revista de Sistemas de Informao da FSMA n. 5 (2010) pp. 3-13

3) GRASP
O algoritmo GRASP (Greedy Randomized Adaptive Search
Procedure) [9] uma tcnica que parte de uma estratgia
gulosa para o processo de busca. Nessa metaheurstica, a busca
antecedida por um processo de construo atravs da
incluso de componentes de soluo. O termo Randomized
(aleatrio) do nome desse algoritmo representa a
aleatoriedade da escolha dos componentes que podero ser
selecionados na fase de construo. Aps a construo de uma
soluo, o processo de busca iniciado. Ao final, a soluo
encontrada comparada com as j encontradas em iteraes
anteriores. A melhor soluo desse conjunto tomada como a
soluo atual. A Figura 3, a seguir, ilustra o algoritmo.

Fig. 3. Esquema de funcionamento da metaheurstica GRASP.

Uma alterao no GRASP original apresentado a tcnica


GRASP Reativo [10]. A alterao em tal abordagem em
relao ao GRASP original reside na alterao no fator de
aleatoriedade da seleo dos componentes realizada na fase de
construo. Assim, durante a execuo do algoritmo, a seleo
dos componentes varia entre a possibilidade de escolher todos
os componentes ou apenas o melhor.
4) Algoritmos genticos
A metaheurstica Algoritmos Genticos [5] um mtodo
bastante empregado para a resoluo de problemas de
otimizao. Como seu nome indica, essa tcnica usa conceitos
da Gentica, como populao e mutao.
O funcionamento da metaheurstica se resume basicamente
ao emprego de duas operaes genticas: o crossover, no qual
as informaes estruturais de duas solues so cruzadas a fim
de gerar duas novas solues; e a mutao, processo pelo qual
algumas alteraes aleatrias podem acontecer nas solues
geradas. Aps isso, as solues atuais so avaliadas para a
determinao de quais continuam para a prxima iterao.
Dessa forma, as solues vo sendo selecionadas de acordo
com o desempenho em relao funo de satisfao. Como
as novas solues so geradas a partir dessas solues que
foram selecionadas, o processo evolui com o intuito de gerar
solues cada vez melhores. Para que o processo no gere
necessariamente as mesmas solues e para que o processo
explore vrios espaos de busca, a operao de mutao
aplicada com uma pequena taxa sobre as solues.

objetivas. Isto significa que elas resolvem problemas com


apenas uma funo. Nesses problemas a escolha entre solues
feita simplesmente pela comparao dos valores de cada uma
para o objetivo considerado. Por exemplo, se o problema de
maximizao, uma soluo com maior valor de funo de
satisfao melhor do que outra com valor inferior.
Alternativamente, o problema pode ser modelado com mais
de uma funo. Nesses casos a comparao entre solues no
um processo trivial j que existe mais de um valor para
comparao. Para resolver tal questo, as abordagens de
otimizao multiobjetivas apresentam o conceito chamado de
frente de Pareto. Este conceito representa um conjunto com as
melhores solues possveis para o problema considerando
todos os objetivos ao mesmo tempo. Em outras palavras, este
conjunto formado por solues que no so piores que
nenhuma outra considerando todos os objetivos. Este conceito
de ser pior ou melhor em relao a outras solues, conhecido
como dominncia, pode ser usado para uma definio
formal da frente de Pareto: as solues pertencentes frente
de Pareto so aquelas que no so dominadas por nenhuma
outra soluo, ou seja, so solues melhores do que todas
as outras em no mnimo um aspecto.
1) NSGA-II
A metaheurstica NSGA-II (Non-dominated Sorting Genetic
Algorithms II) [11] uma metaheurstica multiobjetiva
baseada em Algoritmos Genticos. Os conceitos de
cruzamento e mutao so correspondentes aos j
apresentados de forma recorrente na rea dos AGs.
O NSGA-II inicia com a gerao, de forma aleatria, de um
conjunto P0 de N solues (uma populao de solues). Em
seguida, um segundo conjunto Q0, tambm de tamanho N,
gerado com o uso dos operadores de permutao e mutao.
As solues dos dois conjuntos formam a populao R0 de
tamanho 2N. Ento, R0 ordenado usando o conceito de
dominncia da seguinte maneira: as solues que no so
dominadas por nenhuma outra so colocadas na primeira
frente de Pareto, F1; as solues que so dominadas por uma
soluo so colocadas na segunda frente de Pareto, F2; e assim
sucessivamente at que todas as solues de R0 estejam em
alguma frente. Ento, uma populao P1 formada
considerando as frentes de Pareto iniciais at o limite de N
solues. Quando este limite impede que todas as solues de
uma frente sejam tomadas, um operador de distncia de
solues utilizado na seleo de quais sero tomadas para P1.
Este operador tem o objetivo de selecionar solues que no
se encontrem prximas de outras no espao de busca. Esta
operao realizada com o intuito de tomar solues
diferentes. A populao P1 ento utilizada como ponto inicial
na iterao seguinte, ou seja, uma populao ser formada a
partir da aplicao dos operadores genticos, e as solues das
duas populaes sero ordenadas de acordo com a dominncia
para a seleo de quais participaro da prxima gerao, como
mostra a Figura 4.

B. Otimizao multiobjetiva
As metaheursticas apresentadas anteriormente so mono-

Freitas, F. G.; Maia, C. L. B.; Campos, G. A. L.; Souza, J. T./ Revista de Sistemas de Informao da FSMA n. 5 (2010) pp. 3-13

Fig. 4. Procedimento geral do NSGA-II (Adaptao [11]).

III. OTIMIZAO EM ENGENHARIA DE SOFTWARE


A Engenharia de Software, como uma disciplina de
engenharia, uma rea na qual existem problemas que podem
ser resolvidos matematicamente [12]. Tais problemas podem
ser caracterizados pela busca da soluo em um espao de
possveis solues. Os problemas dessa forma apresentam, em
geral, elevada quantidade de possibilidades e alta
complexidade de resoluo. Assim, o processo de busca para
estes problemas deve ser feito por meio de um mtodo
automatizado e no exaustivo, permitindo que os envolvidos
possam realizar atividades onde a capacidade humana mais
conveniente [13] [14].
TABELA I
REAS E PROBLEMAS J ATACADOS EM SBSE
rea da Engenharia de Software

Principais Problemas

Engenharia de Requisitos

Seleo de Requisitos

Anlise de Requisitos
Planejamento de Requisitos

O primeiro passo nessa direo aconteceu em 1976 [15].


Neste trabalho, o objetivo foi gerar dados de teste a partir de
maximizao numrica. Contudo, foi em um segundo
momento, mais precisamente em 2001, que um trabalho de
apresentao da rea [16] indicou esta rea de pesquisa e
denominou o termo Search-based Software Engineering
(SBSE). A partir deste momento, diversos pesquisadores em
parceria com engenheiros de software e desenvolvedores de
sistemas tm modelado e resolvido diversos problemas da
Engenharia de Software utilizando tcnicas de busca,
especialmente metaheursticas. A Tabela 1 demonstra a
amplitude da aplicao de metaheursticas em problemas desta
rea.
Nesse contexto, uma das reas da Engenharia de Software
mais destacadas em SBSE a de Teste de Software. Este
destaque dado principalmente pela quantidade de problemas
dessa rea que j se mostraram possveis de serem modelados
e resolvidos atravs de tcnicas de otimizao matemtica.
Dado o maior destaque da rea Teste de Software no campo
SBSE, um subcampo especfico para ela foi criado: Searchbased Software Testing.
Neste ponto, importante salientar que a SBST, assim como
a SBSE, complementa as tcnicas convencionais da
Engenharia de Software j utilizadas no desenvolvimento de
sistemas. Nesse sentido, o caso que alguns problemas que
antes no eram completamente resolvidos, resolvidos de forma
no satisfatria ou sequer considerados pelas metodologias e
mtodos convencionais da Engenharia de Software tradicional,
passam a ser estudados e solucionados indicando a relevncia
do campo.
IV. OTIMIZAO EM TESTE DE SOFTWARE

Gerao de Dados de Teste


Seleo de Casos de Teste
Teste de Software

Priorizao de Casos de Teste


Testes No Funcionais
Estimativa de Tamanho

Estimativa de Software

Estimativa de Custo
Alocao de Recursos

Planejamento de Projeto

Alocao de Pessoal
Paralelizao

Otimizao de Cdigo-Fonte

Otimizao para Compilao


Re-engenharia de Software

Manuteno de Software

Automated Maintenance
Alocao em Heap

Otimizao de Compilador

Projeto de Software

Tamanho de Cdigo
Modularizao

Freitas, F. G.; Maia, C. L. B.; Campos, G. A. L.; Souza, J. T./ Revista de Sistemas de Informao da FSMA n. 5 (2010) pp. 3-13

Nesta seo so apresentados diversos trabalhos e


resultados em otimizao em Teste de Software. Entre os
problemas atacados esto a gerao de dados de teste e a
seleo e priorizao de casos de teste. A Tabela 2, a seguir,
indica alguns problemas j atacados em SBST, suas principais
caractersticas e contribuies, e as referncias.
TABELA II
PRINCIPAIS PROBLEMAS ATACADOS EM SBST E REFERNCIAS
Problema de
Teste de
Software

Gerao de
Dados de Teste

Seleo de
Casos de Teste

Priorizao de
Casos de Teste

Observaes

Referncia

Uso de algoritmos genticos

[17]

Formalizao do problema

[18]

Maximizao dos caminhos

[19]

Quantidade de vezes do teste

[20]

Uso de tempera simulada

[21]

Anlise de cinco tcnicas

[22]

Abordagem multiobjetiva inicial

[26]

Nova formulao multiobjetiva

[27]

Seleo segura de casos de teste

[28]

Relaode priorizao e seleo

[26]

Formalizao do problema

[29]

Tempo de execuo como fator

[30]

Comparao de tcnicas

[31]

Uso do GRASP Reativo

[32]

Teste de performance

[33]

Testes
No Funcionais

Teste de tempo de execuo

[34]

Testes em contextos reais

[35]

Testes
Funcionais

Teste de interao

[36]

A. Gerao de dados de teste


A gerao de dados de teste o processo de identificao de
conjuntos de dados de entrada vlidos para um programa de
acordo com os critrios de teste. Quanto maior e mais
complexo um programa, mais difcil gerar tais dados de
entrada. Dessa forma, a utilizao de tcnicas automticas para
a gerao destes conjuntos se mostra adequada. Alm disso,
esta atividade de gerao apresenta, por exemplo, a meta de
atingir a maior quantidade possvel de testes no sistema com
os dados gerados. Nesse aspecto, a utilizao de
metaheursticas, enquanto tcnicas de otimizao, tambm se
mostra adequada tendo em vista a impossibilidade de realizar
tal atividade satisfatoriamente a no ser pelo uso de tcnicas
matemticas. De outra forma, por exemplo, outra possvel
resoluo seria utilizar tcnicas aleatrias de gerao.
Entretanto, como j demonstrado [17], tal abordagem no

satisfatria.
Korel [18] prope um gerador de dados de teste para o qual
o programa a ser testado serve como a entrada. Dessa forma, o
programa para o qual os conjuntos sero gerados executado e
sua execuo monitorada a fim de identificar os dados
necessros. O grfico de controle de fluxo do programa
gerado e os caminhos possveis so percorridos e, finalmente,
os dados de teste de entrada necessrios para percorrer tais
caminhos possveis so gerados. Este artigo tem a contribuio
de ter indicado o potencial da aplicao de otimizao no
problema da gerao de dados de teste. A formulao genrica
do problema apresentada na Figura 5, onde os termos n
indicam os pontos no cdigo (branchs) e D o domnio de
dados.

Fig. 5. Formalizao do problema da gerao de dados de teste.

Quando percebido um caminho diferente do definido


como controle, e por isso no desejado, uma funo de
minimizao executada para encontrar os valores dos dados
de entrada correspondentes. O autor mostra que a tcnica
proposta apresentou melhoria significativa em relao aos
demais mtodos utilizados.
1) Gerao de dados de teste por evoluo
A metaheurstica Algoritmos Genticos tambm
empregada na gerao de dados [17]. Uma das contribuies
do trabalho a utilizao de tal metaheurstica para este
problema, j que antes apenas algoritmos de busca local como
o Hill-Climbing tinham sido usados. A abordagem utilizada
no trabalho, derivada da gerao dinmica de dados de teste,
definida pelo particionamento do programa em blocos de
forma que cada bloco possa ser avaliado como uma funo de
acordo com os dados de entrada. O objetivo nesse caso
determinar quais blocos possuem o valor mnimo na execuo
de forma que todos os pontos do cdigo sejam cobertos. Os
resultados do trabalho mostraram que de fato a abordagem
com Algoritmos Genticos mais eficiente que a gerao
aleatria, e que com o aumento da complexidade do programa
sob teste existe aumento direto da melhoria apresentada pela
abordagem.
2) Melhorias de algoritmos genticos para o problema
Algoritmos Genticos foram usados em outros trabalhos
para a gerao de dados de teste [19]. O objetivo foi a
maximizao da cobertura de caminhos de fluxo do sistema.
Os autores adicionaram caractersticas que melhoraram o seu
desempenho especificamente para este problema, como
normalizao da funo objetivo . O trabalho indica que com o
uso das tcnicas adicionais foi possvel determinar os dados de
teste com menos geraes (iteraes) da metaheurstica. Alm

Freitas, F. G.; Maia, C. L. B.; Campos, G. A. L.; Souza, J. T./ Revista de Sistemas de Informao da FSMA n. 5 (2010) pp. 3-13

disso, os resultados encontrados demonstraram a eficincia da


tcnica.
3) Abordagem simplificada com algoritmos genticos
A metaheurstica Algoritmos Genticos foi usada em outro
trabalho como base para a formalizao de uma abordagem
para resolver este problema [20]. No trabalho, o conceito de
cromossomos e evoluo so tomados dos Algoritmos
Genticos para a gerao de dados de testes. A seguir, os
indivduos sofrem a operao de cruzamento para a gerao
de novos dados de teste. A avaliao da populao realizada
considerando a quantidade de vezes que o indivduo aparece
no teste. Os autores mostram que os resultados encontrados
com esta tcnica foram semelhantes aos de outras abordagens.
4) Utilizao de tmpera simulada
Outra metaheurstica usada no problema da gerao de
dados de teste a Tmpera Simulada [21]. O trabalho foi
realizado em alguns tipos de problemas da gerao de teste,
como o de teste de reuso de componentes. Este problema trata
da verificao de que o novo sistema onde o componente ser
reusado tem as caracterticas necessrias definidas quando o
componente foi desenvolvido. Para validar a abordagem,
foram gerados sistemas com condies que no permitiriam a
utilizao dos componentes de forma segura (isto , sem
erros). Os resultados mostraram que a abordagem proposta foi
capaz de gerar dados que identificassem as falhas do sistema
que impedem a reutilizao dos componentes. Alm disso, a
eficincia do mtodo no problema foi constatada, pois o tempo
de retorno da soluo foi na ordem de segundos.
B. Seleo de casos de teste
A atividade de seleo de casos de teste consiste da escolha
de quais testes devem ser realizados em um sistema, seja para
a primeira verso ou para verses posteriores. No ltimo caso,
tem-se o chamado teste de regresso. Essa ltima situao
ocorre aps a realizao de alguma modificao necessria no
sistema, como uma manuteno, que possa gerar alteraes em
funcionalidades que j estavam em funcionamento. Neste caso,
a abordagem ideal seria testar todos os casos de teste
previamente utilizados, o que significaria testar todo o sistema
novamente. A necessidade dessa soluo deriva do fato de que
a modificao pode ter ocasionado algum impacto em outras
funcionalidades do cdigo desenvolvido. Entretanto,
geralmente no h tempo ou recursos suficientes para testar
todo o sistema novamente, sendo necessrio selecionar alguns
casos de teste para execuo.
1) Anlise de tcnicas para a seleo de casos de teste
Mansour et al. [22] comparam cinco algoritmos de seleo
de casos de teste, a saber: Tmpera Simulada, Reduction [23],
Slicing [24], Dataflow [25], e Firewall [22] em relao
atividade de seleo de casos de teste de regresso. A funo
de satisfao usada foi a cobertura de cdigo obtida pelos
casos de teste. A comparao foi baseada em oito critrios
quantitativos e qualitativos: nmero de casos de teste, tempo
de execuo, preciso, inclusividade (o quanto a tcnica
seleciona casos que cobrem falhas na nova verso),

processamento dos requisitos, tipo de manuteno, nvel de


teste e tipo de abordagem. Os resultados mostraram que as
tcnicas apresentam resultados melhores dependendo do
critrio. Em relao ao algoritmo Tmpera Simulada, os
resultados indicaram boas solues nos critrios de nmero de
casos de teste e preciso.
2) Abordagem multiobjetiva em seleo de casos de teste
O conceito de Pareto da otimizao multiobjetiva
introduzido neste problema em um trabalho de 2007 [26].
Como j apresentado, a utilizao de otimizao multiobjetiva
significa que mais de uma funo de satisfao considerada
no proceso de resoluo. Duas formulaes para o problema
foram utilizadas: a primeira combina as funes de satisfao
de cobertura de cdigo e de custo de execuo, e a segunda
verso usa as funes de satisfao de cobertura de cdigo, de
custo de execuo e de histrico de falhas:

Fig. 6. Formulaes do problema da seleo de casos de teste.

Foram utilizados trs algoritmos: uma reformulao de


tcnica de algoritmo guloso, o NSGA-II, e uma variao
denominada vNSGA-II. Nos experimentos foram utilizados
quatro programas menores da sute Siemens (726, 570, 412 e
374 linhas de cdigo) e o programa space que tem 9.564
linhas de cdigo.
Para a primeira abordagem, a metaheurstica NSGA-II
obteve o melhor desempenho, encontrando toda a frente de
Pareto, seguido do algoritmo guloso e do vNSGA-II. Porm,
para o programa space a tcnica gulosa obteve o melhor
desempenho. O vNSGA-II apresentou resultados semelhantes
ao NSGA, mas com resultados ainda bem inferiores aos do
algoritmo guloso. Os resultados para a segunda abordagem de
funes de otimizao se mostraram semelhantes.
3) Seleo de casos de teste com informao dos clientes
Uma abordagem multiobjetiva diferente para o problema de
seleo de casos de teste foi apresentada em um trabalho de
2009 [27]. No trabalho so consideradas mais caractersticas
do contexto do problema, como o risco de cada caso de teste e
a importncia dada pelo cliente aos requisitos que o caso de
teste cobre. Dessa forma, o trabalho apresenta como principal
contribuio a considerao da participao da viso do
cliente como uma dos aspectos na atividade de seleo dos
casos de testes.
A formulao multiobjetiva proposta usa trs funes de
satisfao, a saber: minimizao do tempo de execuo,
minimizao do risco e maximizao da importncia. O artigo
tambm apresentou restries para o problema: o tempo
disponvel e a existncia de pr-requisitos entre os casos de
teste. Tal existncia de pr-requisitos indica que alguns casos
9

Freitas, F. G.; Maia, C. L. B.; Campos, G. A. L.; Souza, J. T./ Revista de Sistemas de Informao da FSMA n. 5 (2010) pp. 3-13

de teste s podem ser executados aps a execuo de seus


precedentes. A formulao matemtica completa apresentada
na Figura 7.

Fig. 7. Formulao com participao da viso do cliente e restries para


o problema da seleo de casos de teste.

Para a resoluo do problema foi utilizado o algoritmo


NSGA-II, e como base de comparao tambm foi utilizado
um algoritmo randmico. Para o NSGA-II, diferentes
tamanhos de populao foram considerados: 10, 20, 30, 40,
50. A partir de 50 os resultados se mostraram semelhantes. O
NSGA-II gerou resultados bem melhores que o algoritmo
randmico, como pode ser visto na figura a seguir. O
algoritmo randmico gerou 50 solues vlidas, mas apenas
duas delas foram melhores que as solues geradas pelo
NSGA-II. A figura 8 a seguir apresenta os resultados do
trabalho. Nela possvel identificar a frente de Pareto
encontrada pela metaheurstica NSGA-II com solues com
alta importncia, baixo tempo de execuo e baixo risco; e as
solues aleatrias dispersas no campo de busca.

Fig. 8. Resultados de NSGA-II e tcnica aleatria para a seleo de casos


de teste - solues do NSGA-II melhores que as geradas aleatoriamente [27].

4) Seleo segura de casos de teste


Rothermel e Harrold [28] apresentam uma abordagem
denominada seleo de casos de teste de regresso segura.
Este conceito trata da seleo dos casos de teste de forma que
no seja permitida a excluso de um caso de teste caso ele
pudesse descobrir falhas na verso modificada do sistema. A
principal contribuio do artigo a validao da tcnica com
diversas instncias de sistemas reais. Isso permitiu a
realizao de uma anlise emprica dos resultados e a prova
da eficincia da abordagem proposta.
C. Priorizao de casos de teste
A atividade de priorizao de casos de teste trata da
ordenao dos casos de teste de modo que os mais
significativos sejam executados primeiro, pois possvel que
no exista tempo suficiente para executar todos. Em geral, a
cobertura dos requisitos de teste o principal objetivo a ser
otimizado, ou seja, a ordenao dos casos de teste feita de
maneira que o nmero mximo de requisitos seja coberto no
incio. Dessa forma, mesmo na ocasio de necessidade de
parada dos testes, seja por falta de tempo ou de recursos,
pode-se garantir maior cobertura de teste no sistema. A
formulao genrica desse problema apresentada na Figura

9.
Fig. 9. Formalizao do problema da priorizao de casos de teste.

1) Formalizao de funes de satisfao


Trabalhos iniciais [29] usaram algoritmos gulosos com o
intuito de encontrar solues timas. Para comparao foram
usadas abordagens aleatrias, onde uma ordem randmica
definida, e de execuo dos casos de teste sem ordenao, isto
, em que a execuo segue a ordem de criao dos casos de
teste. A contribuio do trabalho foi a formalizao do
problema e a definio das funes de satisfao como
cobertura de sentenas no cdigo, cobertura de sentenas no
cobertas em testes anteriores e probabilidade de descoberta de
falhas.
2) Considerando o tempo de execuo para a priorizao
Walcott et al. [30] propem uma tcnica de priorizao de
casos de teste utilizando Algoritmos Genticos com o uso da
cobertura de cdigo gerada pela sute de testes e do tempo
para execut-la como parmetros. Tal abordagem foi
comparada com tcnicas de ordem inicial, onde os casos de
teste so executados na ordem em que foram escritos e ordem
reversa, na qual a execuo na ordem contrria. O mtodo
proposto com Algoritmos Genticos superou as tcnicas
gulosas e abordagens puramente aleatrias.

10

Freitas, F. G.; Maia, C. L. B.; Campos, G. A. L.; Souza, J. T./ Revista de Sistemas de Informao da FSMA n. 5 (2010) pp. 3-13

3) Relao da priorizao com seleo de casos de teste


Yoo e Harman [26] descreveram uma abordagem utilizando
o conceito de Pareto para priorizao de casos de teste a partir
do problema da seleo de casos de teste. Os objetivos
utilizados foram a cobertura de cdigo, o custo de execuo e
o histrico de deteco de falhas. O objetivo especificamente
para a priorizao foi encontrar um vetor de variveis de
deciso que representam a ordenao dos casos de teste. Neste
caso, tal vetor maximiza um vetor de funes de satisfao.
Outros algoritmos foram comparados com o algoritmo
proposto, obtendo como resultado: o Algoritmo Gentico
superou o Algoritmo Guloso na ocasio de duas funes de
satisfao, e nas demais situaes o Algoritmo Guloso teve o
melhor desempenho.
4) Comparao de tcnicas para a priorizao
Li et al. [31] compararam cinco algoritmos para priorizao
de casos de teste: Algoritmo Guloso, Algoritmo Guloso
Adicional, 2-timo Algoritmo, Hill-Climbing e Algoritmos
Genticos. Os autores separaram em 1.000 sutes pequenas (8
a 155 casos de teste) e 1.000 sutes maiores (228 a 4.350 casos
de teste). Seis programas na linguagem C foram usados nos
experimentos, cada um contendo entre 374 a 11.148 linhas de
cdigo. A anlise foi realizada separadamente para os
programas pequenos e os grandes. O objetivo analisado foi a
mtrica de cobertura percentual mdia de cdigo. Nas sutes
pequenas, para os programas pequenos, o algoritmo gentico
foi ligeiramente melhor que os demais, enquanto o algoritmo
guloso obteve o pior desempenho. Porm, foi mostrado a
partir de anlise estatstica que no h diferena significante
entre os algoritmos genticos e o guloso adicional. Para os
programas grandes, no houve diferena significante entre os
algoritmos guloso adicional e o 2-timo, ao invs de guloso
adicional e algoritmo gentico. A diferena do algoritmo
gentico para os dois melhores (guloso adicional e 2-timo)
foi pouca, mas significante. Para as sutes grandes, os
resultados foram semelhantes aos experimentos com sutes de
teste pequenas. No caso de programas pequenos, no houve
diferena significante entre o adicional guloso e o algoritmo
gentico, e para os programas grandes no houve diferena
significante entre o guloso adicional e o 2-timo.
5) Utilizao do GRASP reativo na priorizao
A utilizao da metaheurstica GRASP Reativo foi
investigada para o problema de priorizao de casos de teste
[32]. O trabalho realizou experimentos com vrios percentuais
diferentes das sutes de teste (1%, 2%, 3%, 5%, 10%, 20%,
30%, 40%, 50%, 60%, 70%, 80%, 90% e 100%). O GRASP
Reativo foi comparado com tcnicas j reportadas na
literatura, como algoritmo guloso e Algoritmo Gentico. A
anlise dos resultados foi realizada tanto em relao ao
desempenho quanto ao tempo de execuo para o retorno da
soluo. Para fins de comparao, os dados utilizados nos
experimentos foram os mesmo de trabalho anterior [31]. A
funo de satisfao utilizada foi a de cobertura de cdigo.
Validando o trabalho base, o algoritmo Guloso Adicional
obteve o melhor desempenho. A metaheurstica GRASP
Reativo apresentou o segundo melhor desempenho, porm

mostrou-se mais lenta que o algoritmo Adicional Guloso.


D. Testes no funcionais
Os testes no funcionais verificam caractersticas do sistema
no relacionadas a funcionalidades, como tempo de execuo,
usabilidade, segurana, performance, stress, padres da
empresa (se foi desenvolvido conforme os padres). Estas
caractersticas no-funcionais so especificadas pelo cliente.
O teste de performance verifica se a aplicao atende aos
requisitos de performance como, por exemplo, tempo para
exibio de uma pgina, tempo de consulta para um relatrio,
nmero de acessos simultneos aplicao, dentre outros. O
teste de stress verifica como a aplicao se comporta quando
os parmetros de performance so excedidos, a fim de
conhecer o comportamento da aplicao em situaes de maior
carga ou stress e planejar as aes necessrias para que o
impacto seja mnimo. Por exemplo, digamos que o cliente
especificou que 20 pessoas poderiam acessar a aplicao
simultaneamente. O teste de performance vai ser realizado da
seguinte maneira: 20 acessos simultneos sero realizados e, se
a aplicao responder dentro do tempo esperado, est tudo
funcionando corretamente. O teste de stress ir utilizar mais de
20 acessos simultneos com o objetivo de verificar o que
ocorre quando a aplicao estressada.
Outro fator considerado como caracterstica no-funcional
o tempo de execuo do sistema. Neste caso, o objetivo
identificar se o sistema responde entrada com tempo muito
curto (antes do desejado) ou muito longo (demora para
processamento). Para isso, os testes no-funcionais focam na
identificao de dados de entrada que possam chegar ao limite
no tempo de resposta do sistema. O tempo calculado
geralmente em unidades de ciclo de procesador, que apesar de
diferir entre sistemas, tem maior preciso de clculo em
relao a segundos. A diferena entre o teste de tempo de
execuo e o de performance que no primeiro tentamos
encontrar dados de entrada que gerem uma resposta no tempo
desejado (tempo mximo especificado), e no segundo
medimos o tempo de resposta para uma entrada qualquer
gerada e o comparamos com o tempo mximo especificado.
1) Teste de performance
Binad et al. [33] propem uma ferramenta chamada Real
Time Test Tool (RTTT) desenvolvida utilizando-se o
Algoritmo Gentico para gerar casos de teste para teste de
performance. Estes casos de teste possuem entradas que iro
gerar deadlines nas tarefas que sero executadas. Como os
autores salientam, esta no uma tarefa simples de fazer
manualmente. Na abordagem proposta, os testes so realizados
a partir de um nmero de atividades e cada uma delas tem uma
prioridade para execuo. Estudos de caso foram realizados
com o apoio da ferramenta desenvolvida. Para comparao
entre os experimentos, tanto o nmero de tarefas quanto as
prioridades destas foram alterados. Os resultados foram
satisfatrios por oferecerem uma forma de execuo
automtica, mas no foram comparados com outras
abordagens.

11

Freitas, F. G.; Maia, C. L. B.; Campos, G. A. L.; Souza, J. T./ Revista de Sistemas de Informao da FSMA n. 5 (2010) pp. 3-13

2) Teste de tempo de execuo


Wegener et al. [34] iniciaram a considerao de ciclos de
processador no lugar de segundos como medida de tempo de
execuo. O artigo realizou testes com cinco sistemas de
diferentes domnios para determinao da eficincia da
metaheurstica Algoritmos Genticos em comparao busca
aleatria. Os resultados indicaram que de fato os AGs
encontraram dados com tempos de resposta limites.
Em outro trabalho da rea [35] os autores tambm
realizaram experimento com a finalidade de comparar os
resultados de Algoritmos Genticos com busca aleatria. Os
testes foram realizados com mais parmetros para determinar a
validao da tcnica em contextos mais reais. Os resultados
mostraram que os Algoritmos Genticos foram capazes de
encontrar dados com valores mais extremos.
E. Testes funcionais
Testes funcionais verificam se a implementao de uma
aplicao est de acordo com sua especificao, ou seja, se
todas as funcionalidades especificadas pelo cliente esto
implementadas conforme a documentao, simulando a
interao com o usurio.
1) Teste de interao
Os testes de interao foram considerados em um artigo de
2003 [36]. Os autores recombinaram vrias tcnicas para
encontrar um conjunto maior de vetores de cobertura que
podem ser expandidos ou diminudos quando necessrio. Estes
vetores de cobertura com fora varivel so conjuntos de
vetores de cobertura dentro de vetores de cobertura maiores e
podem ser combinados para garantir uma cobertura maior para
o sistema. Os autores utilizaram os algoritmos gulosos TCG
(Test Case Generator) e AETG (Automatic Efficient Test
Generator) e as metaheursticas Hill Climbing e Tmpera
Simulada. As metaheursticas superaram significantemente os
algoritmos TCG e AETG na busca pelo melhor covering
array, sendo a Tmpera Simulada a melhor na maioria dos
experimentos, sendo que, em alguns casos esta tcnica
encontrou a soluo tima.
V. CONCLUSES E TRABALHOS FUTUROS
A aplicao de metaheursticas em problemas da Engenharia
de Software faz parte do campo relativamente novo
denominado Search-based Software Engineering (SBSE).
Neste contexto, a fase de Teste de Software apresentou um
destaque sobre as outras fases de desenvolvimento de sistemas.
Dessa forma foi criado o campo de pesquisa Search-based
Software Testing (SBST). Os resultados obtidos nessa rea
indicam o potencial que tal recente campo de pesquisa
apresenta. Nesse sentido, essa forma de visualizao dos
problemas da Engenharia de Software, e de Teste de Software
da mesma forma, permite a resoluo de problemas antes
incapazes de serem resolvidos de forma satisfatria.
Os trabalhos descritos neste artigo apresentam a pesquisa
em SBST em problemas de gerao de dados de teste, seleo
e priorizao de casos de teste, e testes funcionais e no
funcionais. A partir deste estudo de reviso da literatura pode-

se verificar a importncia e amplitude desse recente campo de


pesquisa. Os trabalhos analisados demonstram a eficincia e
relevncia da aplicao de metaheursticas em problemas de
Teste de Software em comparao com abordagens aleatrias,
por exemplo. Alm disso, a validade de tal aplicao
mostrada na capacidade dos mtodos na resoluo dos
problemas sob a forma de problemas de otimizao.
Os trabalhos e formulaes apresentadas neste estudo
servem como motivao para a percepo de modificaes nas
formulaes j apresentadas. Outro aspecto do levantamento
realizado a possibilidade de, a partir do apresentado, a
modelagem de novos problemas da rea de Teste de Software
como problemas de otimizao. Como trabalhos futuros
indicamos a modelagem e resoluo de problemas de diversas
reas da Engenharia de Software, em especial na rea de Teste
de Software. Especificamente, a resoluo dos problemas
relacionados atividade de teste de regresso com o uso de
metaheursticas ainda no utilizadas.
REFERNCIAS
[1]

[2]

[3]
[4]
[5]
[6]
[7]
[8]

[9]
[10]

[11]

[12]
[13]

[14]

[15]

[16]
[17]

[18]

T. Dyba, An empirical investigation of the key factors for success in


software process improvement, IEEE Transactions on Software
Engineering, IEEE, May 2005, pp. 410-424.
F. G. Freitas, C. L. B. Maia, D. P. Countinho, G. A. L. Campos, J. T.
Souza, Aplicao de Metaheursticas em Problemas da Engenharia de
Software: Reviso de Literatura, II Congresso Tecnolgico Infobrasil
(Infobrasil 2009), 2009.
F. Glover, Future paths for integer programming and links to artificial
intelligence, Computer Operational Research, 13, pp. 533-549.
S. Kirkpatrick, D. C. Gellat, M. P. Vecchi, Optimizations
by
simulated annealing Science v. 220, pp. 671-680, 1983.
J. Holland, Adaptation in Natural and Artificial Systems, 1975.
F. Glover, G. Kochenberger, Handbook of Metaheuristics, Springer, 1st
edition, 2003.
E. Talbi, Metaheuristics: From Design to Implementation, Wiley
Publishing, 2009.
C. Blum, A. Roli, Metaheuristics in combinatorial optimization:
Overview and conceptual analysis, ACM Computing Surveys, Vol. 35,
N 3, Setembro de 2003, pp. 268-308.
T. A. Feo, M. G. C. Resende. Greedy randomized adaptive search
procedures, Journal of Global Optimization, 6:109133, 1995.
M. Prais, C. C. Ribeiro, Reactive GRASP: An application to a matrix
decomposition problem in TDMA traffic assignment, INFORMS
Journal on Computing 12, 164-176, 2000.
K. Deb, A. Pratap, S. Agarwal, T. Meyarivan, A Fast Elitist MultiObjective Genetic Algorithm: NSGA-II, IEEE Transactions on
Evolutionary Computation, V. 6, pp. 182-197, 2000.
M. Harman, Search-Based Software Engineering, Workshop on
Computational Science in Software Engineering, 2006.
J. Clarke, et al. Reformulating software engineering as a search
problem, IEE Proceedings Software, Vol. 150, No. 3, Junho de 2003,
pp. 161-175.
M. Harman, B. F. Jone, The SEMINAL workshop: reformulating
software engineering as a metaheuristic search problem, ACM
SIGSOFT Software Engineering Notes, Volume 26, Issue 6, Novembro
de 2001, PP. 62-66.
W. Miller, D. L. Spooner, Automatic generation of floating-point test
data, IEEE Transactions on Software Engineering, IEEE, 1976, pp.
223-226.
M. Harman, B. F. Jones, Search-based software engineering,
Information and Software Technology, 2001, pp. 833-839.
C. C. Michael, G. McGraw, M. Schatz, Generating software test data
by evolution, Proceedings of IEEE Transactions on Software
Engineering, Vol. 27, Number 12, 2001, pp. 1085-1110.
B. Korel, Automated software test data generation, Proceedings of
IEEE Transactions on Software Engineering, Vol. 16, Number 8, 1990,
pp. 870-879.

12

Freitas, F. G.; Maia, C. L. B.; Campos, G. A. L.; Souza, J. T./ Revista de Sistemas de Informao da FSMA n. 5 (2010) pp. 3-13

[19] I. Hermadi, M. A. Ahmed, Genetic algorithm based test data


generator, The 2003 Congress on Evolutionary Computation, 2003.
[20] S. Khor, P. Grogono, Using a genetic algorithm and formal concept
analysis to generate branch coverage test data automatically, 19th
International Conference on Automated Software Engineering, 2004,
pp. 346-349.
[21] N. Tracey, J. Clark, K. Mander, J. McDermid, An automated
framework for structural test-data generation, Proceedings of the
International Conference on Automated Software Engineering, pp. 285288.
[22] N. Mandour, R. Bahsoon, G. Baradhi, Empirical comparison of
regression test selection algorithms, The Journal of Systems and
Software 57, 2001, pp. 79-90.
[23] M. J. Harrold, R. Gupta, M. L Soffa, A methodology for controlling the
size of a test suite, ACM Transactions on Software Engineering and
Methodology, Vol. 2, Issue 3, 1993, pp. 270-285.
[24] H. Agrawal, J. R. Horgan, E. W. Krauser, S. London, Icremental
regression testing, Conference on Software Maintenance, 1993, pp.
348-357.
[25] R. Gupta, M. J. Harrold, M. L. Soffa, Program Slicing-Based
regression testing techniques, Software Testing, Verification and
Reliability, Vol 6, Number 2, 1996, pp. 83-111.
[26] S. Yoo, M. Harman, Pareto efficient Multi-Objective test case
selection, Proceedings of the International Symposium on Software
Testing and Analysis, 2007, pp. 140-150.
[27] C. L. B. Maia, R. A. F. Carmo, F. G. Freitas, G. A. L. Campos, J. T.
Souza, A Multi-Objective approach for the regression test case
selection problem, XLI Simpsio Brasileiro de Pesquisa Operacional,
2009.
[28] G. Rothermel, M. J. Harrold, Empirical studies of a safe regression test
selection technique, IEEE Transactions on Software Engineering, vol.
24, no. 6, Agosto de 1998, pp. 401-419.
[29] G. Rothermel, R. J. Untch, C. Chu, Prioritizing test cases for regression
rest, IEEE Transactions on Software Engineering, vol. 7, no. 10, 2001,
pp. 929-948.
[30] K. Walcott, M. L. Soffa, G. M. Kapfhammer, R. S. Roos, Time-Aware
test suite prioritization, Proceedings of the International Symposium on
Software Testing and Analysis, 2006, pp. 1-12.
[31] Z. Li, M. Harman, R. M. Hierons, Search algorithms for regression test
case prioritization, IEEE Transactions on Software Engineering, vol.
33, no. 4, Abril de 2007, pp. 225-237.
[32] C. L. B. Maia, R. A. F. Carmo, F. G. Freitas, G. A. L. Campos, J. T.
Souza, Automated test case prioritization with reactive GRASP,
Advances in Software Engineering, vol. 2010, 2010, pp. 29-46.
[33] L. C. Brinad, Y. Labiche, M. Shousha, Performance stress testing of
Real-Time systems using genetic algorithms, Technical Report,
Carleton University, 2004.
[34] J. Wegener, H. Sthamer, B. F. Jones, D. E. Eyres, Testing real-time
systems using genetic algorithms, Software Quality Control 6 (2) 127
135, 1997.
[35] J. Wegener, M. Grochtmann, Verifying timing constraints of real-time
systems by means of evolutionary testing, Real-Time Systems 15 (3)
(1998) 275298.
[36] M. B. Cohen, P. B. Gibbons, W. B. Mugridge, C. J. Colbourn,
Constructing test suites for interaction testing, Proceedings of the
25th International Conference on Software Engineering, IEEE Computer
Society, 2003, pp. 3848.

13

Você também pode gostar