TL;DR: It is shown that software failures in a variety of domains were caused by combinations of relatively few conditions, which has important implications for testing.
Abstract: Exhaustive testing of computer software is intractable, but empirical studies of software failures suggest that testing can in some cases be effectively exhaustive. We show that software failures in a variety of domains were caused by combinations of relatively few conditions. These results have important implications for testing. If all faults in a system can be triggered by a combination of n or fewer parameters, then testing all n-tuples of parameters is effectively equivalent to exhaustive testing, if software behavior is not dependent on complex event sequences and variables have a small set of discrete values.
TL;DR: The author has identified two problems that need to be overcome in order that some of the powerful testing techniques be used in practice: performance and effectiveness.
Abstract: The author has identified two problems that need to be overcome in order that some of the powerful testing techniques be used in practice: performance and effectiveness. The testing methods referred to are dataflow and mutation testing. >
TL;DR: It is argued that until random testing of a million points becomes practical, testing for quality is only a poor competitor for other heuristic defect-detection methods.
Abstract: The relationship between software testing and reliability is discussed. Two kinds of reliability models, reliability-growth models, which are applied during debugging, and reliability models, which are applied after debugging, are described. Several reasons for the failure of conventional reliability theory in software engineering are presented. It is argued that until random testing of a million points becomes practical, testing for quality is only a poor competitor for other heuristic defect-detection methods. >
TL;DR: The key to software testing is trying to find the modes of failure - something that requires exhaustively testing the code on all possible inputs.
Abstract: Software testing is a critical element of software quality assurance and represents the ultimate review of specification, design and coding. Software testing is the process of testing the functionality and correctness of software by running it. Software testing is usually performed for one of two reasons: defect detection, and reliability estimation. The problem of applying software testing to defect detection is that software can only suggest the presence of flaws, not their absence (unless the testing is exhaustive). The problem of applying software testing to reliability estimation is that the input distribution used for selecting test cases may be flawed. The key to software testing is trying to find the modes of failure - something that requires exhaustively testing the code on all possible inputs. Software Testing, depending on the testing method employed, can be implemented at any time in the development process.
TL;DR: 3 techniques: error-avoidance, error-check and fault-tolerance are expatiated, and also 2 methods: passable testing and failure testing are introduced.
Abstract: Before being submitted to the client, the software product should be taken a very comprehensive testing to ensure it can run reliably and stably. In the quality viewpoint, software testing is the most important means to guarantee the software quality.No matter to object-oriented programming or to procedure-oriented programming, software testing can only be fulfilled by a set of testing techniques and methods on earth. This paper expatiates 3 techniques: error-avoidance, error-check and fault-tolerance, and also introduces 2 methods: passable testing and failure testing.