The Carving project is now a part of the new, bigger, and more ambitious T2T: Test-to-Test Transformation
Project.
This project will investigate strategies for amplifying the power and applicability of testing resources. The strategies will transform existing tests into new tests that add complementary testing capabilities to the validation process. The developed strategies will be unique in their treatment of tests as data. This will require the development of test representations that can be efficiently manipulated, and test transformations to realize operations that generate new and valuable tests. We see Carving as the first of our transformations, but many others will follow. Read on about Carving.

~CARVING~


Carving: to cut with care or precision, M. Webster.

Our goal is to carve the behavior of a target unit or units from a whole
system execution. We capture components that may influence the
behavior of the targeted unit. Those components are then automatically
assembled into a test harness that establishes the pre-state of the unit/s
that was encountered during system test execution. From that state, the
unit/s is replayed and the resulting state is queried to determine if there
are differences with the recorded unit post-state.

Application Carving Demo

Supported by: NSF, IBM, and Lockheed Martin.

~Applications~


Generating tests of different granularity. (as illustrated in Demo)
Unit test cases are focused and efficient. System tests are effective at exercising complex usage patterns. Differential unit tests (DUT) are a hybrid of unit and system tests. They are generated by carving the system components, while executing a system test case, that influence the behavior of the target unit, and then re-assembling those components so that the unit can be exercised as it was by the system test. DUTs retain some of the advantages of unit tests, can be automatically and inexpensively generated, and have the potential for revealing faults related to intricate system executions.

~Tool Support~


Features included:
  • Automatically carving DUTs from a running application
  • DUTs reductions and filtering projections (e.g. identical pre-state representations)
  • Ability to customize post-state output (simple hash for space savings, full state for easier analysis, etc.)
  • Customizable replay specifications for individual methods or sequence of methods
  • Anomaly replay handler (e.g., to replay caller of failed method or replayable frontier)
  • DUT to JUnit Translation

~Papers~


[S. Elbaum, H. Chin, M. Dwyer, J. Dokulil. "Carving and Replaying Differential Unit Test Cases from System Test Cases". IEEE Transactions on Software Engineering, 35(1):29-45, January 2009]

[S. Elbaum, H. Chin, M. Dwyer, J. Dokulil. "Carving Differential Unit Test Cases from System Test Cases". Symposium on Foundations of Software Engineering, 92-104, November 2006.]

S. Elbaum, Modular Regression Testing, first presentation on the topic at Dagsthul Seminar on Understanding Program Dynamics in December 2003

~People~


- Sebastian Elbaum
- Mathew Dwyer
- Matthew Jorde
- Hui Nee Chin
- Jon Dokulil
- Oksana Tkachuk

There are no comments on this page. [Add comment]

Page was generated in 0.1433 seconds