11
Revista de Sistemas de Informação da FSMA n. 5 (2010) pp. 3-13 http://www.fsma.edu.br/si/sistemas.html 3 Resumo— Durante a fase de Teste de Software são encontrados alguns problemas que não podem ser resolvidos com técnicas tradicionais da Engenharia de Software. Contudo, tais problemas podem ser modelados matematicamente e serem resolvidos através de otimização matemática, especialmente com uso de metaheurísticas. Nesse contexto, surgiu um recente campo denominado Search-based Software Engineering (SBSE) que trata da resolução de problemas de Engenharia de Software por meio de técnicas de otimização. Dada a importância da fase de Teste de Software, uma subárea 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 são descritas as principais metaheurísticas empregadas na área. Em seguida, o estado da arte da SBST é apresentado através da descrição dos principais problemas modelados e dos resultados conseguidos. A partir dos resultados, indicamos que os resultados são promissores. Index Terms— Teste de Software, Otimização Matemática I. INTRODUÇÃO relevância da Engenharia de Software é notável para o importante estágio atual de desenvolvimento de sistemas. Desde a sua criação na década de 1970, importantes avanços na qualidade do software produzido foram conseguidos devido à pesquisa em modelos, normas e metodologias de suporte ao desenvolvimento de sistemas [1]. A aplicação de tais métodos acontece nos mais diversos aspectos relacionados ao processo de desenvolvimento, como Planejamento de Projeto, Análise 1 Fabrício Gomes de Freitas é graduando em Ciências da Computação na Universidade Estadual do Ceará (UECE). 2 Camila Loiola Brito Maia é mestranda em Ciências da Computação na Universidade Estadual do Ceará. 3 Gustavo Augusto Lima de Campos é Doutor em Engenharia Elétrica pela Universidade Estadual de Campinas, Professor Permanente do Mestrado Acadêmico em Ciências da Computação da UECE. 4 Jerffeson Teixeira de Souza é PhD em Ciência da Computação pela University of Ottawa, Professor Permanente do Mestrado Acadêmico em Ciências da Computação da UECE. de Requisitos e Teste de Software. Infelizmente, em alguns casos, as normas e metodologias convencionais desenvolvidas pela comunidade científica especializada não são capazes de resolver certos problemas que acontecem durante o processo de desenvolvimento de software, ou o fazem de modo insatisfatório. Isso acontece com problemas intrinsecamente complexos, como aqueles envolvendo a seleção de uma solução em um conjunto proibitivamente grande de possibilidades. Em problemas desse tipo são exigidas formas automatizadas de resolução para que o problema possa ser resolvido de forma eficiente. Na fase de Teste de Software, especificamente, são encontrados problemas que podem ser modelados dessa forma. Por exemplo, considere a atividade de priorização de casos de teste. Esta atividade trata da determinação da melhor ordem de execução dos casos de teste de um sistema. A definição da qualidade de uma ordem é realizada por meio de uma métrica de cobertura definida matematicamente para calcular o quanto tal ordem executa cedo todo o sistema. Apesar de tal métrica poder ser descrita em texto, a resolução do problema em si se mostra em demasia custosa dada a quantidade de permutações possíveis entre os casos de teste. Assim, a solução para o problema de priorização de casos de teste não pode ser facilmente descrita por meio de regras textuais ou passos escritos em documentos e normas. Entretanto, a modelagem matemática do mesmo como um problema de otimização se mostra conveniente dada a existência de características matemáticas especiais deste problema. Percebeu-se que de fato é possível unir essas duas áreas da computação de forma a possibilitar a resolução de problemas que antes não poderiam ser solucionados de forma satisfatória. Assim, inúmeros trabalhos foram realizados nos últimos anos demonstrando a aplicabilidade de técnicas de otimização matemática em diversos problemas da Engenharia de Software, especialmente em problemas da fase de testes. Recentemente, percebeu-se que de fato é possível unir essas Otimização em Teste de Software com Aplicação de Metaheurísticas Fabrício Gomes de Freitas 1 , Camila Loiola Brito Maia 2 , Gustavo Augusto Lima de Campos 3 . Jerffeson Teixeira de Souza 4 Grupo de Otimização em Engenharia de Software da UECE (GOES.UECE) Laboratório de Computação Natural e Inteligente (LACONI) Universidade Estadual do Ceará (UECE) Avenida Paranjana, 1700 – Fortaleza, CE – Brasil [email protected], [email protected], [email protected], [email protected] A

Otimização Em Teste de Software Com Aplicação de Metaheurísticas

  • Upload
    cognux

  • View
    215

  • Download
    2

