Eliminating Functional Defects Through Model-Based Testing

[article]
Summary:

Model-based testing is based on the premise that lowering costs and improving software reliability require a tight link between functional specifications and test cases. The test process should find problems in the specification of requirements and guarantee that the functionality called out in the specification is completely exercised during the testing effort. If testers can develop full-coverage test scripts directly from quality specifications, they can be highly confident that the functionality has been successfully translated into the delivered applications.

Software development is largely a communications exercise. The business organization must communicate extensive detail to the software development group about business processing rules and requirements. Technical designers and business experts need to negotiate technical solutions that meet the constraints and capabilities of the software while fulfilling the business requirements. Developers, coders, and testers must accurately receive the final specification so that the software can be built and tested. If that communication process breaks down at any point in the chain, the message becomes garbled, causing missing or defective functionality, ineffective testing, or a combination of the two. 

Unfortunately, when it comes to implementing more effective software engineering processes, both cultural and economic issues stand in the way. Unless the product is life-critical, such as medical or aviation software, a rigorous software engineering process is difficult to justify on a risk/reward basis. For the general business community, formal software engineering processes are implemented ad hoc and at the discretion of the project managers and supervisors. Business experts, especially those who serve as requirements providers part-time, aren't likely to invest in the learning curve required of formal techniques. Since most software costs are straight expense items (primarily labor cost), software development is represented on the books as ordinary expense rather than a capital investment. This makes investment in software engineering tools and training a tough sell.

The challenge for the software development managers is to find tools and techniques that produce systems with very high reliability without requiring massive cultural changes in the IT and business organizations that build them. Addressing this challenge requires understanding the two biggest contributors to poor software quality. First, most software defects and shortcomings result from poor specification of functional requirements. In effect, many software reliability issues stem from the fact that we know how to code programs, we are just never clear on what to code. The second issue is software test coverage. Typically, software test cases are designed manually by a test engineer with no particular test coverage criteria in mind. As a result, the typical test case suite covers only about 60 percent of functionality. Test automation has gained ground, but most tools simply automate tests that are manually designed. If the design of a particular test is flawed, or if the suite of tests does not provide full coverage, the test automation offers limited value.

Model-based testing is based on the premise that lowering costs and improving software reliability require a tight link between functional specifications and test cases. The test process should find problems in the specification of requirements and guarantee that the functionality called out in the specification is completely exercised during the testing effort. If testers can develop full-coverage test scripts directly from quality specifications, they can be highly confident that the functionality has been successfully translated into the delivered applications.

The process assumes that if the specifications can be modeled rigorously, and this model can automatically create equally rigorous test scripts, the functional integrity of the software will significantly improve-even if other project factors such as scheduling, detailed design, technical design, and project management remain problematic. By using automated test design processes, not only will the test cases cover all of the functionality requirements, but the time and effort required to do the test design will be substantially reduced. Furthermore, if this process can assure the basic functional integrity of software, other process improvements can be tackled incrementally to address other aspects of the software lifecycle.

Model-Based Testing Overview
The model-based test process begins when the requirements team writes the specification using existing specification formats and processes. A test-modeling

Pages

StickyMinds is one of the growing communities of the TechWell network.

Featuring fresh, insightful stories, TechWell.com is the place to go for what is happening in software development and delivery.  Join the conversation now!

Upcoming Events

Aug 25
Aug 26
Sep 22
Oct 12