|
Abstract What’s happened to the links between Requirements and Tests? How do we know what to test and when? How do we, and the customers, know we got the system being built right? Testing used to happen at the end of the project process once the whole system had been built. Then testing became an iterative done each time. Now extreme programming (XP) advocates building test code before building actual code, by introducing the concepts of test frameworks & mock objects. Requirements moved from all specifications being gathered up front in one big exercise, to starting early on in the project and going into ever increasing detail throughout the project, using Use Cases. What’s the traceability between the disciplines? Types of Testing 101Doing software development in the 80’s, only mission critical projects would take testing seriously. A formal concept of testing didn’t seem to exist on other projects. It was all down to the developers self pride to turn out good quality code. Some even wrote special test code into their code, so it’s not really a new concept. We had a bit more time back then! As greater and increasing pressure to deliver against more unrealistic deadlines hit home, developers’ first instincts were to give up doing exhaustive testing of their own code. “Let the user find and report any errors and I’ll fix them later” was what developers thought. We now seem to have come the full circle in developer testing.Of course, Customers want to prove for themselves that not only is the code ok, but the systems are practical to use. Customers have championed ever increasing clever ways of doing their tests. There are other types of tests to check the performance and reliability of the system, which relates to the quality of the design rather than code. “Did we get the performance and speed right under large volumes, etc? How will the system react in a power failure situation?” are typical questions they ask. Testing has become an institution! At last count I found sixteen test types, under various categories: Functionality
Usability
Reliability
Performance
Acceptance testing – Alpha and Beta tests by customers to see it’s acceptable to use live. Exploratory testing – Test design and Test execution at the same time. Supportability
Contingency testing – making sure fail-over procedures work, backups recover, etc. Testing Tools have evolvedTest Automation and Tools have also progressed in leaps and bounds over the last five years. There are all sorts of testing tools that test for different aspects of the systems quality:
The Processes have evolved
With the newer ideas and concepts that have evolved in the last few years, Requirements roles have shifted to the right from everything being done up front to spreading the workload from the project beginning right towards the end of the project. The same principle is also true of the Testers, who have shifted to the left from the far end of the development life-cycle to being involved from the Inception of the project, throughout the software development lifecycle, until the transition into actual live running environment. So where are the links? The size of your project will depend upon how the requirements processes are configured. Typically large projects will need comprehensive requirements documents, not only to accommodate the quantities of information but also to help manage change and prioritization, so this paper talks to that larger development project situation. In the last four years, some things have evolved which have taken testing into a new dimension:
Above are at least two routes of traceability in testing that have been shown, both of which have their roots Requirement artifacts. The yellow route; derived from a more traditional testing discipline and typically carried out by people that were not involved in development. This route involves testing far more than just functionality; now enhanced and modernized to embrace a more iterative style of regular testing from very early on in the project. And the magenta route also derived from a traditional developer self test route, but now being formally enhanced and made more rigorous using testing frameworks, assert statements and mock objects, etc. Rethinking the V model of testing In an excellent article by Brian Marick, [MAR 00] he points out that the old V model of testing, while still valid in some aspects, is still too simplistic and does not really embrace an iterative development style. He suggests that code is developed in a series of handoffs and the behaviour changes at each handoff; therefore, tests must test that behaviour as it changes. He also says that one cannot develop tests from one document only which does not change as this is not realistic. Essentially the V Model got in the way of proper testing, so his testing model had to be enhanced to cater for the continual change. ConclusionWe have come a long way in testing in recent years. Testing appears to be the area under most radical enhancement at the moment. This is a good thing because elusive bugs just seem to creep in everywhere; no matter how hard we try to refine our software development processes for quality. References
Charles Edwards has been involved with software development for 22 years. He is a contributing editor for CM Crossroads and an independent consultant who performs RUP implementation for organizations that recognize the need to improve their software development process. He works with and contributes to the http://www.processwave.net/ web site for process engineers. You can reach Mr. Charles Edwards by email at charles.edwards@processwave.com
Set as favorite
Bookmark
Email this
Hits: 5095 Trackback(0)Comments (0)
|
| Last Updated on Thursday, 13 July 2006 08:12 |



