Types of Testing Supported by STRIDE

From STRIDE Wiki
Revision as of 08:11, 11 June 2010 by Marku (talk | contribs)
Jump to: navigation, search

The STRIDE test system supports three types of testing:

  • Unit Testing
  • API Testing
  • Behavior Testing

One of the questions that should be asked is what is the value of the test?. If the test presents no defects or does not provide ongoing regression than the value is questionable. Also what is the effort in implementing the test?. There is always time involved with implementing a test. STRIDE has been uniquely designed to support maximizing the value of the test while minimizing the effort to implement it.

Unit Testing

STRIDE Unit Testing supports the general model found in typical xUnit-style testing frameworks. STRIDE also offers a number of additional features optimized for testing embedded. But traditional Unit Testing does present a number of challenges for testing embedded software:

  • Testing functions/class in isolation requires a lot of extra work, especially if not designed upfront
  • Testing legacy software might have very limited value (i.e. can't find any defects)
  • Typically not well suited for others to participate in the test implementation (too much internal knowledge required)
  • Can be difficult to automate execution of the full set of tests on the real target device

API Testing

STRIDE supports API Testing leveraging the same techniques available for Unit Testing. The difference is the focus of API Testing, which often has a better return-on-effort. API Testing traditionally is about driving well-defined public interfaces. The design of public interfaces often lends itself to testing in isolation without implementing special test logic (i.e. no stubbing required). Also public API are typically documented. As a result, others can more easily participate in the test implementation. Although API Testing often represents a smaller percentage of the software being exercised, the value and effort required is well understood.

Behavior Testing

STRIDE support Behavior Testing which is different than Unit Testing or API Testing in that it does not focus on calling functions and validating return values. Behavior Testing, rather, validates the expected sequencing of the software executing under normal operating conditions. To learn more about the uniqueness of Behavior Testing click here. We believe the Behavior Testing has a very high return-on-effort and can be easily deployed into legacy software systems.

Some of the advantages of Behavior Testing:

  • Test with fully functional software builds (no isolation issues)
  • Applies to a large percentage of the software
  • Can execute with functional and black-box testing
  • Easy to add Test Points to provide coverage
  • Others can easily participate in test implementation
  • Test can be written using scripting on the host and native target code
  • Validation is fully automated (not done manually by a tribal expert)
  • Very useful for continuous integration
  • Design knowledge is extracted and made available other team members via instrumentation