A Strategy to Support the Infeasible Test Requirements Identification - Choma Neto, João; Chagas, Ricardo; Mori, Allan; Vilela, Ricardo; Colanzi, Thelma; Souza, Simone (Anais do Simpósio Brasileiro de Testes de Software Sistemático e Automatizado (SAST), 2022)
[Context:] Software testing is an important activity to ensure software quality. However, this is expensive because it is hard to generate and select practical test cases to execute a software system. Many infeasible test requirements collaborate to increase the effort on test data generation, for instance, infeasible paths. The identification of infeasible test requirements is not a trivial task and is currently performed manually. Published works tackle this problem and propose a manual process or brute force to mitigate infeasible test requirements. [Objective:] Our goal is twofold, to propose a strategy based on the infeasible path properties and automate the identification process to reveal infeasible and dark-infeasible test requirements without using input data. [Methodology:] We build a strategy to reveal infeasible and dark-infeasible test requirements. Afterward, we automate the strategy by developing a tool to support and scale the infeasible path-revealing process. The strategy was implemented in a tool, called Fi-paths, which supports the strategy. The tool statically analyzes the properties’ source code to reveal infeasible and dark-infeasible test requirements. To evaluate the strategy, we conducted an experimental study using Fi-paths and analyzed a set of sequential programs implemented in the Java language. [Results and conclusion:] The strategy indicates which regions of the source code had the properties, as well as which testing requirements are infeasible and potentially infeasible. The strategy helps the tester by indicating which code regions need more attention. On the other hand, the strategy has the potential to help an algorithm generate input data because it can be used as a stopping criterion. Since the strategy indicates which test requirements may exhibit infeasible behavior, it allows the algorithm to be optimized by accepting recommendations from the tester to cover problematic testing requirements.