Specification-Based Unit Test Data Selection: Integrating Daikon and Jtest Tao Xie and David Notkin Computer Science & Engineering, University of.

Slides:



Advertisements
Similar presentations
Software Testing Technique. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves.
Advertisements

Test Yaodong Bi.
Looping Structures: Do Loops
Defect Localization Using Dynamic Call Tree Mining and Matching Anis Yousefi, PhD Candidate Department of Computing and Software McMaster University May.
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
A survey of techniques for precise program slicing Komondoor V. Raghavan Indian Institute of Science, Bangalore.
1 of 24 Automatic Extraction of Object-Oriented Observer Abstractions from Unit-Test Executions Dept. of Computer Science & Engineering University of Washington,
Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages Chapter 3 : Describing Syntax and Semantics Axiomatic Semantics.
CMSC 345, Version 11/07 SD Vick from S. Mitchell Software Testing.
Unit Testing CSSE 376, Software Quality Assurance Rose-Hulman Institute of Technology March 27, 2007.
WISTPC-09 : Session A Tariq M. King PhD Candidate Florida International University Workshop on Integrating Software Testing into Programming.
Dynamically Discovering Likely Program Invariants to Support Program Evolution Michael D. Ernst, Jake Cockrell, William G. Griswold, David Notkin Presented.
Dynamically Discovering Likely Program Invariants to Support Program Evolution Michael Ernst, Jake Cockrell, William Griswold, David Notkin Presented by.
Program Testing Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
OOP #10: Correctness Fritz Henglein. Wrap-up: Types A type is a collection of objects with common behavior (operations and properties). (Abstract) types.
Michael Ernst, page 1 Improving Test Suites via Operational Abstraction Michael Ernst MIT Lab for Computer Science Joint.
16/27/2015 3:38 AM6/27/2015 3:38 AM6/27/2015 3:38 AMTesting and Debugging Testing The process of verifying the software performs to the specifications.
CS4723 Software Validation and Quality Assurance Lecture 02 Overview of Software Testing.
Automated Testing Nathan Weiss April 23, Overview History of Testing Advantages to Automated Testing Types of Automated Testing Automated Testing.
System/Software Testing
Validation Metrics. Metrics are Needed to Answer the Following Questions How much time is required to find bugs, fix them, and verify that they are fixed?
Software Engineering Prof. Dr. Bertrand Meyer March 2007 – June 2007 Chair of Software Engineering Static program checking and verification Slides: Based.
1 Debugging and Testing Overview Defensive Programming The goal is to prevent failures Debugging The goal is to find cause of failures and fix it Testing.
© Polycom, Inc. All rights reserved. From “No need for QA” to “Cannot Live without QA” in 100 days Waisman Guy, Polycom inc, SQA Team leader.
1 Phase Testing. \ 2 Overview of Implementation phase Create Class Skeletons Define Implementation Plan (+ determine subphases) Define Coding Standards.
Tao Xie ( ) Advisor: David Notkin Department of Computer Science & Engineering, University of Washington, Seattle Syntactically.
1 Automatic Identification of Common and Special Object-Oriented Unit Tests Dept. of Computer Science & Engineering University of Washington, Seattle Oct.
Software Verification Academician V.P.Ivannikov, Director of ISPRAS Moscow, November 2008.
Software Testing. 2 CMSC 345, Version 4/12 Topics The testing process  unit testing  integration and system testing  acceptance testing Test case planning.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Code Contracts Parameterized Unit Tests Tao Xie. Example Unit Test Case = ? Outputs Expected Outputs Program + Test inputs Test Oracles 2 void addTest()
Unit Testing 101 Black Box v. White Box. Definition of V&V Verification - is the product correct Validation - is it the correct product.
Well-behaved objects Main concepts to be covered Testing Debugging Test automation Writing for maintainability Objects First with Java - A Practical.
1 Test Selection for Result Inspection via Mining Predicate Rules Wujie Zheng
CPSC 873 John D. McGregor Session 9 Testing Vocabulary.
Objects First With Java A Practical Introduction Using BlueJ Well-behaved objects 2.1.
SOFTWARE TESTING. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves any activity.
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
Debugging and Testing Hussein Suleman March 2007 UCT Department of Computer Science Computer Science 1015F.
1 Sections 7.2 – 7.7 Nested Control Statements Fundamentals of Java: AP Computer Science Essentials, 4th Edition Lambert / Osborne.
Jeremy Nimmer, page 1 Automatic Generation of Program Specifications Jeremy Nimmer MIT Lab for Computer Science Joint work with.
Testing and Debugging UCT Department of Computer Science Computer Science 1015F Hussein Suleman March 2009.
Testing Data Structures
A Review of Software Testing - P. David Coward
What is Software Test Automation?
TQS - Teste e Qualidade de Software (Software Testing and Quality) Software Testing Concepts João Pascoal Faria
TQS - Teste e Qualidade de Software (Software Testing and Quality) Test Case Design – Model Based Testing João Pascoal.
Software Testing.
John D. McGregor Session 9 Testing Vocabulary
Checking Inside the Black Box: Regression Fault Exposure and Localization Based on Value Spectra Differences Tao Xie Advisor: David Notkin Dept.
CS5123 Software Validation and Quality Assurance
Software engineering – 1
White-Box Testing.
John D. McGregor Session 9 Testing Vocabulary
Eclat: Automatic Generation and Classification of Test Inputs
White-Box Testing Using Pex
John D. McGregor Session 9 Testing Vocabulary
Introduction to Software Testing
Lecture 14: Data Repairing
Software Test Automation and Tools
Graph Coverage for Source Code
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Software Verification and Validation
Software Verification and Validation
Whitebox Testing.
The Zoo of Software Security Techniques
Software Verification and Validation
CSE 1020:Software Development
UNIT TESTING TOOLS Workshop on Integrating Software
Software Testing.
Presentation transcript:

