Download presentation
Presentation is loading. Please wait.
Published byClifton Higgins Modified over 9 years ago
1
2014-07-29 1 JMUSE: Java 프로그램을 위한 돌연변이 기반 오류 추적 시스템 연광흠, 김문주 Software Testing & Verification Group (SWTV) CS Dept., KAIST
2
0 Motivation: Finding Cause of SW Error is Difficult Developers have spent a large amount of time in debugging. One of the most laborious task of debugging activities is to locate the cause of failures (i.e., fault), which is called fault localization. Research Goal: To develop automated fault location techniques that assist developers effectively locate the cause of program failures (i.e., fault) Test case #1 : assertEquals(3, Example. setMax(3,1)) Test result: pass Inspecting line by line public class Example { public int SetMax(int x, int y) { 1: int max ‐= x; // should be ‘max=x;’ 2: if(max<y){ 3: max = y; 4: return max; 6: } 7: return max; 8: } Test result: fail == Laborious task 2014-07-29 1/5 JMUSE: Java 프로그램을 위한 돌연변이 기반 오류 추적 시스템
3
0 Key Idea of jMUSE Utilize differences between testing result changes of mutating – correct statements – faulty statements...... Test 1 Test 2 Test 3 Test 4 Test 5 Test 6 : Failed test : Passed test What is the mutation? single syntactic code change Ex.: if(a) if(!a) a+b a–b What is the mutation? single syntactic code change Ex.: if(a) if(!a) a+b a–b Test 1 Test 2 Test 3 Test 4 Test 5 Test 6 Test 1 Test 2 Test 3 Test 4 Test 5 Test 6 Conjecture 1 Conjecture 2 2014-07-29 2/5 JMUSE: Java 프로그램을 위한 돌연변이 기반 오류 추적 시스템
4
0 jMUSE Overall Calc. Susp. Test suite T Source code of program P Byte code of Program P Processing PITES T Execution Coverage analysis Mutation m1m1 Exec. mnmn Stmts. Covered by tests Test result 1 Test result n Test result Exec. 1.Testing the program and analyzing the coverage 2.Generating and testing the mutants 3.Processing data and calculating suspiciousness using the MUSE metric Step1 Step2 Step3 Susp. & Rank 2014-07-29 3/5 JMUSE: Java 프로그램을 위한 돌연변이 기반 오류 추적 시스템
5
0 결과가 좋은 경우 public static final Object[] sortAttributes (…) { … result[i + namespaces.length -1] //should be result[i + namespaces.length] = (Attr) nonNamespaces[i]; … } 95: … 137: 141: C14nHelper:137 41 failing test cases out of 94 test cases (35 array index out of bounds exceptions and 6 null pointer exceptions) Faulty statement Test cases 를 the golden mutation 에 대해 수행하면 정상적인 프로그램에서 실행 했던 것과 같은 test case results 를 얻게 된다. 따라서, 모든 failing test cases 가 passing test cases 로 변하기 때문에 높은 suspiciousness 를 얻게 된다. jMUSE result: jMUSE generates a golden mutation ‘ result[i+namespaces.length] ’ The generated mutation 은 the faulty program 이 정상적인 동작을 수행하도록 만든다. 2014-07-29 4/5 JMUSE: Java 프로그램을 위한 돌연변이 기반 오류 추적 시스템
6
0 결과가 좋지 않은 경우 2014-07-29 5/5 Object[] handleAttributes (…) … { … return resultAsArray; //should be return sortedResultAsArray; } 563: … 1079: 1080: Canonicalizer20010315Excl:107 9 2 failing test cases out of 94 test cases (2 assert failed errors) Faulty statement jMUSE result: jMUSE generates a mutation ‘ return null ’ Test cases 를 the generated mutation 에 대해 수행하면 null pointer exception 이 발 생하면서 기존 failing test cases 를 포함한 더 많은 test cases 들이 fail 하게 된다. The generated mutation 은 the faulty program 이 더 많은 error 를 발생하도록 만든다. JMUSE: Java 프로그램을 위한 돌연변이 기반 오류 추적 시스템
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.