So... Test the Requirements -
Not Just the Code
Everyone accepts that testing of the software is a necessary and integral part of building a software system. But how thoroughly is that job ever done? To be blunt, most testing is not really based on what the users actually need and want. All too often, testing is both incomplete and prone to a “self-fulfilling prophecy” where consistency of behavior is considered adequate. As long as a program runs, doesn’t obviously crash and appears to work, QA feels they have done their job.
So, what is the alternative? Something we have all heard about – requirements based testing. But what does that mean, and how do you do it? The answer lies in introducing real quality into the entire development process, not just waiting for “testing” at the end. Early validation of requirements assures that you cover all the details of functionality that fulfill the needs of the end users. Requirements based testing finds defects early, saves a tremendous amount of time and money, and greatly mitigates risk.
Everyone has heard the term “a picture is worth a thousand words”. Converting complex requirements into a graphical model illustrates all the cause-effect relationships that must eventually be tested. The model includes all the inputs and outputs, all the business rules and the logic that ties everything together. The creation of the model focuses analysis and uncovers hidden problems throughout the development process, avoiding defects before they are ever coded. Then, complete test cases, and other valuable reports such as the traceability of tests to requirements, are generated directly from the model.
Here are the major elements involved:
Testable Requirements and the functional specifications derived from them, must be clear, complete and unambiguous at the most detailed level. Improved analysis, aided by modeling, completes and validates the specifications in whatever form they might take – formal documents, use cases or user stories. This provides much earlier and far deeper evaluation than would normally be possible, and gives developers the complete, precise information needed to write the best code possible.
The Model captures individual cause-effect relations, combining them according to the logic found in the specs. The completed model provides an overall picture of the system functionality, and illustrates all the individual pathways through the logic. It provides a single point of maintenance for any future changes, becomes a source for needed project documentation and is the definitive representation of the detailed requirements.
The Tests generated from a complete and functionally correct model are ready for final review and execution. So, without having to rely on raw brain power to try and “think up” tests, you avoid needless redundancy and provide total coverage of the functionality end users need and want. These tests read much like use cases or user stories, and provide for full functional testing even if the tester has little or no knowledge of the system under test.
The results are true validation that the right software is being built, and real verification that the software was built right.
Learn More and Stay in Touch:
- To learn about Critical Logic, independent validation and verification, and the Logic Based Development Process, click here
- We welcome your questions and comments. Contact us at: http://www.critical-logic.com
|
|
|
|
|
|