austin: a tool for search based software testing

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

Upload: ciara

Post on 24-Feb-2016

54 views

Category:

Documents


0 download

DESCRIPTION

Kiran Lakhotia, Mark Harman and Hamilton Gross in. AUSTIN: A tool for Search based software testing. And its Evaluation on Deployed Automotive Systems. Publication Trend in SBSE. Spread of Activities in SBSE. Yet Another Search Based Testing Tool?. Yet Another Search Based Testing Tool?. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: AUSTIN: A tool for Search based software testing

AUSTIN: A TOOL FOR SEARCH BASED SOFTWARE TESTINGAnd its Evaluation on Deployed Automotive Systems

Kiran Lakhotia, Mark Harman and Hamilton Gross in

Page 2: AUSTIN: A tool for Search based software testing

Publication Trend in SBSE

Page 3: AUSTIN: A tool for Search based software testing

Spread of Activities in SBSE

Page 4: AUSTIN: A tool for Search based software testing

Yet Another Search Based Testing Tool?

IGUANA - for C (Phil

McMinn)

eTOC – for JAVA (Paolo

Tonella)

Others?

Page 5: AUSTIN: A tool for Search based software testing

Yet Another Search Based Testing Tool?

IGUANA - for C (Phil McMinn)

eTOC – for JAVA (Paolo

Tonella)Others?

AUSTIN

Page 6: AUSTIN: A tool for Search based software testing

OutlineAUSTIN •Introduction to Austin

ETF •Overview of ETF

EmpiricalStudy

•Hypotheses, Test Subjects•Results and Analysis

Conclusion •ETF or AUSTIN?

Page 7: AUSTIN: A tool for Search based software testing

AUgmented Search based TestINg

CIL

AST, CFG

instrument

gcc -o sut.exe

runAUSTIN

gcc -P -Ec sourcefiles

preprocessed

c sourcefiles

instrumented

c source

Page 8: AUSTIN: A tool for Search based software testing

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}

Page 9: AUSTIN: A tool for Search based software testing

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

Page 10: AUSTIN: A tool for Search based software testing

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

Page 11: AUSTIN: A tool for Search based software testing

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

Page 12: AUSTIN: A tool for Search based software testing

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

Page 13: AUSTIN: A tool for Search based software testing

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

Page 14: AUSTIN: A tool for Search based software testing

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 = 0Fitness Function:approach_level + norm(branch_distance)Search Method:Alternating Variable Method

Page 15: AUSTIN: A tool for Search based software testing

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

Page 16: AUSTIN: A tool for Search based software testing

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

Page 17: AUSTIN: A tool for Search based software testing

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

Page 18: AUSTIN: A tool for Search based software testing

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

Page 19: AUSTIN: A tool for Search based software testing

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

p 0

Page 20: AUSTIN: A tool for Search based software testing

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

Page 21: AUSTIN: A tool for Search based software testing

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 == qp 0

q

p,q 0

Page 22: AUSTIN: A tool for Search based software testing

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...

Page 23: AUSTIN: A tool for Search based software testing

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

Recombinatio

n

Mutation

ReinsertionGUIDE + EO

Send Fitness Values

Send Individuals

Page 24: AUSTIN: A tool for Search based software testing

ETF cont.rZSlJ3hb

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

Page 25: AUSTIN: A tool for Search based software testing

ETF cont.rZSlJ3hb

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

Page 26: AUSTIN: A tool for Search based software testing

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: 1 - 1.001-branch_distance

ETF uses a Genetic Algorithm AUSTIN uses the Alternating Variable

Method

Page 27: AUSTIN: A tool for Search based software testing

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

Page 28: AUSTIN: A tool for Search based software testing

Pointers in ETF

pool of input parameters and auxiliary variables

pCell

globDbl

val_p, val_q,globX

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;

Page 29: AUSTIN: A tool for Search based software testing

Hypothesis

Null Hypotheses Alternate HypothesesAUSTIN 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.

Page 30: AUSTIN: A tool for Search based software testing

Empirical Study 3 case studies (comprising 8 functions)

Embedded Software Modules from Automotive Industry

Case Study

Description LOC - Tested

Total Branches

Nr. Inputs

B Adaptive Headlight Control Software

1,236 598 132

C Door-Lock Control Software

383 315 71

D Electric Windows Control Software

339 248 31

Page 31: AUSTIN: A tool for Search based software testing

Coverage ETF vs AUSTIN

Page 32: AUSTIN: A tool for Search based software testing
Page 33: AUSTIN: A tool for Search based software testing

Efficiency ETF vs AUSTIN

Page 34: AUSTIN: A tool for Search based software testing
Page 35: AUSTIN: A tool for Search based software testing

Coverage Random vs AUSTIN

Page 36: AUSTIN: A tool for Search based software testing

Efficiency Random vs AUSTIN

Page 37: AUSTIN: A tool for Search based software testing

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 asstruct cell{ int mem;};void testme(int* p, struct cell* c) { if( p == &c->mem ) //target}

Page 38: AUSTIN: A tool for Search based software testing

Summary