Principles of testing

Lecture



Software testing - creative and intellectual work. Developing correct and effective tests is quite a difficult task. The testing principles presented below have been developed over the past 40 years and are a general guide to testing in general.

1. Testing reveals defects

Testing can show the presence of defects in the program, but not prove their absence. Nevertheless, it is important to create test cases that will find as many bugs as possible. Thus, with proper test coverage, testing reduces the likelihood of software defects. At the same time, even if the defects were not found during the testing process, it cannot be argued that they are not.

2. Exhaustive testing is not possible.

It is impossible to conduct an exhaustive test, which would cover all combinations of user input and system states, with the exception of very very primitive cases. Instead, you need to use risk analysis and prioritization, which will allow you to more effectively distribute efforts to ensure the quality of software.

3. Early testing

Testing should begin as early as possible in the software development life cycle, and its efforts should be focused on specific goals.

4. The accumulation of defects

Different modules of the system may contain different numbers of defects - that is, the density of the accumulation of defects in different elements of the program may differ. Testing efforts should be distributed in proportion to the actual defect density. Basically, most of the critical defects are found in a limited number of modules. This is a manifestation of the Pareto principle: 80% of problems are contained in 20% of the modules.

5. The pesticide paradox

By chasing the same tests over and over again, you will find that they find fewer and fewer new errors. As the system evolves, many of the previously found defects are fixed and the old test cases no longer work.

To overcome this paradox, it is necessary to periodically make changes to the test suites used, review and correct them so that they respond to the new state of the system and allow you to find as many defects as possible.

6. Testing is context sensitive.

The choice of methodology, technique and type of testing will depend directly on the nature of the program itself. For example, software for medical needs requires much more rigorous and thorough testing than, say, a computer game. For the same reasons, a site with high traffic must go through serious performance testing to show the ability to work under high load conditions.

7. Misconception about the absence of errors.

The fact that testing has not found defects does not mean that the program is ready for release. Finding and correcting defects will not be important if the system is inconvenient to use, and will not meet the expectations and needs of the user.

And a few more important principles:

- testing should be done by independent experts;

- attract the best professionals;

- test both positive and negative scenarios;

- Do not allow changes in the program during testing;

- specify the expected result of the tests.


Comments


To leave a comment
If you have any suggestion, idea, thanks or comment, feel free to write. We really value feedback and are glad to hear your opinion.
To reply

Quality Assurance

Terms: Quality Assurance