There are a number of testing principles offering general guidelines applicable to all testing. The ISTQB Certified Tester Foundation Level Syllabus describes 7 such principles.
Testing can show that defects are present in the test object, but cannot prove that there are no defects. Testing reduces the probability of defects remaining undiscovered in the test object, but even if no defects are found, testing cannot prove test object correctness.
Testing everything is not feasible except in trivial cases. Rather than attempting to test exhaustively, test technique, test case prioritization, and risk-based testing, should be used to focus test efforts.
Defects that are removed early in the process will not cause subsequent defects in derived work products. The cost of quality will be reduced since fewer failures will occur later in the software development lifecycle. To find defects early, both static testing and dynamic testing should be started as early as possible.
A small number of system components usually contain most of the defects discovered or are responsible for most of the operational failures. This phenomenon is an illustration of the Pareto principle. Predicted defect clusters, and actual defect clusters observed during testing or in operation, are an important input for risk-based testing.
If the same tests are repeated many times, they become increasingly ineffective in detecting new defects. To overcome this effect, existing tests and test data may need to be modified, and new tests may need to be written. However, in some cases, repeating the same tests can have a beneficial outcome, e.g., in automated regression testing.
There is no single universally applicable approach to testing. Testing is done differently in different contexts.
It is a misconception to expect that software verification will ensure the success of a system. Thoroughly testing all the specified requirements and fixing all the defects found could still produce a system that does not fulfill the users’ needs and expectations, that does not help in achieving the customer’s business goals, and that is inferior compared to other competing systems. In addition to verification, validation should also be carried out.
Software testing might sound trivial at first but it a complex field similarly to software development. At Fuserwise we invest heavily into our education to stay at the forefront of industry standards and best practices that we continue to apply and adjust to our client’s needs. See how our solutions enable a new way of software testing that can elevate your software’s quality.