Empirical research on concurrent software testing: A systematic mapping study
Introduction
The availability of multicore processors and inexpensive clusters has increased the demand both for concurrent applications and for testing techniques for their validation. Modern business applications use concurrency to improve overall system performance, consequently, researchers have developed a variety of testing techniques for concurrent software. However, testing teams generally rely on their own knowledge and experience when choosing technique(s) for each project, resulting in the repeated selection of same technique(s), whether or not they are most appropriate.
One of the difficulties in transfer of knowledge and research results from academia to industry is the lack of evidence of the applicability of results and techniques to specific software projects [1]. Such evidence should be gathered via empirical software engineering (ESE) methods that provide insights into the benefits and limits of each technique [2]. Secondary studies on concurrent software testing focus on the categorization of testing techniques, methodologies, and tools [3], [4], [5], [6] (see Section 2 for more details). However, empirical validation for concurrent software testing techniques is still lacking [1], [2].
Researchers use controlled experiments, case studies, and surveys as empirical methods to evaluate new techniques and new research. These methods produce data that helps researchers and practitioners decide whether a technique is appropriate for a given context. These empirical methods also help researchers identify specific factors that impact on the effectiveness of techniques and lead to empirically-based decisions about research and practice [7]. Therefore, they provide an important scientific basis for software engineering [8].
This paper discusses a systematic mapping study to understanding the current state-of-the-art of the empirical research on concurrent software testing research. The overall goal is to gather and synthesize empirical research and help developers evaluate the strength of evidence for the findings. The systematic mapping aims at:
- 1.
providing an overview of the empirical studies about concurrent software testing;
- 2.
identifying the concurrent software testing techniques that have empirical studies and the type of validation approach used;
- 3.
analyzing the strength of the empirical studies and discussing the findings and limitations of the evidence;
- 4.
discussing the design of the empirical studies along with the challenges and research opportunities;
- 5.
identifying gaps in empirical research on concurrent software testing; and
- 6.
providing guidance for the design of empirical studies about concurrent software testing.
The remainder of the paper is organized as follows. Section 2 provides an overview of the related work. Section 3 describes the systematic mapping protocol. Section 4 discusses the strengths of the empirical studies identified in the mapping study. Section 5 answers the research question trough the study results. Section 6 addresses the way researchers conduct empirical studies in for concurrent software testing and provides a guide for the planning of new studies. Section 7 discusses the limitations and validity threats of the mapping study. Finally, Section 8 provides the paper conclusions and suggests future work.
Section snippets
Related work
This section addresses some fundamentals about concurrent software testing and provides an overview of prior work. It also provides a brief overview of the types of empirical studies relevant to this review.
Systematic mapping plan
The following subsections describe the steps of the mapping protocol based on the model by Petersen et al. [31].
Strength of empirical evidence
This section discusses the strengths of the empirical studies conducted to validate concurrent software testing techniques. We use the grouping in Table 6 [40], which differ based upon the information used for test data selection, to organize of the discussion.
The following subsections provide an overview of each type of technique, the main conclusions drawn from the studies about the techniques, and the limitations of those studies. Appendix B provides the details from each included study.
Results and synthesis
We organize this section around the research questions from Table 2 using the evidence from Section 4.6.
Designing empirical studies in concurrent software testing
The guidance in this section comes from our literature review and from our own experiences [95]. Throughout this section, we use examples from the literature review to suggest experimental content including study goals, study designs, subject programs, variables, and metrics. Therefore, this section provides an outline for designing studies about concurrent software testing techniques.
The following subsections describe the steps in the experimental study design process. We believe by providing
Threats to validity
This section describes the threats of our research.
Construct Validity threats result from the specific set of papers included in the mapping study. Our search string, choice of databases, and paper selection process may have inadvertently omitted relevant papers. We mitigated this threat by using a systematic process and periodic checking of results by a second author.
Internal Validity threats relate to the accuracy of conclusions on cause and effect data extracted from each study. We used a
Conclusions
This paper describes a systematic mapping that identifies and classifies empirical studies on concurrent software testing techniques. None of the existing secondary studies explicitly focused on the empirical validation of the proposed techniques. Therefore, this paper fills a gap in the literature. Our systematic mapping study includes 109 studies that contain empirical validation of concurrent software testing techniques. Based on those studies, we can draw the following conclusions:
- 1.
The
Acknowledgment
The authors acknowledge São Paulo Research Funding, FAPESP - Sao Paulo Research Funding for the financial support under process no. 2015/23653-5 and 2013/05046-9.
References (150)
- et al.
Empirical evaluation of a new composite approach to the coverage criteria and reachability testing of concurrent programs
Softw. Testing, Verif. Reliab.
(2015) - et al.
Guide to Advanced Empirical Software Engineering
(2008) - et al.
Experimentation in Software Engineering: An Introduction
(2000) - et al.
Are concurrency coverage metrics effective for testing: a comprehensive empirical investigation
Softw. Testing Verif. Reliab.
(2015) - et al.
Guide to the software engineering body of knowledge (SWEBOK(r)): Version 3.0
(2014) - et al.
Fair stateless model checking
SIGPLAN Notes
(2008) - et al.
MultiOtter: Multiprocess Symbolic Execution
Technical Report
(2011) - et al.
Towards a framework and a benchmark for testing tools for multi-threaded programs.
Concurrency Comput.
(2007) - et al.
Clash of the titans: tools and techniques for hunting bugs in concurrent programs
7th Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging
(2009) - et al.
Towards building a solid empirical body of knowledge in testing techniques
ACM SIGSOFT Softw. Eng. Notes
(2004)