Analysis of Complex Data Structures with PEX Vadim Mutilin Evgeniy Gerlits Vladimir Fedotov Mentor: Patrice Godefroid.

Slides:



Advertisements
Similar presentations
Cristian Cadar, Peter Boonstoppel, Dawson Engler RWset: Attacking Path Explosion in Constraint-Based Test Generation TACAS 2008, Budapest, Hungary ETAPS.
Advertisements

Automated Test Data Generation Maili Markvardt. Outline Introduction Test data generation problem Black-box approach White-box approach.
Leonardo de Moura Microsoft Research. Z3 is a new solver developed at Microsoft Research. Development/Research driven by internal customers. Free for.
Designing an Architecture 1.Design Strategy Decomposition Designing to Architecturally Significant Requirements Generate and Test This generate-and test.
Database Dev Idea. Reasoning: Much of the simple work can be done by Gii We don't want to start the complex work until Gii has generated the simple stuff.
Symbolic Execution with Mixed Concrete-Symbolic Solving
PLDI’2005Page 1June 2005 Example (C code) int double(int x) { return 2 * x; } void test_me(int x, int y) { int z = double(x); if (z==y) { if (y == x+10)
Automatic test case generation for programs that are coded against interfaces and annotations or use native code Mainul Islam Supervisor: Dr. Christoph.
Parallel Symbolic Execution for Structural Test Generation Matt Staats Corina Pasareanu ISSTA 2010.
Control Flow Analysis (Chapter 7) Mooly Sagiv (with Contributions by Hanne Riis Nielson)
1 Symbolic Execution for Model Checking and Testing Corina Păsăreanu (Kestrel) Joint work with Sarfraz Khurshid (MIT) and Willem Visser (RIACS)
T. E. Potok - University of Tennessee Software Engineering Dr. Thomas E. Potok Adjunct Professor UT Research Staff Member ORNL.
CSE503: SOFTWARE ENGINEERING SYMBOLIC TESTING, AUTOMATED TEST GENERATION … AND MORE! David Notkin Spring 2011.
1 CODE TESTING Principles and Alternatives. 2 Testing - Basics goal - find errors –focus is the source code (executable system) –test team wants to achieve.
Mike Azocar Sr. Developer Technical Specialist Microsoft Corporation
Pexxxx White Box Test Generation for
DART Directed Automated Random Testing Patrice Godefroid, Nils Klarlund, and Koushik Sen Syed Nabeel.
Vladimir Kulyukin Computer Science Department Utah State University
Chapter 2: The Visual Studio.NET Development Environment Visual Basic.NET Programming: From Problem Analysis to Program Design.
 What is Software Testing  Terminologies used in Software testing  Types of Testing  What is Manual Testing  Types of Manual Testing  Process that.
Automating Software Testing Using Program Analysis -Patrice Godefroid, Peli de Halleux, Aditya V. Nori, Sriram K. Rajamani,Wolfram Schulte, and Nikolai.
1 Software Testing (Part-II) Lecture Software Testing Software Testing is the process of finding the bugs in a software. It helps in Verifying and.
1. Topics to be discussed Introduction Objectives Testing Life Cycle Verification Vs Validation Testing Methodology Testing Levels 2.
DART: Directed Automated Random Testing Koushik Sen University of Illinois Urbana-Champaign Joint work with Patrice Godefroid and Nils Klarlund.
Tao Xie (North Carolina State University) Nikolai Tillmann, Jonathan de Halleux, Wolfram Schulte (Microsoft Research, Redmond WA, USA)
Symbolic Execution with Mixed Concrete-Symbolic Solving (SymCrete Execution) Jonathan Manos.
CUTE: A Concolic Unit Testing Engine for C Technical Report Koushik SenDarko MarinovGul Agha University of Illinois Urbana-Champaign.
Texas A&M University Department of Computer Science Sameh S. Sharkawi
PLATFORM INDEPENDENT SOFTWARE DEVELOPMENT MONITORING Mária Bieliková, Karol Rástočný, Eduard Kuric, et. al.
Teaching and Learning Programming and Software Engineering via Interactive Gaming Tao Xie University of Illinois at Urbana-Champaign In collaboration with.
Bug Localization with Machine Learning Techniques Wujie Zheng
Class Relationships Lecture Oo10 Dependencies. References n Booch, et al, The Unified Modeling Language User Guide, Chapt 5 p.69, Chapt 9 130, Chapt 10.
Automated Whitebox Fuzz Testing (NDSS 2008) Presented by: Edmund Warner University of Central Florida April 7, 2011 David Molnar UC Berkeley
Automated Whitebox Fuzz Testing Network and Distributed System Security (NDSS) 2008 by Patrice Godefroid, ‏Michael Y. Levin, and ‏David Molnar Present.
Playing God: The Engineering of Functional Designs in the Game of Life Liban Mohamed Computer Systems Research Lab
Tao Xie North Carolina State University Nikolai Tillmann, Peli de Halleux, Wolfram Schulte Microsoft Research.
Evolutionary Art with Multiple Expression Programming By Quentin Freeman.
Mining Gigabytes of Dynamic Traces for Test Generation Suresh Thummalapenta North Carolina State University Peli de Halleux and Nikolai Tillmann Microsoft.
Advanced C# Types Tom Roeder CS fa. From last time out parameters difference is that the callee is required to assign it before returning not the.
Cooperative Developer Testing: Tao Xie North Carolina State University In collaboration with Xusheng ASE and Nikolai Tillmann, Peli de
Tao Xie (North Carolina State University) Nikolai Tillmann, Peli de Halleux, Wolfram Schulte (Microsoft Research)
Project roles and responsibilities
A Test Case + Mock Class Generator for Coding Against Interfaces Mainul Islam, Christoph Csallner Software Engineering Research Center (SERC) Computer.
New Random Test Strategies for Automated Discovery of Faults & Fault Domains Mian Asbat Ahmad
1 Data Structures CSCI 132, Spring 2014 Lecture 1 Big Ideas in Data Structures Course website:
The Loquacious ( 愛說話 ) User: A Document-Independent Source of Terms for Query Expansion Diane Kelly et al. University of North Carolina at Chapel Hill.
CUTE: A Concolic Unit Testing Engine for C Koushik SenDarko MarinovGul Agha University of Illinois Urbana-Champaign.
Lazy Annotation for Program Testing and Verification (Supplementary Materials) Speaker: Chen-Hsuan Adonis Lin Advisor: Jie-Hong Roland Jiang December 3,
Computer Science: A Structured Programming Approach Using C1 Objectives ❏ To introduce the basic concepts of linked lists ❏ To introduce the basic concepts.
CSE 331 SOFTWARE DESIGN & IMPLEMENTATION SYMBOLIC TESTING Autumn 2011.
Design Problem & Solution By Team 7 PT. Summary of Problems and Solutions Design Problem Candidate Patterns Motivation of Selection Structure of the Pattern.
Symstra: A Framework for Generating Object-Oriented Unit Tests using Symbolic Execution Tao Xie, Darko Marinov, Wolfram Schulte, and David Notkin University.
Clear Lines Consulting · clear-lines.comApril 21, 2010 · 1 The Joy of Pex
1 Double-Patterning Aware DSA Template Guided Cut Redistribution for Advanced 1-D Gridded Designs Zhi-Wen Lin and Yao-Wen Chang National Taiwan University.
Automation Testing Trainer: Eran Ruso. Training Agenda Automation Testing Introduction Microsoft Automation Testing Tool Box Coded UI Test and Unit Test.
Graphs - II CS 2110, Spring Where did David leave that book? 2.
Dynamic Symbolic Execution
A Test Case + Mock Class Generator for Coding Against Interfaces
Presented by Mahadevan Vasudevan + Microsoft , *UC-Berkeley
Marcelo d’Amorim (UIUC)
ECET 370 HELPS Education Your Life-- ecet370helps.com.
Chapter 15 Lists Objectives
CS240: Advanced Programming Concepts
Automatic Test Generation SymCrete
Why inheritance? shape mammal map
JCF Collection classes and interfaces
CUTE: A Concolic Unit Testing Engine for C
COP3530- Data Structures Introduction
Test Cases, Test Suites and Test Case management systems
Presentation transcript:

Analysis of Complex Data Structures with PEX Vadim Mutilin Evgeniy Gerlits Vladimir Fedotov Mentor: Patrice Godefroid

Microsoft Pex White box test generation for.NET Implements DART (Directed Automated Random Testing): combines concrete and symbolic executions Push button approach 2

Complex Data Structures Examples: List, Queue, Map, Tree, Graph 3

Motivation Nikolai Tillmann, et al. Test Input Generation for Programs with Pointers. TACAS Does push button approach really work on complex data structures? – class MyList private T value add(T value) void removeAT(int index) T getItem(int index) 4

Project Goals Understanding limits – Documentation – Authors – Concrete examples Making out suggestions – Usage patterns – Improvements 5

Push Button Approach 6

Push Button (Results) MyContains 6/6 (100.00%), 103 Runs MyContains 7

Push Button (MyList) 8

Push Button (Results) 9 Data StructureAlgorithmPush button Graph dijkstra7/23 (122) SkipList filterPrimes12/20 (3) BinarySearchTree search8/9 (4) List search9/9 (109) LinkedListbubble_sort10/10 (31) covered/total basic blocks (test runs)

Factory Approach 10 Pex generates template for Factory method User adds Factory method which generates the inputs Factory method may be parameterized

Factory (Results) Data StructureAlgorithm Push button Factory Graph dijkstra7/23 (122)7/23 (85) SkipList filterPrimes12/20 (3)20/20 (116) BinarySearchTree search8/9 (4)9/9 (9) List search9/9 (109) LinkedListbubble_sort10/10 (31)10/10 (44) 11 covered/total basic blocks (test runs)

Pool Approach Collection of concrete input objects Collection is created manually by the tester Pex iterates indexes Implementation is called with concrete objects by their indexes 12

Pool (Results) Data StructureAlgorithmPush buttonFactoryPool Graph dijkstra7/23 (122)7/23 (85)23/23 (6) SkipList filterPrimes12/20 (3)20/20 (116) BinarySearchTree search8/9 (4)9/9 (9) List search9/9 (109) LinkedListbubble_sort10/10 (31)10/10 (44) 13 covered/total basic blocks (test runs)

Relaxing Visibility Constraints 14 Can be done with annotation

Conclusion Pex limitations are still unclear 2 bugs reported to the Pex team Suggested – Pool approach – Relaxing visibility constraints with annotations Promising topic for further research 15