7 basic testing principles

Olga Lokatun
|
April 13, 2022

During testing, it is quite important to achieve the best results possible without deviating from the goal and staying on budget and on time. To prevent an unreasonable increase in expenses and time spent, it is essential to draft error-catching test cases and to create an effective test strategy based on the basic principles of testing.

Here are the fundamental seven testing principles that are widely practiced in the software industry.

 

       Testing shows the presence of defects

Thorough testing of a product or application is not a silver bullet that guarantees a bug-free product or system. However, it can significantly reduce the number of defects buried in software.

As a result, we use testing as a means to help identify issues, resolve them and reduce their occurrence.

 

       Exhaustive testing is not possible

Exhaustive testing is impossible means, we can never test all combinations of inputs, data, and variables. With input variables alone having an infinite number of variations, testing an application from every angle is definitely not possible within a reasonable timeframe.

So instead of running through every possible test, we can focus on some important testing criteria effects such as risks and priorities to set up the test strategy.

By focusing on testing around the areas where risks are most likely to happen, we can ensure businesses about the software's quality. Careful planning with risk assessment will enable us to maintain excellent coverage, which will provide confidence in the software.

 

       Early testing

Early testing is fundamentally important in the software development lifecycle (SDLC). The later you find a problem, the more it will cost to fix.

To avoid finding defects late, we should start as soon as possible with static and dynamic testing activities. For example, we should test requirements early on in the SDLC. This will result in catching defects early, which is easier and cheaper than doing so when it would require reviewing the code and changing whole areas of functionality. Oftentimes, this will lead to fewer problems with missed deadlines or overruns.

Testing of requirements before coding is a major cost-saving measure.

 

       Defect clustering

The principle of defect clustering is based on the Pareto principle, also known asthe “80-20 rule”. This principle states that 80% of defects are found in just 20% of the modules.

The majority of defects are found in a few modules. Knowing this principle and if we find one issue in a particular module, there is a high likelihood that many more defects exist in that module.

For an effective testing strategy, it is necessary to thoroughly examine these areas of the software. The defect clustering principle relies on the QA teams’ knowledge and experience to identify the potential modules to test. Therefore, that can help save time and effort as the team can focus on those areas.

 

       Pesticide paradox

It is important to remember that a test cannot be effective forever. When the same tests are run over and over again they can become ineffective and the ability to identify any new bugs will eventually reduce. To overcome the Pesticide Paradox and to make testing more effective, it is really important to evaluate existing test cases, test data, and test scenarios on a regular basis and keep them up-to-date as well as add new test cases in order to uncover further issues and vulnerabilities.

Testing should focus on continuous improvement during the complete development life cycle.

       Testing is context-dependent

The importance of context cannot be underestimated. Testing is all about understanding context. All the developed applications are not identical. Various products or projects contain different elements, features, and requirements. So we need to understand the type and nature of the project to be worked on before we can plan what tests need to be done.

Depending on the application, we may use a different approach, methodologies, techniques, and types of testing in order to get the best outcome.

Different types of software need different types of testing (e.g. testing a health-industry application is done differently than testing a gaming application due to the different risks involved).

 

       Absence of errors fallacy

The goal of testing is not only to find defects but also to ensure that the application addresses the business needs and requirements. So in this sense, it is irrelevant how error-free your system is; if the usability is so poor users are unable to navigate, or it does not meet business requirements then it will become unusable software, despite having few bugs.

A key way to ensure your testing is effective is to make sure that each business requirement has been well understood and considered during testing.

      Conclusion

Applying these rational principles to testing could ensure more efficiency and could improve the quality of our overall testing strategy. By combining all these principles, we can better utilize our time, effort, and resources while achieving optimum test results.

written by
Olga Lokatun
QA engineer