190 likes | 349 Views
Automated Discovery of Faults and Fault Domains using Random Testing. Mian Asbat Ahmad 24-01-2013. Why random testing?. Exhausting testing not possible. Infinite values from 0 and 1. Compatibility across multiple systems. Limited Time and Resources Simple algorithm for data selection
E N D
Automated Discovery of Faults and Fault Domains using Random Testing Mian Asbat Ahmad 24-01-2013
Why random testing? • Exhausting testing not possible. • Infinite values from 0 and 1. • Compatibility across multiple systems. • Limited Time and Resources • Simple algorithm for data selection • Easy implementation • Free from human bias • Quick and effective in finding faults • Code Privacy • Source code not required for Testing
Random Testing • Black-box testing technique • Dynamic testing process • Input Domain • Random Selection • Test Input • Test modules • Test Execution • Test Evaluation • Specifications • Language exceptions • Test Output
Automated Random Testing • Automating the process of random testing that include reading specifications, test data generation, test execution, result analysis and identification of the faulty tests. • Examples of Automated Random testing tools are YETI, JCrasher, JUnit, Haskel etc…
Fault Domains • Fault lies in Domains [Chan et al] • Input Domain • Fault Domain • Point Fault Domain • Block Fault Domain • Strip Fault Domain
Enhancement in Random Testing • Test Strategy? • Need of test strategy variations? • High No of Faults • Less time • Low resources • Famous Variations in Random Strategy • ART • MART • RRT • FD-ART • R+ • QRT • …
Dirt Spot Sweeping Random Strategy • Combination of strategies • Random • Input and module selection at random • Random Plus • Random testing with border values • Spot Sweeping • Move around it when fault found
Working of DSSR • Start with R and R+ • Switch to DSSR, when Fault found • After Evaluating block/strip, switch back to R and R+
Evaluation of DSSR • 60 classes selected from 32 different projects • In 43 classes all the strategies found same number of faults • In 17 classes strategies performed different than one another • DSSR found the highest number of faults • No strategy performed better than DSSR
Test Results of 17 classes • DSSR performed better than R and R+ • DSSR up to 33% better than R • DSSR up to 17% better than R+
DSSR Limitations • Fault Domain • Existence Frequency • Point, Block and Strip in programs • Domain Discovery • Find Fault Domain of Program • Automated Method • Domain Presentation • Time to Find First Fault • DSSR uses R and R+ to start with • Use of Daikon to make it more targeted • Automated Method
Solutions to Limitations • Automated Discovery of Failure Domain • Automated Method • Find Fault • Find its Domain • Plot Domain on Graph • DSSR with Daikon/contracts • Execute class under test by Daikon • Get class invariants • Add data to R+ from invariants • Run DSSR • Reliance on simple R and R+ gone.
What is ADFD • Automated Technique • Start Test • Find Fault • Generate a program Dynamically • Compile it • Execute it • Generate data • Generate Graphs
Working of ADFD using Example • Program with multiple gaps • Or we can write program for • Point block or strip pattern • here
Daikon etc invariants border values… • Automated Method • Run program by Daikon • Get invariants • Run DSSR with –ea