Regression Testing

Steven J Zeil

Last modified: Apr 07, 2014

Contents:
1. Regression Frameworks
1.1 DejaGnu
1.2 fitnesse
2. Maveryx
3. Continuous Integration
3.1 Key Ideas
3.2 Software
3.3 Related ideas

What Makes a Testing Framework a Regression Framework?

Little agreement, but IMNSHO

1. Regression Frameworks

Open Possibilities

1.1 DejaGnu


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

1.2 fitnesse


Is fitnesse a Regression Framework?

Advertises itself as such.

2. Maveryx


Is Maveryx a Regression Framework?

Advertises itself as such.

3. Continuous Integration

When we combine

we can rebuild and retest as developers check in changes.

3.1 Key Ideas

Advantages

Disadvantages

3.2 Software

3.3 Related ideas