New Random Test Strategies for Automated Discovery of Faults & Fault Domains Mian Asbat Ahmad 24-01-2013.

Slides:



Advertisements
Similar presentations
BR/TSD Москва 2004 Workshop for CEE, CIS and Baltic States BCD Planning Software Сентябрь 2004 Москва David Botha.
Advertisements

Test Automation Success: Choosing the Right People & Process
Parallel Symbolic Execution for Structural Test Generation Matt Staats Corina Pasareanu ISSTA 2010.
Semantic Mutation Testing John A. Clark, Haitao Dan, Robert M Hierons.
Chapter 5: Elementary Data Types Properties of types and objects –Data objects, variables and constants –Data types –Declarations –Type checking –Assignment.
CSE 1301 Lecture 6B More Repetition Figures from Lewis, “C# Software Solutions”, Addison Wesley Briana B. Morrison.
Well-behaved objects 4.0 Testing. 2 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Main concepts to.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
1 9/29/06CS150 Introduction to Computer Science 1 Loops Section Page 255.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
Names and Scopes CS 351. Program Binding We should be familiar with this notion. A variable is bound to a method or current block e.g in C++: namespace.
Equivalence Checking Sean Weaver.
File System Structure §File structure l Logical storage unit l Collection of related information §File system resides on secondary storage (disks). §File.
Michael Ernst, page 1 Improving Test Suites via Operational Abstraction Michael Ernst MIT Lab for Computer Science Joint.
1 Advanced Material The following slides contain advanced material and are optional.
© Company Confidentialwww.itcinfotech.com Business Case for Test Automation S.Janardhanan Chief Technology Officer ITC Infotech India Limited Business.
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
Software Testing Sudipto Ghosh CS 406 Fall 99 November 9, 1999.
Math – Getting Information from the Graph of a Function 1.
Hydrologic Modeling: Verification, Validation, Calibration, and Sensitivity Analysis Fritz R. Fiedler, P.E., Ph.D.
What is Software Testing? And Why is it So Hard J. Whittaker paper (IEEE Software – Jan/Feb 2000) Summarized by F. Tsui.
Overview of Software Testing 07/12/2013 WISTPC 2013 Peter Clarke.
Stochastic Algorithms Some of the fastest known algorithms for certain tasks rely on chance Stochastic/Randomized Algorithms Two common variations – Monte.
Automated Design of Custom Architecture Tulika Mitra
Steps in simulation study 1. - Clearly understand problem - Reformulation of the problem 2. - Which questions should be answered? - Is simulation appropriate?
Python – Part 1 Python Programming Language 1. What is Python? High-level language Interpreted – easy to test and use interactively Object-oriented Open-source.
1 Software Reliability Assurance for Real-time Systems Joel Henry, Ph.D. University of Montana NASA Software Assurance Symposium September 4, 2002.
Generic API Test tool By Moshe Sapir Almog Masika.
16 October Reminder Types of Testing: Purpose  Functional testing  Usability testing  Conformance testing  Performance testing  Acceptance.
Touchstone Automation’s DART ™ (Data Analysis and Reporting Tool)
Software Construction Lecture 18 Software Testing.
Well-behaved objects Main concepts to be covered Testing Debugging Test automation Writing for maintainability Objects First with Java - A Practical.
Acknowledgments We thank our families, the whole Enterprise Systems Group and specially Prof. Richard Page for their help and support. We also thank the.
CS Data Structures I Chapter 2 Principles of Programming & Software Engineering.
QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs By Koen Claessen, Juhn Hughes ME: Mike Izbicki.
Unit Testing with JUnit and Clover Based on material from: Daniel Amyot JUnit Web site.
1 Test Selection for Result Inspection via Mining Predicate Rules Wujie Zheng
1 Software Reliability Analysis Tools Joel Henry, Ph.D. University of Montana.
Java Basics Hussein Suleman March 2007 UCT Department of Computer Science Computer Science 1015F.
CPSC 873 John D. McGregor Session 9 Testing Vocabulary.
Using Loop Invariants to Detect Transient Faults in the Data Caches Seung Woo Son, Sri Hari Krishna Narayanan and Mahmut T. Kandemir Microsystems Design.
Coevolutionary Automated Software Correction Josh Wilkerson PhD Candidate in Computer Science Missouri S&T.
Benchmarking Effectiveness for Object-Oriented Unit Testing Anthony J H Simons and Christopher D Thomson.
CPSC 871 John D. McGregor Module 8 Session 1 Testing.
CS 5150 Software Engineering Lecture 22 Reliability 3.
Random Test Generation of Unit Tests: Randoop Experience
Week 6 MondayTuesdayWednesdayThursdayFriday Testing III Reading due Group meetings Testing IVSection ZFR due ZFR demos Progress report due Readings out.
CS Class 04 Topics  Selection statement – IF  Expressions  More practice writing simple C++ programs Announcements  Read pages for next.
CS 5150 Software Engineering Lecture 21 Reliability 2.
Testing Integral part of the software development process.
FNAL Software School Day 4 Matt Herndon, University of Wisconsin – Madison.
Test Case Purification for Improving Fault Localization presented by Taehoon Kwak SoftWare Testing & Verification Group Jifeng Xuan, Martin Monperrus [FSE’14]
CPSC 372 John D. McGregor Module 8 Session 1 Testing.
1 March 12, Testing William Cohen NCSU CSC 591W March 12, 2008.
Testing and Debugging UCT Department of Computer Science Computer Science 1015F Hussein Suleman March 2009.
Algorithms and Problem Solving
John D. McGregor Session 9 Testing Vocabulary
Chapter 8 – Software Testing
John D. McGregor Session 9 Testing Vocabulary
Eclat: Automatic Generation and Classification of Test Inputs
John D. McGregor Session 9 Testing Vocabulary
It is great that we automate our tests, but why are they so bad?
A test technique is a recipe these tasks that will reveal something
COS 260 DAY 16 Tony Gauvin.
Algorithms and Problem Solving
Programming Fundamentals (750113) Ch1. Problem Solving
Programming Fundamentals (750113) Ch1. Problem Solving
CSE 1020:Software Development
Design and Analysis of Algorithms
By Hyunsook Do, Sebastian Elbaum, Gregg Rothermel
Presentation transcript:

