In this section, OSS software development process is discussed, different activities related to the test process in OSS are reviewed and compared with those in conventional software, and basics of knowledge as per OSS are given.
Open Source Software Development Process
The earlier research on OSS focused on the aspects of development, project, virtual community, and the roles of contributors (Raymond, 1999; Zhao & Elbaum, 2003; Lonchamp, 2005). In several initial studies, it was observed that there are stark differences between conventional software engineering and OSS development. In particular, it has been found that, in contrast to conventional software processes, the OSS development process is unstructured (Mockus, Fielding, & Herbsleb, 2002; Zhao & Elbaum, 2003) and lacks formal documentation, including that for testing (Lonchamp, 2005; Wang, Guo, & Shi, 2007).
The OSS development process follows a layered approach with an onion shaped structure (Crowston & Howison, 2005; Showole, Sahibuddin, & Ibrahim, 2011; Crowston & Howison, 2006), as shown in Figure 1. At the center of this structure are the core developers who direct the design, contribute most of the code, and steer the evolution of the software. In the innermost ring are the co-developers who are responsible for submitting patches, which are reviewed and checked-in by core developers. In the intermediate ring are the active users who do not contribute code, but provide use cases and bug reports based on their own test suites. Finally, in the outermost ring are the passive users and observers who are not interested in contributing code, but like to stay informed of the development.
Figure 1. The layers in the OSS development process
It is only recently that a generic model of OSS development process based on ’mature’ OSS projects has been proposed (Lonchamp, 2005). (An OSS project is considered mature if it involves more than ten developers.) The model comprises a set of elements, where each element could represent a process role, tool, activity, or document. In this model, developers work concurrently on either coding or testing. Moreover, this model is consistent with previous OSS development process models (Gillian, 2001; Scacchi, 2003), and enables systematic analysis, reuse, and comparison.