At WebRTC.ventures, we operate with a clear vision of the fundamental principles of software testing, which guides our work.
From my previous post on Types of Software Testing, you will remember that testing must be viewed as unequivocally parallel to the software development process. We perform software testing tasks in our device lab located in Panama City, Panama as part of our product development process to prevent functionality issues and to correct software deviations prior to release. We also offer testing as a standalone service. One might say that software testing is just as important as the software development itself!
At a high level, software testing is necessary to detect bugs and to test whether the software meets the established requirements for the application. Trust in the system will be determined by its degree of adherence to the needs, requirements, and business processes requested by the client. Testing software helps the development team correct bugs and deliver a good quality product.
Both manual and automated testing, as well as all practice around software testing, is based on seven fundamental principles, as standardized by the International Software Testing Qualifications Board (ISTQB). These principles help testing teams all over the world keep the testing process effective and consistent. Taking these principles into account can significantly improve the results that can be obtained throughout the testing process, as well as through the entire project.
Principle #1: Tests show the presence of defects, not their absence
Definitively, testing minimizes the risk of a malfunction in system operations. However, even if a considerable amount of testing is performed, it is unfeasible to guarantee that a system is completely free from defects/bugs. In other words, the absence of defects is virtually impossible to verify because the only constant is change. From our laboratory, our testing team systematically and consistently executes manual tests, develops automated test scripts, and performs penetration tests, load tests, and other tests that reduce the probability of undetected errors. But, this is not a guarantee they are not there.
Principle #2: Exhaustive tests do not exist
It is not a wise decision, nor a sustainable practice, to test everything in the development of a product. Testing all combinations of inputs and preconditions is impossible, except in trivial cases. Due to this fact, and as indicated by the best testing practices standardized by the ISTQB, the correct approach is to perform a risk analysis in order to prioritize and execute the test cases that are most important to the client (and the user!)
Principle #3: Early testing saves time and money
The WebRTC.ventures testing team are experts at conducting software tests for all kinds of software applications. Of course, because we are a team within the WebRTC.ventures group, we specialize in testing live video applications, such as our telehealth starter kit, SimplyDoc. Principle #3 is one that we see the truth in every day: the involvement of testers almost as soon as product development begins is critical. Finding defects in the earliest stages of the project reduces costs. The later the defects are found, the more expensive it is to fix them.
Generating savings in both time and money is something that we have been able to consistently achieve for our clients. This is not only thanks to our expert developers, but also to our team of experienced testers who have great ability to detect errors and propose improvements in the applications and developments they test.
Principle #4: Defects tend to stick together
Most bugs are found grouped in a small and specific number of modules. This may be because that module has a high complexity. Or, because it has undergone more changes than others, resulting in the insertion of new defects.
Whatever the cause, this phenomenon is closely related to the Pareto principle, or 80/20 rule. Applied here, we can say that 80% of the issues reported by our testers are found in 20% of the modules. Therefore, it is useful to focus testing on areas or modules where more defects have been found and to use this information as input for the risk analysis mentioned in Principle #2. Taking this approach does not mean that the areas where lower density of defects should be neglected. Rather, they should be tested in the appropriate proportions.
Principle #5: Beware of the pesticide paradox
Long before software even existed, Albert Einstein famously said, “Insanity is doing the same thing over and over and expecting different results.” If we repeat the same tests over and over again, eventually the tests will no longer detect any new defects. Instead, our team actively updates our tests and test data, and also writes new tests. We use the analogy of the pesticide because the tests are no longer effective in finding defects, just as pesticides after a while are no longer effective in eliminating pests and insects. In some cases, such as automated regression testing, the pesticide paradox has a beneficial outcome, which is the relatively low number of regression defects.
Principle #6: Evidence depends on context
Testing must be adapted to the context of the object being tested. As experts in designing and executing software tests, our recommendation is that testing be performed differently in different contexts. For example, Train-With needed a live mobile fitness application for group fitness classes. We developed this platform for them. In parallel, our testers certified the quality of the platform. We did not do the level of testing that we might have, for example, for automatic ventilator control software to be used in the intensive care unit of a hospital with patients suffering from COVID complications. The level of risk is a critical factor when defining the types of tests required. The more critical the system (whether in terms of human life or in a financial context), the more we need to invest in software testing.
Principle #7: Fallacy of absence of errors
Detecting, fixing, and preventing future bugs does not mean that a product is useful. Only products that meet client or users’ needs are useful. As we saw in Principles 1 and 2, it is impossible to run all possible tests and find all possible defects. Similarly, it is wrong to expect that finding and fixing a large number of defects will ensure the success of the system. We consider this principle even before starting a development project and continue during project planning to ensure we meet our clients expectations in every stage of the project.
The knowledge and consideration of these seven principles allows the WebRTC.ventures testing experts to be more effective in creating individual test strategies for each client, as well as in designing user stories and automated scripts. The tactical execution of these strategies adhere to our primary objective: delivering a product of the highest possible quality, ensuring the full satisfaction of our customers.
At WebRTC.ventures, we attach great importance to software testing in our developments. Ensuring good quality in everything we do is part of our idiosyncrasy as testing specialists. Our testers play a fundamental role in our work. If you are interested in knowing more about what our testing services can offer to your business, with or without development services, contact us today!