AUSTIN: A TOOL FOR SEARCH BASED SOFTWARE TESTING And its Evaluation on Deployed Automotive Systems Kiran Lakhotia, Mark Harman and Hamilton Gross in.

Slides:



Advertisements
Similar presentations
Extending Eclipse CDT for Remote Target Debugging Thomas Fletcher Director, Automotive Engineering Services QNX Software Systems.
Advertisements

Automated Test Data Generation Maili Markvardt. Outline Introduction Test data generation problem Black-box approach White-box approach.
Brainy: Effective Selection of Data Structures. Why data structure selection is important How to choose the best data structure for a specific application.
Masahiro Fujita Yoshihisa Kojima University of Tokyo May 2, 2008
Automatic Memory Management Noam Rinetzky Schreiber 123A /seminar/seminar1415a.html.
Control Flow Analysis (Chapter 7) Mooly Sagiv (with Contributions by Hanne Riis Nielson)
TaintScope: A Checksum-Aware Directed Fuzzing Tool for Automatic Software Vulnerability Detection Tielei Wang 1, Tao Wei 1, Guofei Gu 2, Wei Zou 1 1 Peking.
Symbolic execution © Marcelo d’Amorim 2010.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide 7- 1 Overview 7.1 Introduction to Arrays 7.2 Arrays in Functions 7.3.
Computer Science Automated Test Data Generation for Aspect-Oriented Programs Mark Harman (King’s College London, UK) Fayezin Islam (T-Zero Processing Services,
SBSE Course 3. EA applications to SE Analysis Design Implementation Testing Reference: Evolutionary Computing in Search-Based Software Engineering Leo.
CSE503: SOFTWARE ENGINEERING SYMBOLIC TESTING, AUTOMATED TEST GENERATION … AND MORE! David Notkin Spring 2011.
Copyright © 2012 Pearson Education, Inc. Chapter 1: Introduction to Computers and Programming.
Copyright © 2008 Pearson Addison-Wesley. All rights reserved. Chapter 13 Pointers and Linked Lists.
Software Testing and Quality Assurance
Data Dependence Based Testability Transformation in Automated Test Generation Presented by: Qi Zhang.
A452 – Programming project – Mark Scheme
Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing) © Naik & Tripathy 1 Software Testing and Quality Assurance Theory and Practice.
Chapter Introduction to Computers and Programming 1.
Digital Signal Processors for Real-Time Embedded Systems By Jeremy Kohel.
CS 350 Operating Systems & Programming Languages Ethan Race Oren Rasekh Christopher Roberts Christopher Rogers Anthony Simon Benjamin Ramos.
Invitation to Computer Science 5th Edition
CREST Internal Yunho Kim Provable Software Laboratory CS Dept. KAIST.
Ranga Rodrigo April 6, 2014 Most of the sides are from the Matlab tutorial. 1.
CUTE: A Concolic Unit Testing Engine for C Technical Report Koushik SenDarko MarinovGul Agha University of Illinois Urbana-Champaign.
C++ Code Analysis: an Open Architecture for the Verification of Coding Rules Paolo Tonella ITC-irst, Centro per la Ricerca Scientifica e Tecnologica
Microsoft Research Asia Ming Wu, Haoxiang Lin, Xuezheng Liu, Zhenyu Guo, Huayang Guo, Lidong Zhou, Zheng Zhang MIT Fan Long, Xi Wang, Zhilei Xu.
Chapter 1: Introduction to Computers and Programming.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 1: Introduction to Computers and Programming.
© 2008, Renesas Technology America, Inc., All Rights Reserved 1 Purpose  This training module provides an overview of optimization techniques used in.
A Specification Language and Test Planner for Software Testing Aolat A. Adedeji 1 Mary Lou Soffa 1 1 DEPARTMENT OF COMPUTER SCIENCE, UNIVERSITY OF VIRGINIA.
1 Phase Testing. \ 2 Overview of Implementation phase Create Class Skeletons Define Implementation Plan (+ determine subphases) Define Coding Standards.
Intro. ANN & Fuzzy Systems Lecture 36 GENETIC ALGORITHM (1)
1 SAM /JUNE/2000 SDL Based Auto Code Generation: A Multi Beneficial Approach Bhaskar Rao.G Software Engineering Group, Motorola India Electronics.
Test Suite Reduction for Regression Testing of Simple Interactions between Two Software Modules Dmitry Kichigin.
Testing Testing Techniques to Design Tests. Testing:Example Problem: Find a mode and its frequency given an ordered list (array) of with one or more integer.
EVOLVING BETTER COMPUTER GAME ALGORITHMS WITH THE GPROTOOLKIT GENETIC PROGRAMMING SYSTEM By: Gregory Miranda University of Advancing Technology.
Presented By Dr. Mohsen Alardhi College of Technological Studies, Kuwait April 19 th,2009.
Introduction to Compilers. Related Area Programming languages Machine architecture Language theory Algorithms Data structures Operating systems Software.
CS 261 – Recitation 2 Fall 2013 Oregon State University School of Electrical Engineering and Computer Science.
An Undergraduate Course on Software Bug Detection Tools and Techniques Eric Larson Seattle University March 3, 2006.
PROGRAMMING TESTING B MODULE 2: SOFTWARE SYSTEMS 22 NOVEMBER 2013.
Improving Structural Testing of Object-Oriented Programs via Integrating Evolutionary Testing and Symbolic Execution Kobi Inkumsah Tao Xie Dept. of Computer.
CUTE: A Concolic Unit Testing Engine for C Koushik SenDarko MarinovGul Agha University of Illinois Urbana-Champaign.
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.
Computer Science A 1. Course plan Introduction to programming Basic concepts of typical programming languages. Tools: compiler, editor, integrated editor,
Random Test Generation of Unit Tests: Randoop Experience
Symbolic Execution in Software Engineering By Xusheng Xiao Xi Ge Dayoung Lee Towards Partial fulfillment for Course 707.
CSE 331 SOFTWARE DESIGN & IMPLEMENTATION SYMBOLIC TESTING Autumn 2011.
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Eighth Edition by Tony Gaddis,
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.
CS223: Software Engineering Lecture 26: Software Testing.
Wishnu Prasetya Software Testing URL:
John D. McGregor Session 9 Testing Vocabulary
Handouts Software Testing and Quality Assurance Theory and Practice Chapter 4 Control Flow Testing
Seminar in automatic tools for analyzing programs with dynamic memory
C Basics.
John D. McGregor Session 9 Testing Vocabulary
White-Box Testing.
Moonzoo Kim CS Dept. KAIST
Introduction to GSL CS 3414 From GNU Scientific Library Reference Manual at
High Coverage Detection of Input-Related Security Faults
John D. McGregor Session 9 Testing Vocabulary
White-Box Testing.
Software Testing: A Research Travelogue
Created by Hwansoo Han Edited by Ikjun Yeom
Methods and Materials (cont.)
The Challenge of Cross - Language Interoperability
CUTE: A Concolic Unit Testing Engine for C
Software Testing.
Presentation transcript:

