1. Introduction
Software development is an error prone task. To achieve quality software products, it is essential to perform Verification & Validation (V&V) activities throughout the software development process. Verification and Validation (V&V) activities intend to ensure, respectively, that a software product is being built in conformance with its specification, and that it satisfies its intended use and the user needs [12]. V&V activities can be static or dynamic. Static V&V activities are typically done by means of technical reviews and inspections, and they do not require code execution. Dynamic V&V activities, in turn, involve code execution, and are done by means of testing [10, 25]. Thus, Software Testing consists of dynamic V&V of the behavior of a program on a finite set of test cases, against the expected behavior [12]. Advances in technology and the emergence of increasingly complex and critical applications require using testing strategies, in order to achieve high quality and reliability software products [3]. Currently, software testing is considered as a process consisting of activities, techniques, resources and tools [25, 26]. During software testing, a significant amount of information is generated. In fact, software testing is a knowledge intensive process, and thus it is important to provide computerized support for tasks of acquiring, processing, analyzing and disseminating testing knowledge for reuse [3]. In this context, testing knowledge should be captured and represented in an affordable and manageable way, and there- fore, could make use of principles of knowledge management. According to O’Leary [29], Knowledge Management (KM) formally manages knowledge resources in order to facilitate access and reuse, typically by using advanced Information Technology (IT), playing a major supporting role in KM. IT-supported KM solutions are built around an organizational structure that integrates informal, semiformal, and formal knowledge to facilitate its access, sharing, and reuse [34]. The main goal of KM is to pro- mote knowledge storage and sharing, as well as the emergence of new knowledge [30]. The Software Engineering community has recognized the need for managing knowledge and that it could learn much from the KM community [11]. Software development is a quickly changing, knowledge-intensive business, involving many people working in different phases and activities [24]. Knowledge in Software Engineering is diverse and organizations have problems in identifying its content, location, and use. An improved use of this knowledge is the basic motivation and driver for KM in Software Engineering. As a consequence, KM in Software Engineering has been subject of deeper analyses, such as those conducted by Rus and Lindvall [24], and by Bjørnson and Dingsøyr [11]. As a sub-area of Software Engineering, Software Testing also presents the same features. Knowledge can be applied to different testing tasks and purposes [15]. Knowledge on application domain and on testing techniques, as well as personal experiences, can be used to guide test case design, and to recognize failures. In an exploratory approach for software testing, where test cases are not defined in advance in an established test plan, but are dynamically designed, executed, and modified, tester knowledge is crucial. In this case, knowledge together with the observed actual behavior of the tested system can be used to create new, better tests during exploratory testing [15]. Given the great importance of knowledge for software testing, and the potential benefits of managing this knowledge, this paper aims to identify the state of the art on KM initiatives in Software Testing, by means of a mapping study. A mapping study provides a broad overview of a research area in order to determine whether there is research evidence on a particular topic. Results of a mapping study help identifying gaps in order to suggest future research and provide a direction to appropriately position new research activities [18, 19, and 32]. The mapping study presented in this paper is an extension of an initial study we performed to identify publications discussing principles of KM applied to software testing, which can be referred to in [35]. In this initial study, we searched studies published until January 2013, and investigated the following aspects: study distribution over the years, purposes of employing KM in software testing, types of knowledge items typically managed in the context of software testing, supporting technologies used, and benefits and problems reported on implementing KM initiatives in software testing. In the extension presented in this paper, we include studies published until December 2013, and we change the search string to incorporate other terms that are also related to KM, leading to new relevant studies. Moreover, new studies were selected by means of snowballing the primary study references, as well as by directly searching publications from researchers and research groups of the studies previously selected. Snowballing is a process that checks if the selected studies cite other relevant studies, retrieve those studies, and continue this process until no more relevant studies are found [13]. Finally, we also enlarge the scope of our investigation, by considering other aspects not previously addressed in the initial study, namely: source of the publication, research focus from the testing perspective, research focus from the KM perspective, and type of the research performed. The remainder of this paper is organized as follows. Section 2 presents a brief overview of KM and software testing, as well as related research. Section 3 discusses the research method applied to perform the mapping study. Results are presented in Section 4. Section 5 discusses the results, their implications, and limitations. Finally, Section 6 concludes the paper and presents directions for future work.