Localização de defeitos evolucionária baseada em fluxo de dados - Silva Junior, Deuslirio da (2020)
Contexto- Localização de defeitos (Fault Localization) é descrita como o processo de precisamente indicar o(s) elemento(s) que torna(m) defeituoso um dado código de programa. Esta é uma atividade conhecida por ser demasiadamente custosa e monótona. Au-tomatizar esse processo têm sido o objetivo de diversos estudos, tendo se mostrado umproblema desafiador. Uma estratégia comum é associar um valor de propensão a defeitoa cada comando do código. A maioria dos métodos ,que utilizam esta estratégia, são heu-rísticas que usam como fonte de informação os comandos executados durante o teste desoftware. Estas abordagens são conhecidas por serem baseadas no espectro de coberturade fluxo de controle (control-flow).Objetivo- O presente estudo busca investigar outrafonte de informação sobre os defeitos, o fluxo de dados (data-flow), que se expressa pelarelação de locais de definição e locais uso de variáveis. Como o fluxo de dados pode con-tribuir para a localização de defeitos e como utilizá-lo em estratégias evolucionários sãointeresses deste trabalho.Abordagem- São apresentadas duas abordagens evolucioná-rias, uma baseada em algoritmo genético (GA) que busca combinar diferentes heurísticasutilizando fluxo de controle e também fluxo de dados como fonte de informação sobredefeitos. E outra baseada em programação genética (GP), que utiliza de novas variáveisque expressam o espectro de cobertura de fluxo de dados, para gerar novas equações,vocacionadas à localização de defeitos.Resultados- A abordagem GA foi avaliada em7 programas C pequenos que compõem oSiemens Suite,benchmarkbastante utilizadoem abordagens similares, e também em um conjunto de versões defeituosas do programajsoup. As métricas de avaliação utilizadas descrevem a eficácia do ponto de vista absoluto,e também a dependência por estratégias de desempate. Nesse contexto, apesar de a abor-dagem utilizando apenas fluxo de dados produzir resultados competitivos, a abordagemhíbrida (fluxo de controle e fluxo de dados) se destaca por manter bons resultados quantoa eficácia, e ainda ser menos dependente de desempates. A abordagem GP por sua vezfoi investigada quanto à eficácia utilizando métricas populares neste contexto, e tambémquanto a eficiência, através da contagem das ciclos de execuções (gerações) necessáriospara apresentar resultados competitivos. Novamente a estratégia híbrida se destaca porproduzir o mesmo resultas que outros métodos, mas demandando menos gerações paraisso.Conclusões- Os resultados de ambas as abordagens destacam que apesar de fluxode dados apresentar boa eficácia para a localização de defeitos, as estratégias híbridas,utilizando fluxo de controle e fluxo de dados como fontes de informação sobre defeitos, superam todas os métodos usados como comparação. Porém mais investiga-ções devem ser conduzidas em diferentes conjuntos de programas.