Effective software fault localization based on complex network theory / Abubakar Zakari - Abubakar , Zakari (2019)
Effective debugging is necessary for producing high quality and reliable software. Fault localization plays a vital role in the debugging process, and it is also the most tedious and expensive activity in program debugging. As such, effective fault localization techniques that can identify the exact location of faults are most needed. Despite various fault localization techniques proposed, their application in multiple-fault programs is limited. The presence of multiple faults in a program reduces the efficacy of existing fault localization techniques to locate faults effectively due to fault interference phenomenon. Moreover, most of these techniques are unable to localize multiple faults simultaneously in a single diagnosis rank list. This has led researchers to adopt approaches such as one bug-at-a-time debugging approach (OBA) and parallel debugging approach. However, using OBA debugging approach increases software time-to-delivery and potentially leads to more faults during regression testing, while utilizing k-mean clustering algorithm with Euclidean distance metric to group failed tests based on their execution profile similarity in parallel debugging approach is claimed to be problematic and inappropriate. This work aims to conduct an investigative study of the claimed problematic parallel debugging approach in comparison with OBA debugging approach and MSeer parallel debugging approach in terms of localization effectiveness. Furthermore, two novel fault localization techniques based on complex network theory, namely multiple fault localization based on complex network theory (FLCN-M) and single fault localization based on complex network theory (FLCN-S), are proposed to improve localization effectiveness, and to aid developers’ to localize multiple faults simultaneously in a single diagnosis rank list. The proposed techniques rank faulty statements based on their behavioral abnormalities and distance between program statements in both passed and failed tests execution. In the case where a developer has checked 70% of the program statements and cannot fully localize all the multiple faults in a single diagnosis rank list, rather than resorting to using OBA bugging approach, a newly proposed community-based fault isolation approach that makes use of a divisive network community clustering algorithm is applied to aid in isolating faults into different fault-focused communities (clusters), each targeting a single fault. In the proposed fault isolation approach, a community weighting and selection mechanism is introduced to aid in prioritizing highly important communities for developers to debug the faults simultaneously in parallel. The experiments performed on several varied multiple-fault programs show that even though the claimed problematic parallel debugging approach is more effective in comparison with the OBA debugging approach, it is not as effective when compared with MSeer parallel debugging approach. The experimental results also show that FLCN-M is much more effective in locating multiple faults in comparison with two similarity coefficient-based techniques (i.e. Ochiai coefficient and Tarantula coefficient) and an existing fault localization technique based on software network centrality measures. FLCN-S shows significant improvement in terms of localization effectiveness on single-fault programs in comparison with Ochiai based and Jaccard-based techniques. The proposed community-based fault isolationapproach shows significant improvement where it performs significantly better in terms of localization effectiveness in comparison with the claimed problematic parallel debugging approach and MSeer parallel debugging approach. Overall, the proposed techniques and approach show improvement in fault localization effectiveness in both single-fault and multiple-fault programs over the baseline techniques and approaches.