01-08-2012, 04:05 PM
Software Testing Techniques
500Testing Techniques.pdf (Size: 96.17 KB / Downloads: 124)
Introduction
Software testing is as old as the hills in the history of digital computers. The testing of software is an
important means of assessing the software to determine its quality. Since testing typically consumes
40~50% of development efforts, and consumes more effort for systems that require higher levels of
reliability, it is a significant part of the software engineering. With the development of Fourth generation
languages (4GL), which speeds up the implementation process, the proportion of time devoted to testing
increased. As the amount of maintenance and upgrade of existing systems grow, significant amount of
testing will also be needed to verify systems after changes are made [12]. Despite advances in formal
methods and verification techniques, a system still needs to be tested before it is used. Testing remains the
truly effective means to assure the quality of a software system of non-trivial complexity [13], as well as
one of the most intricate and least understood areas in software engineering [19]. Testing, an important
research area within computer science is likely to become even more important in the future.
The Taxonomy of Testing Techniques
Software testing is a very broad area, which involves many other technical and non-technical areas, such as
specification, design and implementation, maintenance, process and management issues in software
engineering. Our study focuses on the state of the art in testing techniques, as well as the latest techniques
which representing the future direction of this area. Before stepping into any detail of the maturation study
of these techniques, let us have a brief look at some technical concepts that are relative to our research.
The Goal of Testing
In different publications, the definition of testing varies according to the purpose, process, and level of
testing described. Miller gives a good description of testing in [13]:
The general aim of testing is to affirm the quality of software systems by systematically exercising the
software in carefully controlled circumstances.
Miller’s description of testing views most software quality assurances activities as testing. He contends
that testing should have the major intent of finding errors. A good test is one that has a high probability of
finding an as yet undiscovered error, and a successful test is one that uncovers an as yet undiscovered error.
This general category of software testing activities can be further divided.
Functional Technique and Structural Technique
The information flow of testing is shown in Figure 1. As we can see, testing involves the configuration of
proper inputs, execution of the software over the input, and the analysis of the output. The “Software
Configuration” includes requirements specification, design specification, source code, and so on. The
“Test Configuration” includes test cases, test plan and procedures, and testing tools.
Based on the testing information flow, a testing technique specifies the strategy used in testing to select
input test cases and analyze test results. Different techniques reveal different quality aspects of a software
system, and there are two major categories of testing techniques, functional and structural.
Scope of the Study
Technical Scope
In this paper, we focus on the technology maturation of testing techniques, including these functional and
structural techniques that have been influential in the academic world and widely used in practice. We are
going to examine the growth and propagation of the most established strategy and methodology used to
select test cases and analyze test results. Research in software testing techniques can be roughly divided
into two branches: theoretical and methodological, and the growth in both branches push the growth of
testing technology together. Inhibitors of maturation, which explains why the in-depth research hasn’t
brought revolutionary advantage in industry testing practice, are also within our scope of interest.