AUSTIN: A TOOL FOR SEARCH BASED SOFTWARE TESTING And its Evaluation on Deployed Automotive Systems Kiran Lakhotia, Mark Harman and Hamilton Gross in

Publication Trend in SBSE

Spread of Activities in SBSE

Yet another tool?  IGUANA (Phil Univ. of Sheffield) for C  not officially available  eTOC (Paolo FBK) for JAVA  Other SBT tools for C language? Challenges – no reflection Pointers and the ability to cast arbitrarily between types

Yet Another Search Based Testing Tool? IGUANA - for C (Phil McMinn) eTOC – for JAVA (Paolo Tonella) Others?

Yet Another Search Based Testing Tool? IGUANA - for C (Phil McMinn) eTOC – for JAVA (Paolo Tonella) Others? AUSTIN

Outline AUSTIN Introduction to Austin ETF Overview of ETF Empirical Study Hypotheses, Test Subjects Results and Analysis Conclusion ETF or AUSTIN?

AUgmented Search based TestINg CIL AST, CFG instrumentgcc -o sut.exe run AUSTIN gcc -P -E c source files preprocessed c source files instrumented c source

AUgmented Search based TestINg CIL AST, CFG instrumentgcc -o sut.exe run AUSTIN gcc -P -E c source files preprocessed c source files instrumented c source

