F07b

FSE/ASE2011勉強会
F07:Testing
紹介者
早稲田大学 鷲崎研究室
青井 翔平
1
Strong Higher Order
Mutation-Based Test
Data Generation
Mark Harman
Yue Jia
Willian B . Lengdon
2
前提知識
• Mutation-Based Testとは?
• オリジナルのプログラムをバグがでるようにミュータント
を生成して、テストの十分性を評価する手法
Original
バグ
Mutant
• 既存のテストデータ生成手法
• Dynamic Symbolic Execution
• 動的な記号的実行
• Search Based Software Testing
テスト実行
• メタヒューリスティクスな手法を用いたテスト技法
• 問題
• 複数の改変を加えたミューテーションを扱った研究がない
• Propagationを意識していない
3
目的と貢献
• 目的
• 複数の改変を加えたミューテーションに対応したテスト
データの生成
• Propagationを意識したテストの生成
• 貢献
• 単純なミュータント、複雑なミュータント両方を利用した
テストデータ自動生成で幅広い大小様々なプログラムで実
行
• 既存の手法との比較実験を行った結果、ミュータントへの
テストデータ網羅率で上回った。
4
本論文での定義
• Infection
• あるテストを実行したときに、元のプログラムとミュータント
プログラムで状態がかわること
• Propagation
• 変わった状態が出力として顕在化すること
• Weakly Kill(既存手法)
網羅率
• Infectionのみを満たすテスト
出力
• Strongly Kill
• Propagationまでを満たすテスト
• First Order Mutant(既存手法)
既存
影響
提案
• ひとつのシンプルなシンタックス変更などで作成したミュータ
ント
• Higher Order Mutant
• 複数のFirst Order Mutantのバグを結合したもの
Mutant1
バグ2
Mutant2
バグ1
Higher Mutant
5
Higher Order Mutant
• 定義:以上のfirst Order Mutant で構成されている
• Case:1全ての構成しているfirst Order Mutantを横断するパス
がある場合
• 各first Order Mutantのパスを結合する
Mutant1
State1
Mutant2
• Case2: Case1が存在しない
• ただのfirst Order Mutantとして扱う
State1
Mutant2
State2
6
Mutant1
提案手法
オリジナル
プログラム
ミュータント
プログラム
Weakly Kill
DSE
既存手法と同様
の網羅率測定
プログラムを書き換えないまま様々な動的な記号的
実行によるテストの入力の生成
SBST
影響のある
Propagationを一つ
にまとめる
差異の判定
Strongly
Kill
Out hill climbing
algorythmを用いた
テストの入力の生成
7
評価実験と結果
・実システムを構築して、17のプログラムで評価実験を行う。
全ての結果の平均のみの表示
Program
R-DSE %(網羅率)
RI-DSE %(網羅率+影響)
Order
Average
Order
1st
2nd
1st
2nd
1st
2nd
55
56
62
65
15
21
Program
SHOM %(網羅率+影響+出力)
Order(Std.)
Average
Imp . On R
Imp . On RI (# wins)
1st
2nd
1st
2nd
69(2.1)
71(5.3)
15(7.6)
16(8.8)
8
RQ1:提案手法のfirst order Mutant
への性能
RQ2:提案手法のHigher order Mutant
への性能