Bio-inspired optimization algorithms for unit test generation

Detalhes bibliográficos
Autor(a) principal: Duarte, Gonçalo Miguel Inácio
Data de Publicação: 2021
Tipo de documento: Dissertação
Idioma: eng
Título da fonte: Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
Texto Completo: http://hdl.handle.net/10451/51843
Resumo: Tese de Mestrado, Engenharia Informática (Engenharia de Software), 2021, Universidade de Lisboa, Faculdade de Ciências
id RCAP_f2c34ce4e31df6d362782cd12fa6d04f
oai_identifier_str oai:repositorio.ul.pt:10451/51843
network_acronym_str RCAP
network_name_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository_id_str 7160
spelling Bio-inspired optimization algorithms for unit test generationTestes de software baseados em pesquisaAlgoritmos de inteligência de grupoEstudo empíricoTeses de mestrado - 2021Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e InformáticaTese de Mestrado, Engenharia Informática (Engenharia de Software), 2021, Universidade de Lisboa, Faculdade de CiênciasNa sociedade atual nós estamos rodeados e usamos todo o tipo de aplicações de software. Problemas no software pode causar todo o tipo de consequências, desde pessoas não conseguirem jogar um jogo como era suposto a uma aeronave despenhar-se matando toda as pessoas a bordo. De modo a que se evite certas consequências, convém que esse software não tenha problemas e funcione como é suposto. Porém, o software é escrito por humanos pelo que está sujeito a ter erros. Para lidar com esta situação, testes de software são feitos, de modo a que se descubra e resolva os problemas no software. Testar software baseado em pesquisa é uma área de teste de software que se tem mostrado bastante bemsucedida na geração de conjuntos de teste unitários otimizados para cobertura de código. Esta abordagem usa algoritmos meta-heurísticos guiados por critérios de cobertura de código para gerar os testes. Neste estudo, foi utilizado um critério de cobertura múltiplo que é composto por oito critérios diferentes: a cobertura de linhas, cobertura de ramos, cobertura de métodos, cobertura de métodos de nível de topo sem exceção, cobertura de ramos direto, cobertura de output, mutação fraca e cobertura de exceções. No que diz respeito aos algoritmos meta-heurísticos, os algoritmos evolucionários são o estado da arte atual, tendo apresentado os melhores resultados em estudos anteriores, superando os algoritmos aleatórios. No entanto, serão os algoritmos evolucionários realmente os melhores algoritmos neste contexto? E quanto aos algoritmos de inteligência de grupo, poderão eles também apresentar bons resultados? Poderá o atual estado da arte ser substituído por um algoritmo de inteligência de grupo? Deste modo, para responder a estas e outras questões, decidimos explorar os algoritmos bio-inspirados, também conhecidos por algoritmos de inteligência de grupo. Estes algoritmos baseiam-se no comportamento de indivíduos que pertencem a grupos na natureza, tais como os enxames de abelhas. Os algoritmos bio-inspirados não são completamente novos na área de testar software. Estudos anteriores mostram que os algoritmos de inteligência de grupo são geralmente melhores que os algoritmos genéticos para testes de estrutura, que na geração de dados para testes o desempenho dos algoritmos depende do tipo de problema e que na geração automática de testes Artificial Bee Algorithm teve o melhor desempenho e o Bat Algorithm é o mais rápido a executar. Nós escolhemos implementar dez algoritmos de inteligência de grupo que possuem várias características diferentes, com diferentes graus de popularidade e que incluem algoritmos antigos e recentes. Os algoritmos escolhidos são: Genetic Bee Colony (GBC) Algorithm, Fish Swarm Algorithm (FSA), Cat Swarm Optimization (CSO), Whale Optimization Algorithm (WOA), Artificial Algae Algorithm (AAA), Elephant Herding Optimization (EHO), Chicken Swarm Optimization Algorithm (CSOA), Moth Flame Optimization (MFO) Algorithm, Grey Wolf Optimization (GWO) Algorithm and Particle Swarm Optimizer (PSO). Para representar os algoritmos evolucionários e servir de comparação contra os algoritmos de inteligência de grupo, escolhemos o Standard Genetic Algorithm (Standard GA), Many-Objective Sorting Algorithm (MOSA) e o Dynamic ManyObjective Sorting Algorithm (DynaMOSA). Este último é o estado da arte atual. Além destes algoritmos, foi implementado mais um algoritmo que é um híbrido (fusão de algoritmos de inteligência de grupo e evolucionários), o Elephant Dynamic Many-Objective Sorting Algorithm (Elephant-DynaMOSA). O EvoSuite foi a ferramenta de geração de testes escolhida para implementar o híbrido e os dez algoritmos de inteligência de grupo por já possuir diversas otimizações, os algoritmos evolucionários já estão implementados e a natureza modular da ferramenta permite facilmente adicionar novos algoritmos ao módulo dos algoritmos. O estudo empírico realizado consiste em duas experiências: a calibração dos parâmetros e a avaliação dos algoritmos. Na primeira experiência, escolhemos vários parâmetros e testámos vários valores destes para cada algoritmo. Foi selecionado um subconjunto de 34 classes e testou-se em 30 seeds diferentes durante 60 segundos para se obter os resultados de cada configuração. De seguida, aplicámos o método estatístico Vargha-Delaney de modo a encontrar a melhor configuração de cada algoritmo. A segunda experiência consistiu em correr a melhor configuração de cada algoritmo em 312 classes com 30 seeds durante 60 segundos. Depois, com o intuito de interpretar os resultados obtidos e conseguir ver qual o melhor algoritmo de inteligência de grupo, se os algoritmos de inteligência de grupo são melhores que os três algoritmos evolucionários e quão boa é a performance do algoritmo híbrido, foram usados os métodos estatísticos de Vargha-Delaney e teste de Friedman. Também se observou a relação entre diversos aspetos dos resultados: a cobertura e o número de gerações, cobertura e a pontuação de mutação, cobertura e diversidade e cobertura e tamanho dos testes. Os nossos resultados revelam que EHO foi o melhor algoritmo de inteligência de grupo e que também superou o Standard GA. Porém, tanto DynaMOSA e MOSA mostram-se superior ao EHO. Em relação ao Elephant-DynaMOSA, que é o híbrido do melhor algoritmo de inteligência de grupo e evolucionário, os resultados foram melhores que o EHO, visto que tem um desempenho semelhante ao MOSA. No final, DynaMOSA foi o algoritmo com maior cobertura média e com os melhores resultados estatísticos nos dois métodos usados. Posteriormente, decidimos discutir outras particularidades dos resultados e propusemos três hipóteses: o melhor algoritmo é superior em todas as classes, qualquer algoritmo consegue atingir pelo menos 50% de cobertura em todas as classes e o desempenho aumenta se o tempo de execução aumentar. A primeira hipótese provou-se falsa visto que houve seis algoritmos estatisticamente melhor que os outros em certas classes: Standard GA, MOSA, DynaMOSA, EHO, Elephant-DynaMOSA e FSA. Isto foi provado ao mostrar-se os valores médios de vários aspetos obtidos nas execuções (número de gerações e testes, tamanho dos testes e cobertura), os resultados do método estatístico Vargha-Delaney e o desempenho de cada algoritmo por critério de cobertura de código. A segunda hipótese também se provou falsa porque 17.5% das classes obtiveram menos de 50% de cobertura independentemente do algoritmo usado. Uma das principais razões é a limitação do EvoSuite como ferramenta de testes, por exemplo não conseguir gerar os inputs necessários para correr a classe. A última hipótese foi a única que se provou ser verdadeira. Para responder a esta hipótese, selecionados a melhor configuração por algoritmo e correu-se 312 classes em uma seed durante uma hora. A cobertura média de todos os algoritmos subiu cerca de 7% e 13 dos 14 algoritmos melhoraram a sua cobertura. Também observámos a evolução dos algoritmos durante a execução e apenas uma minoria dos algoritmos mostrou uma melhoria significativa no desempenho após 60 segundos. Por isso, concluiu-se que apesar da melhoria geral no desempenho, tal melhoria poderá não valer a pena devido ao aumento de recursos necessários com um maior orçamento de tempo. Com isto podemos concluir que apesar do DynaMOSA manter-se como o estado da arte, ele não é o melhor em todas as situações. E que os algoritmos de inteligência de grupo mostraram um certo grau de potencial, principalmente o algoritmo híbrido, Elephant-DynaMOSA. Por isso, nós sugerimos que para trabalho futuro se teste mais algoritmos de inteligência de grupo e algoritmos de múltiplos objetivos, com foco em algoritmos híbridos que combinem os melhores aspetos dos vários algoritmos. Outra iniciativa que pode ser realizada é analisar que algoritmos são melhores para cada critério de cobertura e criar um algoritmo múltiplo capaz de se adaptar e otimizar a procura tendo em conta os critérios de cobertura escolhidos.Search-based software testing is an area of software testing that has shown to be quite successful in generating unit test suites optimized for code coverage. This approach uses meta-heuristic algorithms guided by code coverage criteria (e.g., branch coverage) to generate the tests. When it comes to meta-heuristic algorithms, evolutionary algorithms are the current state-of-the-art, having presented the best results in previous studies. However, are evolutionary algorithms truly the best algorithms in this context? What about bio-inspired algorithms, can they also present good results? Will the current state-of-the-art be replaced with a bio-inspired algorithm? In order to answer these and other questions, we performed an empirical study where we evaluated ten bio-inspired algorithms, three evolutionary algorithms and one hybrid algorithm (a mix of bio-inspired and evolutionary algorithms) on a selection of non-trivial open-source classes. EvoSuite was the test generation tool chosen to implement the ten bio-inspired algorithms and the hybrid since it already has several optimizations and the evolutionary algorithms implemented. Our results show that the Elephant Herding Optimization has the best performance among the bio-inspired algorithms and has surpassed the Standard Genetic Algorithm. However, both the Many-Objective Sorting Algorithm (MOSA) and the Dynamic Many Objective Sorting Algorithm (DynaMOSA) showed superior efficiency compared to all ten bio-inspired algorithms. When it comes to the hybrid algorithm, Elephant Dynamic Many-Objective Sorting Algorithm (Elephant-DynaMOSA), it ended up with a similar performance to MOSA but still worse than the current state-of-the-art, DynaMOSA. We also discussed three hypotheses about the results obtained. Although DynaMOSA remains the state-of-the-art algorithm, it is not the best in all classes. Not only so, but the bio-inspired algorithms showed some potential, especially in the case of the hybrid, Elephant-DynaMOSA. Thus, we suggest future work on hybrid algorithms that fuse the best aspects of several algorithms.Campos, José Carlos Medeiros deFonseca, Alcides Miguel Cachulo AguiarRepositório da Universidade de LisboaDuarte, Gonçalo Miguel Inácio2022-03-18T18:28:23Z202120212021-01-01T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/10451/51843TID:202934608enginfo:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2023-11-08T16:56:48Zoai:repositorio.ul.pt:10451/51843Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-19T22:03:04.316757Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse
dc.title.none.fl_str_mv Bio-inspired optimization algorithms for unit test generation
title Bio-inspired optimization algorithms for unit test generation
spellingShingle Bio-inspired optimization algorithms for unit test generation
Duarte, Gonçalo Miguel Inácio
Testes de software baseados em pesquisa
Algoritmos de inteligência de grupo
Estudo empírico
Teses de mestrado - 2021
Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
title_short Bio-inspired optimization algorithms for unit test generation
title_full Bio-inspired optimization algorithms for unit test generation
title_fullStr Bio-inspired optimization algorithms for unit test generation
title_full_unstemmed Bio-inspired optimization algorithms for unit test generation
title_sort Bio-inspired optimization algorithms for unit test generation
author Duarte, Gonçalo Miguel Inácio
author_facet Duarte, Gonçalo Miguel Inácio
author_role author
dc.contributor.none.fl_str_mv Campos, José Carlos Medeiros de
Fonseca, Alcides Miguel Cachulo Aguiar
Repositório da Universidade de Lisboa
dc.contributor.author.fl_str_mv Duarte, Gonçalo Miguel Inácio
dc.subject.por.fl_str_mv Testes de software baseados em pesquisa
Algoritmos de inteligência de grupo
Estudo empírico
Teses de mestrado - 2021
Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
topic Testes de software baseados em pesquisa
Algoritmos de inteligência de grupo
Estudo empírico
Teses de mestrado - 2021
Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
description Tese de Mestrado, Engenharia Informática (Engenharia de Software), 2021, Universidade de Lisboa, Faculdade de Ciências
publishDate 2021
dc.date.none.fl_str_mv 2021
2021
2021-01-01T00:00:00Z
2022-03-18T18:28:23Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/10451/51843
TID:202934608
url http://hdl.handle.net/10451/51843
identifier_str_mv TID:202934608
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.source.none.fl_str_mv reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron:RCAAP
instname_str Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron_str RCAAP
institution RCAAP
reponame_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
collection Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository.name.fl_str_mv Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
repository.mail.fl_str_mv
_version_ 1799134581093302272