Embed Size (px)

DESCRIPTION

Otimização Em Teste de Software Com Aplicação de Metaheurísticas

Citation preview

  • Revista de Sistemas de Informao da FSMA n. 5 (2010) pp. 3-13

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

    3

    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.

    de Requisitos e Teste de Software.

    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

    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

    [email protected], [email protected], [email protected], [email protected]

    A

  • 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

    4

    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

    5

    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.

    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

    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. 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

    6

    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.

    B. Otimizao multiobjetiva As metaheursticas apresentadas anteriormente so mono-

    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.

  • 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

    7

    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].

    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: Search-based 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

    TABELA I REAS E PROBLEMAS J ATACADOS EM SBSE

    rea da Engenharia de Software Principais Problemas

    Engenharia de Requisitos

    Anlise de Requisitos Seleo de Requisitos

    Planejamento de Requisitos

    Teste de Software

    Gerao de Dados de Teste Seleo de Casos de Teste

    Priorizao de Casos de Teste Testes No Funcionais

    Estimativa de Software Estimativa de Tamanho

    Estimativa de Custo

    Planejamento de Projeto Alocao de Recursos Alocao de Pessoal

    Otimizao de Cdigo-Fonte Paralelizao

    Otimizao para Compilao

    Manuteno de Software Re-engenharia de Software Automated Maintenance

    Otimizao de Compilador Alocao em Heap

    Tamanho de Cdigo

    Projeto de Software 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

    8

    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.

    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

    TABELA II PRINCIPAIS PROBLEMAS ATACADOS EM SBST E REFERNCIAS

    Problema de Teste de Software

    Observaes Referncia

    Gerao de Dados de Teste

    Uso de algoritmos genticos Formalizao do problema

    Maximizao dos caminhos Quantidade de vezes do teste

    Uso de tempera simulada

    [17] [18] [19] [20] [21]

    Seleo de Casos de Teste

    Anlise de cinco tcnicas Abordagem multiobjetiva inicial Nova formulao multiobjetiva Seleo segura de casos de teste

    [22] [26] [27] [28]

    Priorizao de Casos de Teste

    Relaode priorizao e seleo Formalizao do problema

    Tempo de execuo como fator Comparao de tcnicas Uso do GRASP Reativo

    [26] [29] [30] [31] [32]

    Testes No Funcionais

    Teste de performance Teste de tempo de execuo

    Testes em contextos reais

    [33] [34] [35]

    Testes Funcionais

    Teste de interao [36]

  • 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

    9

    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

  • 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

    10

    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.

  • 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

    11

    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.

  • 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

    12

    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] 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.

    [2] 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.

    [3] F. Glover, Future paths for integer programming and links to artificial intelligence, Computer Operational Research, 13, pp. 533-549.

    [4] S. Kirkpatrick, D. C. Gellat, M. P. Vecchi, Optimizations by simulated annealing Science v. 220, pp. 671-680, 1983.

    [5] J. Holland, Adaptation in Natural and Artificial Systems, 1975. [6] F. Glover, G. Kochenberger, Handbook of Metaheuristics, Springer, 1st

    edition, 2003. [7] E. Talbi, Metaheuristics: From Design to Implementation, Wiley

    Publishing, 2009. [8] 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.

    [9] T. A. Feo, M. G. C. Resende. Greedy randomized adaptive search procedures, Journal of Global Optimization, 6:109133, 1995.

    [10] 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.

    [11] K. Deb, A. Pratap, S. Agarwal, T. Meyarivan, A Fast Elitist Multi-Objective Genetic Algorithm: NSGA-II, IEEE Transactions on Evolutionary Computation, V. 6, pp. 182-197, 2000.

    [12] M. Harman, Search-Based Software Engineering, Workshop on Computational Science in Software Engineering, 2006.

    [13] J. Clarke, et al. Reformulating software engineering as a search problem, IEE Proceedings Software, Vol. 150, No. 3, Junho de 2003, pp. 161-175.

    [14] 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.

    [15] W. Miller, D. L. Spooner, Automatic generation of floating-point test data, IEEE Transactions on Software Engineering, IEEE, 1976, pp. 223-226.

    [16] M. Harman, B. F. Jones, Search-based software engineering, Information and Software Technology, 2001, pp. 833-839.

    [17] 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.

    [18] B. Korel, Automated software test data generation, Proceedings of IEEE Transactions on Software Engineering, Vol. 16, Number 8, 1990, pp. 870-879.

  • 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

    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. 285-288.

    [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) 127135, 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.