|
|
 |
Model-driven Testing
Model Driven Engineering Technology

|
Model-driven Testing is a new and promising approach for the automation of software testing. This approach can significantly reduce the most painstaking cycle of all software development efforts—testing. Testing currently comprises between 30% and 70% of all software development projects. This new methodology and toolset will enable software developers and testers to become far more productive and reduce the time-to-market, while maintaining high standards of software quality.
"Debugging is at least twice as hard as writing the program in the first place. So if your code is as clever as you can possibly make it, then by definition you're not smart enough to debug it."
- Brian Kernighan
Features
The Model-driven Testing package is a set of tools that help developers perform the following tasks:
- Create and edit models of software components. Developers can use the model created as a basis for the test plan. In this way, the test plan can be reviewed and simulated to discover problems in the implementation or model before the actual code is ready for test.
- Simulate models. In addition to facilitating debugging of the model and software behavior offline, the simulation feature includes a recording function that can be used to manually create tests.
- Generate test suites for software components. The tools generate tests using a variety of patented test generation methods, to cover all required test specifications. The coverage acquired by these tools has proven to be more thorough than manual test creation.
- Run test suites against the software components. The toolset contains its own test execution engine that automatically compares the observed results with the results predicted by the model. In addition, the test execution engine is unique in that it interacts directly with the system under test, at the level of its class members or command line API. This provides more control than traditional test drivers, which schedule entire test cases. Thus, developers can walk through a test case to examine each test interaction, or automatically replicate individual test objects and synchronize their interactions to more efficiently do concurrency testing.
- Create templates for test execution directives and test proxies. Test execution directives tell the test driver how to deploy the test. The directives include instructions for distributing test objects so they run on many different platforms simultaneously, entering input for variation testing, assigning replication directives for concurrency and stress testing, and more. The test proxies help bridge the gap between the abstract model and the concrete implementation.
- Translate test suites to create scripts for legacy test drivers. When the MDT test execution engine cannot interface with the system under test, the toolset assists in translating test suites to create a other test script formats, such as WinRunner or Perl scripts.
- Review both the test suites and their execution trace. The toolset provides tools to assist in viewing, navigating, and analyzing the test suite and trace.
Benefits
The Model-driven Testing tools reduce overall testing time by supporting the reuse of many common testing functions. They also enhance test quality and complexity by offering a systematic approach to test suite generation. The systematic approach, in turn, yields higher functional coverage, exposing more defects earlier in the software development cycle. Using the tools, testing becomes less monotonous, since the tools automate the repetitive, non-creative tasks associated with testing. This, in turn, shields against the high attrition rate associated with testing personnel.
Model Driven Testing drastically reduces test maintenance costs, because implementation changes are captured in the model. developers only have to regenerate the test in order to have the changes affect all tests. The Model-driven Testing tools enhance team communication because the model, test suite, and trace provide a clear, unambiguous, and unified view of both the system under test and the test.
Model Driven Testing separates the testing logic from the actual test implementation. This allows the developer to focus on developing good tests specific to the application while relying on the toolset's test execution environment to solve problems related test execution. For instance it simplifies distributed application testing by enabling tests to propagate transparently across many host computers.
| |
|
|