Bit-wise All Edge-pairs Coverage - Silva, Matheus; Chaim, Marcos (Anais do Simpósio Brasileiro de Engenharia de Software (SBES), 2023)
Structural testing is widely used to detect software failures and to assess test suites quality. Without automated support, though, its use on programs developed at industrial settings is hardly feasible. Structural testing is carried out by means of test criteria based on program code coverage. Program code is usually abstracted into a graph, and control flow-based code coverage is determined in terms of graph elements (e.g., nodes and edges). All edge-pairs is a relatively recent criterion when compared to all nodes and all edges criteria. Studies, though, indicate that all edge-pairs shows promising results at detecting failures. We present a novel approach to track edge-pairs based on bit-wise operations that are also applicable to nodes and edges. Empirical data suggest that all edge-pairs adds new paths to be tested at a tracking cost indistinguishable in comparision to any control flow testing requirement, be it nodes or edges, using bit-wise operations. Furthermore, the cost of the novel bit-wise approach is comparable to the cost of production-grade tools that track nodes and edges.