Borowski fail

Download Report

Transcript Borowski fail

High Volume
Automated Testing
for Software Components
Harry Robinson
Doug Szabo
Microsoft
High Volume Test Automation
The essence of HVTA techniques is automated execution and
evaluation of large numbers of tests, for the purpose of exposing
functional errors that are otherwise hard to find.
Experiments with High Volume Test Automation, 2004
McGee & Kaner
Subtle Bugs
Only weak bugs have a logic to them and are amenable to exposure by
strictly logical means. Subtle bugs have no definable pattern - they are
wild cards.
Software Testing Techniques 2nd Edition, 1990
Beizer
Bounded Exhaustive Testing
Bounded exhaustive testing (BET) is a verification technique in which
software is automatically tested for all valid inputs up to specified size
bounds.
Software assurance by bounded exhaustive testing, 2005
Coppit et al
Typical Biases
• Developers – “happy paths”
• Testers – “a nose for bugs”
CodeProject: Sorting Algorithms in C#
The Sorting Algorithms
Popular …
Recommended …
… and it looks cool!
… but dark clouds appear on the horizon
...
Reasonable Unit Tests
… Even Some Randomized Unit Tests
Pre-Oracled Data
0
1
2
3
4
5
2
5
0
3
1
4
0
1
2
3
4
5
shuffle
sort
compare
The Loop
Shearsort demo #1
Shearsort demo #2
Shearsort bug
Shearsort bug
- fixed
Heapsort bug
Heapsort bug
- fixed
OddEvenTransport bug
OddEvenTransport bug
- fixed
Distribution of Buggy Array Sizes
Distribution of Buggy Array Sizes
Bug is not detected
at array size 1000
Number of Random Arrays to Detect a Bug
Generated
Unit
Tests