7 Principles Of Software Testing

Ruwanthi Ranasinghe
5 min readSep 15, 2021

--

Testing is a major thing in software development. It may also be a complex activity to structure correctly, and in a way that supports maximum efficiency. Due to this complexity, it is always helpful to display processes and guidelines to ensure that they follow the best practices and a great place to start with the ISTQB (International Software Testing Qualifications Board) indicating seven basic principles of tests.

Why we use seven fundamental principles of testing?

Applying testing principles to our test, could ensure more efficiency and could improve the quality of our overall testing strategy. We can achieve optimum test results while handling software testing. Here are the 7 testing principles that we commonly use.

Testing Principles

01) Testing shows the presence of defects

“We can never say that our system is defect free”

Major thing is, as a tester we test software to determine defects. So, we can be confident that the system is working properly. Anyhow, during the testing, the software does not fully verify that there are no defects at all. Testing can significantly reduce the number of undetected defects hidden in the software but it cannot prove that software is 100% defect free. Moreover, if no defects are found, there is no evidence of accuracy.

Example: Let’s assume a mobile phone with any brand, some features may not work with our expectation when we use it for a while.

Can we imagine that kind of branded mobile company has marketed their product without testing it to reduce their reputation?

So, testing can show that it is defective, but it never proves that defects are none.

02) Exhaustive testing is impossible

“Impossible to test everything”

We can simply say this is the way of testing our system with all possible

inputs (Valid or Invalid) and pre-conditions. Exhaustive testing is impossible means, we can never test every test case with possible inputs and pre-conditions. Testing the entire system can be time consuming, costly, and so on. As a tester, we should test the critical functions of our system and ensure that we can get the correct output from our system. To do that, we need to find smarter ways to test our application. Let’s take an example,

Example: Imagine fitness gym provides membership for the client between the age of 16 to 60. It has the following online application form for getting the gym membership.

Online application form

· Between 16–60

· Less than 16

· More than 60

Suppose age 5, age 18, age 30, age 58 and age 65 clients are fill up the online form to get membership, but according to the equivalence partitioning technique we can only take age 18, 30 and 58 clients as valid members.

03) Early testing

“We can talk about the Effectiveness of testing”

Early testing helps you to find problems faster. To detect defects early, we should start static and dynamic testing activities as soon as possible in the software development lifecycle (SDLC). To improve the performance of the software, testing needs to be begun at an early stage. That means testing will fulfill in the requirements analysis phase. Fixing defects at this stage can help save more time, effort, and cost than later stages.

Example: Fixing problems with this procedure is much easier and cheaper than fixing it as soon as the product life cycle is over. Otherwise, we can miss deadlines, leading to overruns and we might need to re-written the entire area of ​​functionality.

04) Defect clustering

“Small number of modules contain most of the defects”

In ‘defect clustering’, 80% of defects are found in 20% of modules. Here, the Pareto rule of 80:20 can be applied. Knowing this principle and if we find one defect in a particular module, we have more chance to figure out many more defects there.

05) Pesticide Paradox

“To detect more defects, we need change the test data”

If we execute the same test case again and again, we could not find new bugs in our system. To detect new defects, we have to update existing test data, test scenarios as well as writing new tests. I strongly believe that our brains must be used for the creation of new solutions, feel free to innovate based on the existing principles.

Example: How can we apply this principle to a project?

We can focus on five points.

· Variation of input data

· Increase the number of checkpoints

· Apply testing techniques to cover more scenarios

· Increase the duration of the test

· Increase the recurrences of test

06) Testing is context dependent

“Tests are done differently in a different context”

All the developed applications are not identical. We have to use different approaches, methodologies, testing techniques, testing types based on the application. Different type of software’s needs different types of testing. We never test the E-Commerce site and the android application in the same way. What we are testing will always influence our approach.

Example: POS system at a retail store will be different than testing an ATM machine

07) Absence of Error Fallacy

“focus on the business need”

We need to focus on customer expectations. If the software is 99% bug free, but does not focus on the customer requirement, then it is unusable. This will happen if the system is tested for the wrong requirement. So, make sure to fulfill the customer’s needs. Testing means not only finding defects but also testing the customer’s needs. Finding and fixing defects does not help if the system build is unusable and does not fulfill the user’s needs & requirements.

Example: Even completely testing all the specified requirements and fixing all the defects are not enough if the built system is not user friendly. It means it does not meet the customer’s expectations.

--

--