A study on the “necessary and sufficient conditions for testing”.
In the article “QA / QC / Testing – what’s the difference?”, the concept of software testing was formulated:
Software Testing is one of the quality control techniques and includes the activities of Test Management, Test Design, Test Execution and Test Analysis.
We bring to your attention a study on “necessary and sufficient conditions for testing.”
Consider the definitions of the required concepts:
- The necessary conditions for the truth of the statement A are conditions without which A can not be true.
- Sufficient conditions are called, in the presence (performance, observance) of which assertion A is true.
Necessary Conditions for Software Testing
Let’s start with the necessary conditions. Obviously, testing is not possible without the test object, hence we get the first condition: the existence of a test object available for testing. Further, in order for testing to take place, we need a performer, so the second necessary condition is the presence of the performer, and they may be a person or a machine, or a combination of a person + a machine.
Sufficient Conditions for Software Testing
We now turn to the definition of sufficient conditions. Since not every action performed on the program, in order to obtain the expected behavior, is testing, the question arose that the goal in itself, namely: testing, is one of sufficient conditions. Taking as a basis that the existence of a test plan directly indicates the intention of testing, we get that the test plan is one of sufficient conditions.
When testing, a person or machine will have to perform some actions to verify the real and expected behavior of the program. Hence, the availability of test cases / tests is also a sufficient condition.
To confirm that the testing has occurred, we need a report on the results. As they say: “there is a report – there is testing, there is no report – there is no testing”. So, to confirm that the testing took place, the test results report should be generated.
In total, we have the following necessary and sufficient conditions for testing:
The Necessary conditions:
- Availability of testing object available for testing
- Availability of the performer (s) (depending on the type of testing they can be either a person or a machine or a combination of a person + machine)
The Sufficient conditions:
- Availability of testing facility available for testing
- Availability of the performer (her) (depending on the type of activity at different phases, they can be either a person or a machine or a combination of a person + a machine)
- Availability of test plan
- Availability of test cases / tests
- Availability of a report confirming the fulfillment of tasks and the achievement of goals for testing the facility
Let’s return to the proposed definition of software testing and consider whether it does not contradict the above conditions. As far as we can judge, everything converges: the presence of a test plan indicates activity in the planning area, test cases and tests – about design, performer – about the performance of tests, the availability of the report indicates the analysis of the results.