AUgmented Search based TestINg CIL AST, CFG instrumentgcc -o sut.exe run AUSTIN gcc -P -E c source files preprocessed c source files instrumented c source

AUgmented Search based TestINg CIL AST, CFG instrumentgcc -o sut.exe run AUSTIN gcc -P -E c source files preprocessed c source files instrumented c source

AUgmented Search based TestINg void testme(key1, key2, p, q) int key1; int key2; int* p; int* q; { if(key1 == key2) if(p != 0) if(p == q) //target }

AUgmented Search based TestINg void testme(key1, key2, p, q) int key1; int key2; int* p; int* q; { if(key1 == key2) if(p != 0) if(p == q) //target } Inputs: key1 = 87, key2 = 33, p = 0, q = 0

AUgmented Search based TestINg void testme(key1, key2, p, q) int key1; int key2; int* p; int* q; { if(key1 == key2) if(p != 0) if(p == q) //target } Inputs: key1 = 88, key2 = 33, p = 0, q = 0

AUgmented Search based TestINg void testme(key1, key2, p, q) int key1; int key2; int* p; int* q; { if(key1 == key2) if(p != 0) if(p == q) //target } Inputs: key1 = 86, key2 = 33, p = 0, q = 0

AUgmented Search based TestINg void testme(key1, key2, p, q) int key1; int key2; int* p; int* q; { if(key1 == key2) if(p != 0) if(p == q) //target } Inputs: key1 = 84, key2 = 33, p = 0, q = 0

AUgmented Search based TestINg void testme(key1, key2, p, q) int key1; int key2; int* p; int* q; { if(key1 == key2) if(p != 0) if(p == q) //target } Inputs: key1 = 80, key2 = 33, p = 0, q = 0

AUgmented Search based TestINg void testme(key1, key2, p, q) int key1; int key2; int* p; int* q; { if(key1 == key2) if(p != 0) if(p == q) //target } Inputs: key1 = 80, key2 = 33, p = 0, q = 0 Fitness Function: approach_level + norm(branch_distance) Search Method: Alternating Variable Method

AUgmented Search based TestINg void testme(key1, key2, p, q) int key1; int key2; int* p; int* q; { if(key1 == key2) if(p != 0) if(p == q) //target } Inputs: key1 = 33, key2 = 33, p = 0, q = 0

AUgmented Search based TestINg void testme(key1, key2, p, q) int key1; int key2; int* p; int* q; { if(key1 == key2) if(p != 0) if(p == q) //target } Inputs: key1 = 33, key2 = 33, p = 0, q = 0 Symbolic Path Condition: key1 == key2 && p == 0

AUgmented Search based TestINg void testme(key1, key2, p, q) int key1; int key2; int* p; int* q; { if(key1 == key2) if(p != 0) if(p == q) //target } Inputs: key1 = 33, key2 = 33, p = 0, q = 0 Symbolic Path Condition: key1 == key2 && p == 0 Simplified Path Condition: p == 0

AUgmented Search based TestINg void testme(key1, key2, p, q) int key1; int key2; int* p; int* q; { if(key1 == key2) if(p != 0) if(p == q) //target } Inputs: key1 = 33, key2 = 33, p = 0, q = 0 Symbolic Path Condition: key1 == key2 && p == 0 Simplified Path Condition: p == 0 Solve: p ≠ 0

AUgmented Search based TestINg void testme(key1, key2, p, q) int key1; int key2; int* p; int* q; { if(key1 == key2) if(p != 0) if(p == q) //target } Inputs: key1 = 33, key2 = 33, p = 0, q = 0 Symbolic Path Condition: key1 == key2 && p == 0 Simplified Path Condition: p == 0 Solve: p ≠ 0 p0

AUgmented Search based TestINg void testme(key1, key2, p, q) int key1; int key2; int* p; int* q; { if(key1 == key2) if(p != 0) if(p == q) //target } Inputs: key1 = 33, key2 = 33, p = 0x..., q = 0

AUgmented Search based TestINg void testme(key1, key2, p, q) int key1; int key2; int* p; int* q; { if(key1 == key2) if(p != 0) if(p == q) //target } Inputs: key1 = 33, key2 = 33, p = 0x..., q = 0 Symbolic Path Condition: key1 == key2 && p ≠ 0 && p ≠ q Simplified Path Condition: p ≠ 0 && p ≠ q Solve: p ≠ 0 && p == q p0 q p,q0

AUgmented Search based TestINg void testme(key1, key2, p, q) int key1; int key2; int* p; int* q; { if(key1 == key2) if(p != 0) if(p == q) //target } Inputs: key1 = 33, key2 = 33, p = 0x..., q = 0 Symbolic Path Condition: key1 == key2 && p ≠ 0 && p ≠ q Simplified Path Condition: p ≠ 0 && p ≠ q Solve: p ≠ 0 && p == q p,q0

AUgmented Search based TestINg void testme(key1, key2, p, q) int key1; int key2; int* p; int* q; { if(key1 == key2) if(p != 0) if(p == q) //target } Inputs: key1 = 33, key2 = 33, p = 0x..., q = 0x...

Evolutionary Testing Framework (ETF) rZSlJ3hb  ETF was developed as part of the EvoTest project  Integrated into the Eclipse IDE  Supports white & black box testing  Uses Evolutionary Algorithms (through the GUIDE, EO evolutionary library interface) to generate test data ETF Selection Recombination Mutation Reinsertion GUIDE + EO Send Fitness Values Send Individuals

ETF cont. rZSlJ3hb Screenshots taken from a talk by Peter M. Kruse from Berner & Mattner, April 2009

ETF cont. rZSlJ3hb Screenshots taken from a talk by Peter M. Kruse from Berner & Mattner, April 2009

Fitness Function and Algorithm  Both ETF and AUSTIN use the standard fitness function for branch coverage in Search Based Testing  apporach_level + norm(branch_distance) normalization function: branch_distance  ETF uses a Genetic Algorithm  AUSTIN uses the Alternating Variable Method

Pointers in ETF and AUSTIN  AUSTIN  Construct an equivalence of memory locations based on = and ≠ operators in symbolic path condition  Initialize (pointer) input variables based on the graph Assign new memory location via malloc or use existing memory location On-demand pointer handling  ETF  Generate an index and auxiliary variable for each pointer input  Assign all input variables of the same type (including globals) to a pool Optimize indices and values of auxiliary variables along with the inputs. Indices are used to select variables from pools and assign their address to the pointer input

Pointers in ETF struct cell{ int value; struct cell* next; }; int globX; double globDbl; struct cell* pCell; void testme(int* p, int* q) {... } p = &globX; q = &val_p;

Hypothesis Null HypothesesAlternate Hypotheses AUSTIN is as effective as the ETF in achieving branch coverage. AUSTIN is more effective than the ETF in achieving branch coverage. AUSTIN is equally as efficient as the ETF in achieving branch coverage of a function. AUSTIN is more efficient than the ETF in achieving branch coverage of a function.

Hypothesis  H 01 : AUSTIN is as effective as the ETF in achieving branch coverage.  H A1 : AUSTIN is more effective than the ETF in achieving branch coverage.  H 02 : AUSTIN is equally as efficient as the ETF in achieving branch coverage of a function.  H A2 : AUSTIN is more efficient than the ETF in achieving branch coverage of a function.

Empirical Study  3 case studies (comprising 8 functions)  Embedded Software Modules from Automotive Industry Case StudyDescriptionLOC - TestedTotal BranchesNr. Inputs BAdaptive Headlight Control Software 1, CDoor-Lock Control Software DElectric Windows Control Software

Coverage ETF vs AUSTIN

Efficiency ETF vs AUSTIN

Coverage Random vs AUSTIN

Efficiency Random vs AUSTIN

ETF or AUSTIN?  Coverage is about the same  AUSTIN is overall a little bit more efficient than the ETF in terms of fitness evaluations. In terms of wall clock time the difference is greater (due to the overhead of the ETF-GUIDE setup)  AUSTIN does not construct random memory graphs  ETF is not able generate inputs such as struct cell{ int mem; }; void testme(int* p, struct cell* c) { if( p == &c->mem ) //target }

Summary