Software Testing Best Practices – Part I
27 May. 2011 Software Testing & QA
Economics of software testing is to determine and predict the defects early by using predictable models and implying strategies and different test methodologies to identify those at early stages.
Psychology of software testing is to destructively test the application by identifying as many exceptional or out of the box scenarios or sometimes called as the third vision.
Software Testing is a systematic activity but it also involves economics and human psychology. – Glenford J. Myers
A set of good test scenarios evaluates every possible permutation and combination of a program during ideal conditions. In addition, a software Test Engineer needs the proper vision to successfully test a piece/whole application to comply with the standards and quality expected by the industry. Whenever Software Test Engineers tests a program, they should add some value in it rather than performing only the requirements conformance and validation. A systematic and well planned test process adds the value of quality and reliability to the software program.
The most important considerations that come with offering software testing services are the issues of psychology, leading to the set of principles and guidelines to evaluate the software’s quality.
Ten Commandments of Software Testing Best Practices are
1. Software Testing is the process of exercising a software component using a selected set of test cases, with the intent of
- revealing defects
- evaluating quality
A Software Test Engineer executes the software using test cases to evaluate properties such as reliability, usability, maintainability, and level of performance. Test results are used to compare the actual properties of the software to those specified in the requirements document as quality goals. Deviations or failure to achieve quality goals must be addressed.
Software Testing has a broader scope rather being only limited to the execution of program or detecting errors more rigorously as described in the test process improvement models such as TMMi framework models.
2. When the test objective is to detect defects, then a good test case is one that has a high probability of revealing a yet undetected defect(s).
Principle 2 supports a strong and robust designing of test cases. This means that each test case should have a goal to identify or detect a specific type of defect. The Software Test Engineer approaches the scientific method of designing the tests to prove or disapprove the hypothesis by the means of test procedures.
3. A test case must contain the expected output or result.
Principle 3 supports the fact that a test case without expected result is of zero value. Expected output or result determines whether a defect has been revealed or the conditions have been passed during the execution cycle.
4. Test cases should be developed for both valid and invalid input conditions.
Use of test cases that are based on invalid inputs is very useful for revealing defects since they may exercise the code in unexpected ways and identify unexpected software behavior. Invalid inputs also help developers and Software Test Engineers to evaluate the robustness of the software, that is, its ability to recover when unexpected events occur (in this case an erroneous input).
For example, software users may have misunderstandings, or lack information about the nature of the inputs. They often make typographical errors even when complete/correct information is available. Devices or software program may also provide invalid inputs due to erroneous conditions and malfunctions.
5. The probability of the existence of additional defects in a software component is proportional to the number of defects already detected in that component.
Principle 5 supports to the fact that the higher the number of defects already detected in a component, the more likely it is to have additional defects when it undergoes further testing.
For example, if there are two components A and B, and Software Test Engineers have found 20 defects in A and 3 defects in B, then the probability of the existence of additional defects in A is higher than B. This empirical observation may be due to several causes and degree of influence of the software factors. Defects often occur in clusters and often in code that has a high degree of complexity and is poorly designed.
Learn how the software testing best practices can help your application reach a level of quality aspired by many in the industry. Come talk to us on 1-877-RISHABH (1-877-747-4224) or contact us here to learn how we can help you achieve this through our application testing services.