New Random Test Strategies for Automated Discovery of Faults & Fault Domains Mian Asbat Ahmad

Research Objectives Develop New test strategies that Find maximum number of faults In minimum number of test calls In minimum possible time Use minimum H/W & S/W resources Use minimum Human Resources Works in automated fashion Find fault and its domain Give easy to Understandable results Provide regressive test suite

Research Contributions DSSR Strategy Dirt Spot Sweeping Random Strategy Up to 33% better than Random Up to 17% better than Random+ ADFD Strategy Automated Discovery of Fault Domain Strategy Find & Plot fault domain of a program GUI Front-End for YETI DSSR with Daikon Strategy (in progress) Implementation of DSSR strategy with Daikon

Why random testing Exhausting testing is not possible Infinite values between 0 and 1 Compatibility across multiple systems Limited Time and Resources Simple but practical selection approach What will you do if you are asked to check the quality of rooms in CS building in 10 minutes? Easy implementation Free from human bias Quick and effective in finding faults Code Privacy

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 lies in Domains [Chan et al] Input Domain Fault Domain Point Fault Domain Fault lies scattered across input domain Block Fault Domain Fault lies in a block across input domain Strip Fault Domain Fault lies in a strip across the input domain Fault Domains

Need of Enhancement in RT Random Testing is simple and fast E.g. YETI* can call up to 10 5 in one minute But low coverage with simple random E.g. if ( x == 10 ) then … in a program has only one chance to be exercised out of 2 32 if x is a 32 bit integer program input [DART] To increase coverage To increase efficiency of random testing To decrease overhead To maintain its high speed To keep it unbiased

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+

Example of DSSR Working /** * Calculate square of given number and verify results. * The code contain 3 faults. (Mian and Manuel) */ public class Math1{ public void calc (int num1) { // Square num1 and store result. int result1 = num1 * num1; int result2 = result1 / num1; // 1 assert Math.sqrt(result1) == num1; // 2 assert result1 >= num1; // 3 }

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/60 classes DSSR better up to 33% than R and 17% 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 strategy uses R and R+ to start with and thus the F-measure of DSSR = R or R+

Solutions to Limitations ADFD strategy Automated Method Find Fault Find its Domain Plot Domain on Graph DSSR strategy 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.

Automated Discovery of Fault Domain 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 different fault domains Run ADFD Plot the graphs

Searching for Fault Patterns

Daikon etc invariants border values… Automated Method Run program by Daikon Get invariants Run DSSR with –ea