Last modified: Apr 07, 2014
What Makes a Testing Framework a Regression Framework?
Little agreement, but IMNSHO
Posix-compliant regression test framework
Written in expect
Strong support for multiple configurations
Test Results
Standard for test frameworks.
Possible outputs for any test:
PASS : test has succeeded
FAIL : test has failed
XFAIL : test has failed, but the failure was expected
XPASS : test has passed, but was expected to fail
UNRESOLVED : The test has produced indeterminate results and requires human review for resolution
UNTESTED : The test was not run.
This is a placeholder for tests that have not yet been written.
UNSUPPORTED : The test cannot be run because of external conditions
(e.g., it is OS-specific and we are testing in a different OS).
Sample Test
set testdata {
{"addition" "22 + 1" "23"}
{"multiplication" "21 * 2" "42"}
{"division" "14 / 3" "4"}
⋮
}
foreach pattern $testdata {
eval "spawn ./calc [lindex $pattern 1]"
expect {
-re [lindex $pattern 2] {
pass [lindex $pattern 0] }
default {fail [lindex $pattern 0] }
}
}
Running DejaGnu
runtests --tool calcTests
runs all tests in the calcTests directory, producing output like:
PASS addition
PASS multiplication
⋮
# of expected passes 12
# of unexpected failures 2
Tool walks pages to run tests
Is fitnesse a Regression Framework?
Advertises itself as such.
Concept of expected fail is missing
Scripting in Java
Is Maveryx a Regression Framework?
Advertises itself as such.
Appears to have legitimate system-level focus
Expected fail?
When we combine
we can rebuild and retest as developers check in changes.
Version control with a clearly identified main branch
Automated build
Make the results highly visible
Continuous deployment publishes snapshots of deliverables as changes are checked in.