slide

advertisement
JMUSE: Java 프로그램을 위한 돌연변이
기반 오류 추적 시스템
연광흠, 김문주
Software Testing & Verification Group
(SWTV)
CS Dept., KAIST
2014-07-29
1
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.
Test case #1
: assertEquals(3, Example. setMax(3,1))
1:
2:
3:
4:
6:
7:
8:
public class Example {
public int SetMax(int x, int y) {
int max ‐= x; // should be ‘max=x;’
if(max<y){
max = y;
return max;
}
return max;
}
Inspecting
line by line
== Laborious task
Test result: pass
Test result: fail
• Research Goal: To develop automated fault location techniques that assist
developers effectively locate the cause of program failures (i.e., fault)
0
2014-07-29
JMUSE: Java 프로그램을 위한 돌연변이 기반 오류 추적 시스템
1/5
Key Idea of jMUSE
• Utilize differences between testing result changes of mutating
– correct statements
Conjecture 2
– faulty statements
Test 1
1: stmt 𝒔 ′
𝟏
…
k: stmt 𝑠k
…
n: stmt 𝑠n
: Failed test
: Passed test
1: stmt 𝑠1
…
f: stmt 𝑠𝑓
…
n: stmt 𝑠n
Test 1
Test 2
Test 3
Test 4
Test 5
Test 6
What is the mutation?
single syntactic code change
Ex.: if(a)  if(!a)
a+b  a–b
0
2014-07-29
..
.
Test 2
Test 3
Test 4
Test 5
Test 6
Conjecture 1
1: stmt 𝑠1
…
k: stmt 𝒔𝒌 ′
…
n: stmt 𝑠n
JMUSE: Java 프로그램을 위한 돌연변이 기반 오류 추적 시스템
Test 1
Test 2
Test 3
Test 4
Test 5
Test 6
2/5
jMUSE Overall
Test
suite T
Source code
of program P
Step1
PITEST
Execution
Coverage
analysis
Test
result1
mn
Exec.
Test
resultn
Step2
Test
result
Processing
Exec.
Mutation
Stmts.
Covered
by tests
Byte code of
Program P
m1
Calc.
Susp.
Step3
Susp.
&
Rank
1. Testing the program and analyzing the coverage
2. Generating and testing the mutants
3. Processing data and calculating suspiciousness using the MUSE metric
0
2014-07-29
JMUSE: Java 프로그램을 위한 돌연변이 기반 오류 추적 시스템
3/5
결과가 좋은 경우

Faulty statement
• 41 failing test cases out of 94 test cases
(35 array index out of bounds exceptions and 6 null pointer exceptions)
 jMUSE result: jMUSE generates a golden mutation ‘result[i+namespaces.length]’
 The generated mutation은the faulty program이 정상적인 동작을 수행하도록 만든다.
• Test cases를 the golden mutation에 대해 수행하면 정상적인 프로그램에서 실
행했던 것과 같은 test case results를 얻게 된다. 따라서, 모든 failing test cases
가 passing test cases로 변하기 때문에 높은 suspiciousness를 얻게 된다.
0
JMUSE: Java 프로그램을 위한 돌연변이 기반 오류 추적 시스템
2014-07-29
4/5
결과가 좋지 않은 경우

Faulty statement

• 2 failing test cases out of 94 test cases (2 assert failed errors)
jMUSE result: jMUSE generates a mutation ‘return null’
 The generated mutation은the faulty program이 더 많은 error를 발생하도록 만든다.
• Test cases를 the generated mutation에 대해 수행하면 null pointer exception이
발생하면서 기존 failing test cases를 포함한 더 많은 test cases들이 fail하게 된다.
0
JMUSE: Java 프로그램을 위한 돌연변이 기반 오류 추적 시스템
2014-07-29
5/5
Download