7.1SEMay 19
Combined Program Analysis Techniques: A Systematic Mapping StudyPietro Braione, Giovanni Denaro, Luca Gugliemo et al.
Context. Since the eighties, the combination of program analysis techniques has been increasingly recognized as a promising approach to overcome the limitations of standalone methods. While individual techniques, based on either static or dynamic analysis, address important challenges in software dependability, their integration often yields synergistic effects on precision, coverage and insights. Objective. This paper surveys a significant portion of the modern literature on combining program analysis techniques, consisting of 248 primary studies, with the aim of cataloging the types of interactions and synergies that were exploited to define combined-program-analysis techniques so far. The goal is to provide a structured understanding of why and how program analysis techniques can be conjoined, and which benefits can arise from their interactions. Method. We devise an original taxonomy that classifies combined-program-analysis techniques according to their aimed synergistic effects, inter-analysis workflows and interaction schemata (to which we refer to as mapping functions). We then map the primary studies to the taxonomy, answering research questions on which synergistic effects those studies pursued via the combination of analysis techniques, which inter-analysis workflows they embodied, and which types of mapping functions they exploited. Conclusion. Our taxonomy and literature mapping reveal the commonalities and the differences, in terms of goals and patterns, in the design of combined-program-analysis techniques. Thereby we provide a framework of concepts that can foster the ability of researchers and practitioners to reason on existing combined-program-analysis techniques, and steer further research on new useful combined-program-analysis techniques and analysis frameworks.
10.4SEFeb 28, 2021
On Introducing Automatic Test Case Generation in Practice: A Success Story and Lessons LearnedMatteo Brunetto, Giovanni Denaro, Leonardo Mariani et al.
The level and quality of automation dramatically affects software testing activities, determines costs and effectiveness of the testing process, and largely impacts on the quality of the final product. While costs and benefits of automating many testing activities in industrial practice (including managing the quality process, executing large test suites, and managing regression test suites) are well understood and documented, the benefits and obstacles of automatically generating system test suites in industrial practice are not well reported yet, despite the recent progresses of automated test case generation tools. Proprietary tools for automatically generating test cases are becoming common practice in large software organisations, and commercial tools are becoming available for some application domains and testing levels. However, generating system test cases in small and medium-size software companies is still largely a manual, inefficient and ad-hoc activity. This paper reports our experience in introducing techniques for automatically generating system test suites in a medium-size company. We describe the technical and organisational obstacles that we faced when introducing automatic test case generation in the development process of the company, and present the solutions that we successfully experienced in that context. In particular, the paper discusses the problems of automating the generation of test cases by referring to a customised ERP application that the medium-size company developed for a third party multinational company, and presents ABT2.0, the test case generator that we developed by tailoring ABT, a research state-of-the-art GUI test generator, to their industrial environment. This paper presents the new features of ABT2.0, and discusses how these new features address the issues that we faced.
3.6SEFeb 22, 2021
Towards Evidence-based Testability MeasurementsLuca Guglielmo, Andrea Riboni, Giovanni Denaro
Evaluating Software testability can assist software managers in optimizing testing budgets and identifying opportunities for refactoring. In this paper, we abandon the traditional approach of pursuing testability measurements based on the correlation between software metrics and test characteristics observed on past projects, e.g., the size, the organization or the code coverage of the test cases. We propose a radically new approach that exploits automatic test generation and mutation analysis to quantify the amount of evidence about the relative hardness of identifying effective test cases. We introduce two novel evidence-based testability metrics, describe a prototype to compute them, and discuss initial findings on whether our measurements can reflect actual testability issues.