Author: Carlos Pacheco, Shuvendu K. Lahiri, Michael D. Ernst, Thomas Ball MIT CSAIL.

Slides:



Advertisements
Similar presentations
1 Verification by Model Checking. 2 Part 1 : Motivation.
Advertisements

Feedback-directed Random Test Generation (to appear in ICSE 2007) Carlos Pacheco Shuvendu Lahiri Michael Ernst Thomas Ball MIT Microsoft Research January.
Introduction to Maven 2.0 An open source build tool for Enterprise Java projects Mahen Goonewardene.
Using the Optimizer to Generate an Effective Regression Suite: A First Step Murali M. Krishna Presented by Harumi Kuno HP.
1 Software Testing and Quality Assurance Lecture 13 - Planning for Testing (Chapter 3, A Practical Guide to Testing Object- Oriented Software)
Data Mining Methodology 1. Why have a Methodology  Don’t want to learn things that aren’t true May not represent any underlying reality ○ Spurious correlation.
T. E. Potok - University of Tennessee Software Engineering Dr. Thomas E. Potok Adjunct Professor UT Research Staff Member ORNL.
Feedback-Directed Random Test Generation Automatic Testing & Validation CSI5118 By Wan Bo.
DSPIN: Detecting Automatically Spun Content on the Web Qing Zhang, David Y. Wang, Geoffrey M. Voelker University of California, San Diego 1.
Bug Isolation via Remote Program Sampling Ben Liblit, Alex Aiken, Alice X.Zheng, Michael I.Jordan Presented by: Xia Cheng.
Chapter 10.
SE 450 Software Processes & Product Metrics Reliability: An Introduction.
Feature Selection for Regression Problems
1 Software Testing and Quality Assurance Lecture 30 – Testing Systems.
1 Advanced Material The following slides contain advanced material and are optional.
Finding Errors in.NET with Feedback-Directed Random Testing By Carlos Pacheco, Shuvendu K. Lahiri and Thomas Ball Presented by Bob Mazzi 10/7/08.
Copyright © 2006 by The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill Technology Education Copyright © 2006 by The McGraw-Hill Companies,
Automated Tests in NICOS Nightly Control System Alexander Undrus Brookhaven National Laboratory, Upton, NY Software testing is a difficult, time-consuming.
Chapter Seven Advanced Shell Programming. 2 Lesson A Developing a Fully Featured Program.
Finding Errors in.NET with Feedback-Directed Random Testing Carlos Pacheco (MIT) Shuvendu Lahiri (Microsoft) Thomas Ball (Microsoft) July 22, 2008.
Feed Back Directed Random Test Generation Carlos Pacheco1, Shuvendu K. Lahiri2, Michael D. Ernst1, and Thomas Ball2 1MIT CSAIL, 2Microsoft Research Presented.
Software Quality Assurance Lecture #8 By: Faraz Ahmed.
Michael Ernst, page 1 Collaborative Learning for Security and Repair in Application Communities Performers: MIT and Determina Michael Ernst MIT Computer.
CS527 Topics in Software Engineering (Software Testing and Analysis) Darko Marinov September 9, 2010.
Detecting Group Differences: Mining Contrast Sets Author: Stephen D. Bay Advisor: Dr. Hsu Graduate: Yan-Cheng Lin.
1 Test Selection for Result Inspection via Mining Predicate Rules Wujie Zheng
The Category-Partition Method for Specifying and Generating Functional Tests. Thomas J. Ostrand and Marc J.Balcer [ CACM,1988 ]. Slides from Prof. Shmuel.
Feedback-directed Random Test Generation Carlos Pacheco Shuvendu Lahiri Michael Ernst Thomas Ball MIT Microsoft Research January 19, 2007.
Week 14 Introduction to Computer Science and Object-Oriented Programming COMP 111 George Basham.
Finding Errors in.NET with Feedback-Directed Random Testing Carlos Pacheco (MIT) Shuvendu Lahiri (Microsoft) Thomas Ball (Microsoft) July 22, 2008.
Directed Random Testing Evaluation. FDRT evaluation: high-level – Evaluate coverage and error-detection ability large, real, and stable libraries tot.
Demo of Scalable Pluggable Types Michael Ernst MIT Dagstuhl Seminar “Scalable Program Analysis” April 17, 2008.
Chapter 8 Testing. Principles of Object-Oriented Testing Å Object-oriented systems are built out of two or more interrelated objects Å Determining the.
Lecture 13.  Failure mode: when team understands requirements but is unable to meet them.  To ensure that you are building the right system Continually.
USING MODEL CHECKING TO DISCOVER AUTOMATION SURPRISES Java class User: - getExpectation() - checkExpectation() FAULTY EXECUTION start incrMCPAlt pullAltKnob.
PROGRAMMING TESTING B MODULE 2: SOFTWARE SYSTEMS 22 NOVEMBER 2013.
Identifying “Best Bet” Web Search Results by Mining Past User Behavior Author: Eugene Agichtein, Zijian Zheng (Microsoft Research) Source: KDD2006 Reporter:
A Framework to Predict the Quality of Answers with Non-Textual Features Jiwoon Jeon, W. Bruce Croft(University of Massachusetts-Amherst) Joon Ho Lee (Soongsil.
Unit Testing with FlexUnit
1 C# - Inheritance and Polymorphism. 2 1.Inheritance 2.Implementing Inheritance in C# 3.Constructor calls in Inheritance 4.Protected Access Modifier 5.The.
A Framework for Detection and Measurement of Phishing Attacks Reporter: Li, Fong Ruei National Taiwan University of Science and Technology 2/25/2016 Slide.
Whole Test Suite Generation. Abstract Not all bugs lead to program crashes, and not always is there a formal specification to check the correctness of.
CS527 Topics in Software Engineering (Software Testing and Analysis) Darko Marinov September 7, 2010.
Software testing techniques Software testing techniques REGRESSION TESTING Presentation on the seminar Kaunas University of Technology.
Random Test Generation of Unit Tests: Randoop Experience
PROGRAMMING FUNDAMENTALS INTRODUCTION TO PROGRAMMING. Computer Programming Concepts. Flowchart. Structured Programming Design. Implementation Documentation.
Review on Test-Based Approach of Software Reliability November 22 nd, 2010 Nuclear I&C and Information Engineering LabKAIST Bo Gyung Kim.
Unveiling Zeus Automated Classification of Malware Samples Abedelaziz Mohaisen Omar Alrawi Verisign Inc, VA, USA Verisign Labs, VA, USA
CPSC 372 John D. McGregor Module 8 Session 1 Testing.
Topics  Direct Predicate Characterization as an evaluation method.  Implementation and Testing of the Approach.  Conclusions and Future Work.
Advanced Computer Systems
Testing Tutorial 7.
Introduction to Compiler Construction
John D. McGregor Session 9 Testing Vocabulary
The Development Process of Web Applications
Introduction to JUnit CS 4501 / 6501 Software Testing
Requirements Analysis and Specification
John D. McGregor Session 9 Testing Vocabulary
Eclat: Automatic Generation and Classification of Test Inputs
John D. McGregor Session 9 Testing Vocabulary
Introduction to JUnit CS 4501 / 6501 Software Testing
Software Test Automation and Tools
Chapter 1 Introduction(1.1)
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
50.530: Software Engineering
Outline System architecture Current work Experiments Next Steps
Software Development Cycle
CSE 1020:Software Development
Rohan Yadav and Charles Yuan (rohany) (chenhuiy)
Detecting Data Errors: Where are we and what needs to be done?
Presentation transcript:

Author: Carlos Pacheco, Shuvendu K. Lahiri, Michael D. Ernst, Thomas Ball MIT CSAIL.

Introduction Technique Evaluation Conclusion Contents Table

What is a Feedback-directed Random Test Generation Improve random test generation by incorporating feedback obtained from previously-constructed inputs. Feedback is the most feature, because it will extremely improve the random test performance. Input and Output: Input: The code need to be tested. Output: Test case. Introduction

Competitors Systematic testing Undirected random test generation Direction Our work addresses random generation of unit tests for object-oriented programs, Like java program. Introduction

Randoop We have implemented the technique in RANDOOP which is fully automatic, requires no input from the user and scales to realistic applications with hundreds of classes. Surroundings JDK.NET Introduction

Example to run Randoop After download the randoop.jar, we can input the following commands: After run successfully, we can see in the catalog folder generates RandoopTest.Java and RandoopTest 0.Java. Then it will give you testing results. Introduction

A test case generated by randoop. Introduction

Steps: Randomly call methods Apply method to contracts Classify the methods after checking Output test case. Technique

How a feedback-directed random test works? First, we should know what the materials it will use. Second, we can analysis its process. Technique

Contracts and Filters: Contracts and filters have an important role in this technique, because they will help us validate whether every line is correct or not. Filters will change the S.i.extensible flag to true or false after the method have been called to the contracts. Technique

Default contracts checked by RANDOOP. Users can extend these with additional contracts, including domain-specific ones. Technique

Repetition: A good test case needs to call a given method multiple times. In our work, when generating a new sequence, there are 2 important parameters we can set they are N and M, which N is the possibility a method need to be called and M is the maximum times a method need to be called. Technique

3 steps: Evaluate the coverage that randoop achieves on a collection of container data structures. Randoop generates test case to find the API contract violations on widely used libraries. Like JDK and.NET. Uses randoop-generated regression test cases to find regression errors. Evaluation

Step_ 1 : Test on 4 container classes: a binary tree, a binomial heap, a fibonacci heap and a red- black tree. Use 4 techniques: systematic techniques in JPF, randoop, undirected random testing implemented in JPF, undirected random testing implemented in randoop. Evaluation

For each data structure, we performed following steps: 1.We use the optimal parameters to run Visser et al.'s test on the containers. (JPF) 2. We ran RANDOOP on the containers. (RP) 3.To compare against unguided random generation, we also reproduced Visser et al.'s results for random generation test. (JPFu) 4.Ran RANDOOP a second time, turning off all filters. (RPu) Evaluation

Result: Randoops coverages are equal to or larger than other techniques, especially its running time is much lower than others. Our results suggest that further experiment is required on how systematic and random techniques compare in detecting errors in data structures. Evaluation

Step_ 2 : Checking API contracts Test objects: java JDK and C++.NET framework. We will use 3 Techniques: feedback-directed random generation, undirected random generation, systematic generation to create test suites for widely-used libraries above mentioned. Evaluation

First, for each library, we performed randoop as the following steps: 1.We ran randoop on a library, specifying all the public classes as targets for testing. Then it will produce a suite case. 2.We compiled the test suite and ran it with REDUCE. 3.We manually inspected the failing test cases reported by REDUCE. Evaluation

Second, we use systematic testing to test the libraries as the follow steps: Write a suite case to check the same contracts as randoop. (Because systematic testing cant generate suite case like randoop) Ran suite case by JPF. Report the results. Evaluation

Compare with randoop: For all the libraries, JPF ran out of memory (after 32 seconds on average) without reporting any errors. RANDOOP was able to explore the space more effectively not because it explored a larger portion of the state space. While JPF thoroughly sampled a tiny, localized portion of the space. Evaluation

Third, we performed undirected random testing on each library: We reran RANDOOP a second time but without the filters. Result: Violation-inducing test cases: 1, 326. REDUCE reported test cases: 60. Did not find any errors. Evaluation

Regression and compliance testing: This section describes a case study in which we used feedback-directed random testing to find inconsistencies between different implementations of the same API. We tested 3 implementations: Sun JDK 1.5, Sun JDK 1.6, and IBM JDK 1.5. Evaluation

Result: We ran the resulting test suite using Sun 1.6 and a second time using IBM 1.5. A total of 25 test cases failed on Sun 1.6, and 73 test cases failed on IBM 1.5. Evaluation

Feedback-directed random testing scales to large systems, quickly finds errors in heavily tested, widely deployed applications, and achieves behavioral coverage on standard with systematic techniques. Conclusion

Thanks!