Requirements based testing or simply requirements testing is a form of testing approach which creates test cases and conditions based on the data obtained from requirements. It includes testing of functional as well as non functional attributes such as performance, reliability, user acceptability, etc.
Why pursue Requirements testing?
Majority of the defects have their root cause in the requirement phase. Inadequate addressing of requirements leads to failure of products. Requirement testing is important because it begins at the earliest phase of software development. Moreover, requirement testing helps in improving quality of requirements asked of the software product.
How to execute Requirements testing?
Requirement testing is a systematic process. Here's a brief step wise description of the procedure involved.
Validation of requirements against objectives:
A project's success is defined by the accomplishment of the objectives for which is designed. Therefore it becomes important to match the "why" with the "what". If it is found that a particular requirement is not matching with one of the objectives, then it is dumped out of the design scope of the project.
Application of scenario against the requirements:
A scenario is nothing but a user's perception while working with the product. All the singular requirements must be good enough to satisfy any kind of scenario. If not, then the requirements are said to be partially complete.
Ambiguity review:
Here the aim is to detect and eliminate any uncertainties pertaining to the use of ambiguous codes, phrases or statements or functions. This helps with filtering out higher quality requirements which are then presented for review by the developer teams.
Domain expert reviews:
This is performed to judge on the completeness or wholeness of requirements.
Generation of Cause-effect graphs:
This is the presentation of requirements in graphical form. It benefit such that developer team gets a better understanding of priorities among the requirements as they are matched against their eventual effects. Also it helps in resolution of any problems arising out of the use of ambiguously called different terms which create confusion by being used to denote the same effects.
Performing logical consistency test:
Used to detect any errors in the cause effect graphs, logical consistency tests come up with outputs in the form of test cases that are 100% compatible with all the requirements.
Author review of test cases:
The test cases generated are checked for glitches by the requirement authors. Incase any problem is found out, the requirement related to the test case is rectified/modified and the test case concerned undergoes a re-design.
Developer review:
A developer review of tests cases is obviously important to get an outlook on what they need to deliver for success of their product.
Test case for design review:
Examination of test cases reveals how good the design of the product is in satisfaction of all the requirements. If it can't, then it means that the requirements are not feasible or the product design requires a rework.
Use of Test cases in code review:
At the time of unit testing, the software is segmented into independent modules. It is important to ensure that each code module delivers some portion of the requirements.
Testing of code against the requirement based test cases:
Finally, by the addition of data and navigation, the logical cases are built into the test cases we want, for execution against the software code. This will lead to a thorough comparison of expected and actual behaviour. If all the test cases run successfully against the code, then it can be said with confidence that all the software functionalities have been verified and that the product is ready for release.