1. Incomplete testing
Obviously, due to the lack of completeness of software requirements, the combination of software logic path, the large number of input data and the diversity of results, even a very
Its simple program, in order to exhaust all the logical paths, all input data and verify all the results is very difficult one thing. Let's give a simple example
For example, ask for a greatest common divisor of two integers. Its input information is two positive integers. But if we test the numbers in the whole positive integer field,
, from the infinite number of its numbers we can prove that such tests are not feasible in real life. As a software test, we generally adopt such
Price class and boundary value analysis and other measures to carry out actual software testing, the search for the minimum set of use cases becomes a necessary way to streamline our testing complexity.
2. Test for Immunity ( software defect Immunity )
Software defects, like viruses, have terrible "immunity", the more tests the testers use, the more immune they are, the more software they need to find
More difficult to get trapped. We can introduce this conclusion by the mathematical probability theory. Suppose there are 500 software defects in a 50000-line program and these
When software errors are distributed evenly, a software flaw can be found on every 100 rows. We assume that testers are using some sort of method to look for software defects
is x hours/100 lines. According to this calculation, the software has 500 defects, we find a software defect needs X hours, when the software only has 5 errors
Error, we need 100X hours for each software defect. Practice has proved that the actual testing process is more stringent than the above assumptions, and we must
Change the different test methods and test data. This example also illustrates the use of a single approach in software testing that is not efficient and complete for all software
Software testing should be tested in many ways as much as possible.
3. Testing for Benefit
Why we need to implement software testing is to improve the project's quality and effectiveness ultimately to improve the overall effectiveness of the project. It's not hard for us to conclude that we are implementing
The degree to which software testing should be mastered. Software testing should find a balance between software testing costs and software quality benefits. This balance is what we are.
The degree to be observed in the implementation of software testing. Unilateral pursuit will inevitably undermine the value and significance of software testing. Generally speaking, in software testing I
We should try to keep the software test simple, do not complicate the software test too much, take the physicist Albert Einstein said: Keep it easy
But isn't too simple.
4. Inevitability of defects
In software testing, not all software defects can be repaired due to the wrong relevance. Some software defects can be repaired but are fixed
In the process, we will inevitably introduce new software defects. Many software defects are contradictory, and a contradiction disappears inevitably leads to another contradiction.
The production. For example, when we solve the shortcomings of universality, it often leads to the defect of execution efficiency. Moreover, in the process of repairing defects, we will often
Limited by time, cost and so on, it is not possible to effectively and completely repair all software defects. Therefore, the evaluation of the importance of software defects, the scope of impact, select
Choosing a compromise scheme or considering software defects from non-software factors (such as improving hardware performance) becomes a must-have for us in the face of software defects.
Fact.
Some common sense of software testing