Specification-Based Unit Test Data Selection: Integrating Daikon and Jtest Tao Xie and David Notkin Computer Science & Engineering, University of Washington Problems Which test inputs are more “valuable” ? Developers manually write unit tests, which are usually insufficient to achieve satisfactory quality assurance of the unit. (Test insufficiency problem) Unit test generation tools automatically produce a large number of test inputs to exercise the unit. But how to know these automatically generated tests produce correct results? (Test oracle problem) How do we select “valuable” test inputs from automatically generated ones, equip them with oracles, and augment manually created unit tests? (Test selection problem) Those new test inputs that exercise at least one new feature not being exercised by any test case in the existing test suite. Black-box features: functionalities, predicates/states in specifications, etc. White-box features: methods, statements, branches, def-use pairs, etc. In traditional black box testing, , either formal or informal specifications are usually needed to help identify features, but in practice programs lack of specifications most of the time. A specification-based approach without a priori specification Infer likely specifications from existing test executions They reflect both the program behavior and the test history Any new tests that violate the inferred specifications are used as the candidates for test data selections – These tests possibly exercise new program behavior Jtest (http://www.parasoft.com/) Daikon (http://pag.lcs.mit.edu/daikon/) A popular commercial unit test tool that can produce a large number of test inputs for a Java class An invariant detection tool that can infer likely specifications from program executions Bounded Stack Example: Manual basic test # Manual JAX test # 8 (67%) 16 (97%) Auto generated test # (length 1) Auto generated test # (length 2) Auto generated test # (length 3) 14 (63%) 96 (86%) 1745 (86%) The number of selected tests, violating tests, and violated specifications Precondition Guard Removal Iteration. Type Test call length 1 Test call length 2 Test call length 3 1. Basic Full 0/1: 2 0/3: 3 0/0: 0 1. Basic No Pre 5/7: 15 8/13: 15 1/2: 2 1. JAX Full 1/3: 3 1/1: 1 1. JAX No Pre 1/3: 6 10/24: 41 2. Basic Full 2. Basic No Pre 0/1: 1 2. JAX Full 2. JAX No Pre Iterations reaching fixed point This work was supported in part by the National Science Foundation under grant ITR 0086003.