The importance of properly selecting testing techniques is widely accepted in the software engineering community. However, there are chiefly two reasons why the selections now made by software developers cannot be classed as correct. Firstly, they have limited knowledge of all the techniques now available, which means that there are a lot of techniques with which the average developer is unfamiliar. Secondly, the information now available with regard to the different existing testing techniques is mostly procedural (that is, focused on how to use the technique), whereas there is almost no pragmatic information (focused on the result of using the technique). The open problem addressed in this research is precisely how to help developers improve software testing technique selection.
A testing technique characterisation schema is proposed to achieve this objective. Being instantiated for multiple techniques, the schema can be used to build a repository containing information on testing techniques. This schema systematically describes all the testing techniques, focusing mainly on pragmatic aspects of the techniques, leading to more objective selections. The proposed characterisation schema is composed of a non-flat set of attributes, grouped around the elements of the testing process to which they refer. These elements are then grouped around the different testing process stages. This logical grouping makes the schema information coherent.
An empirical and iterative process was followed to arrive at this schema. An empirical process was used, because testing techniques are not founded on a solid theoretical basis. This means that the schema needs to be founded not only on testing theory, but also on what the different subjects related to software testing know about techniques. It is iterative, because a schema based on the theory now existing on testing will be created. This schema is gradually refined with the knowledge of developers, researchers and experts in the area. The completed characterisation schema was evaluated in two different ways. Firstly, the schema is verified empirically by instantiating it for multiple testing techniques. Secondly, an experiment is carried out, in which the repository created in the earlier verification is put into use to select testing techniques for different projects.
Finally, the original contribution of this research is a conceptual tool that can be used by developers to systematically and objectively select the testing techniques to be used in a software project.