7 Principles of testing
One of the most crucial elements of software development is testing, which can be extremely difficult to structure correctly so as to ensure maximum efficiency. As a result, it is always worth going back over your processes and methodology to check that best practice is being adhered to, something the team at eTestware regularly do. A good starting point in this is to revisit the International Software Testing Qualifications Board (ISTQB) and their list of the seven principles of testing…
- Testing shows the presence of defects, not their absence
The objective for a testing team must be to confirm that the product or application under test can function to meet the needs of the end user and stands up to business requirements – it is not to prove that it is defect or error free, because in the software testing industry, it is accepted that this is virtually impossible.
Instead, a wide variety of testing types and different methodologies are deployed to continuously search for and reveal hidden defects.
- Exhaustive testing is impossible
It is a simple fact that exhaustive testing would literally take an unlimited amount of effort, effort that would prove to be highly ineffective and which would doubtless fall outside of the project timeline. Instead, different techniques are prioritised and then used to test specific combinations, thus ensuring the optimal amount of testing based on the risk assessment of what is being tested.
One of the most important skills a testing expert possesses is the ability to identify the most important functions to test.
- Early testing saves time and money
The testing process should begin at the earliest stage possible, so that any defects or errors are detected as soon as possible – simply put, by starting quickly you can limit the amount of issues discovered during the later stages of testing, thus saving money.
What is the earliest stage possible? Generally speaking, you should make a start once the requirements of the test have been defined.
- Defects cluster together
During testing, it might be that the majority of defects discovered are related to a small number of modules. These modules might be particularly complex, or they could feature legacy code but whatever the reason, this is essentially the software testing world’s version of the Pareto Principle – i.e., 80% of the defects will be found within 20% of the modules being tested.
Knowing about these modules can be very useful for testers, as they can then concentrate their efforts on these critical areas.
- Beware of the pesticide paradox
This is a principle stating that if the same set of tests are executed repeatedly, they will eventually be unable to reveal new defects. It is based upon the theory that when crops are continually exposed to pesticides, insects eventually build an immunity to it, and to combat it testers must ensure that they constantly review and revise their test cases.
Experienced testing teams will usually vary their techniques and approach, adding new modifications and scenarios to ensure the maximum efficiency.
- Testing is context dependent
Testing is very much dependent upon context, as the test ‘subject’ will require a specific type of approach; for example, an application designed for use in the cruise industry will be quite different to one in the insurance industry.
- Absence-of-errors is a fallacy
It is possible that software which has been tested and found to be 99% bug-free can still be unusable, this often due to the system being tested for the wrong requirement. As we saw in the very first principle, testing is not only about identifying errors or defects but it is also used to assess whether or not the business needs are being met. Discovering and rectifying these errors is virtually useless if the system does not fulfil the requirements of the end user.
As part of theICEway ecosystem of companies, we are proud to work alongside clients from cruise & travel and healthcare, sharing our software testing knowledge and experiences with their own teams in a collaborative environment.