mining parametric specifications
DESCRIPTION
ICSE2011 勉強会 セッション: Testing the Water Ⅲ. Parametric Specifications の(自動)抽出. Mining Parametric Specifications. Choonghwan Lee, Feng Chen, Grigore Rosu ( イリノイ 大学). 担当: NTT データ 朱峰錦司. 前提知識. “ Parametric Specifications ” とは? 形式的 な仕様記述の一種 実行 時のパラメータ(具体的なオブジェクト) に着目. ユーザ:「 next しても大丈夫か?」 - PowerPoint PPT PresentationTRANSCRIPT
Mining Parametric Specifications
Choonghwan Lee, Feng Chen, Grigore Rosu (イリノイ大学)
ICSE2011 勉強会セッション: Testing the Water Ⅲ
Parametric Specifications の(自動)抽出
担当: NTT データ 朱峰錦司
前提知識
2
“Parametric Specifications”とは? 形式的な仕様記述の一種 実行時のパラメータ(具体的なオブジェクト)に着目
Javaの Collectionと Iteratorクラス
ユーザ:「 nextしても大丈夫か?」hasNext:「大丈夫だ、問題な
い。」
「神は言っている…ここでCollectionを操作する定めではない
と…」
図表は Mining Parametric Specifications(ICSE 2011) P.591 より引用
目的と貢献
3
問題 Parametric Specificationsは作成が難しい
形式仕様をminingする研究は様々あるが、(満足のいく) Parametricなものを抽出できるものはない 複数のオブジェクトが絡むと解析が複雑になる 本質的な部分のみを切り出す Slicingも難しい
貢献 提案手法を“ JMINER”というツールとして実現
mining対象の UnitTestCaseと実行系列があれば、mining処理の 100%自動化が可能
汎用的で本質的な Parametric Specificationsを抽出する技法の提案
2. 異なるオブジェクトセットの系列を分離
提案手法の概要
4 図表は Mining Parametric Specifications(ICSE 2011) P.591-593 より引用
1. メソッドと関連するクラスのセットを抽出
( outputイメージ)<{add, iterator, hasNext, next}, {Collection, Iterator}>
3. 分離された系列から FSAを生成
手法の評価
5
題材 JMINERを用いてOpenJDK6の4つのパッケージをmining
java.util, java.io, java.lang, java.net 実行系列取得にはDaCapo benchmark suiteとApache JAMES Serverを使用
評価観点と結果 Miningに要した時間
わりと現実的な時間で実施可能 系列に含まれる event数が多ければ多いほど、時間がかかってしまうが、得られる出力の品質が高いので大きな問題ではない
出力されたParametric Specificationsの妥当性 例を4つ上げており、全てについて結果はおおむね妥当 手法の特性上、制限もあり
使用するサンプルに依存してしまう FSAなので「カウンタ」の概念がない
順不同のはず
図表は Mining Parametric Specifications(ICSE 2011) P.598-599 より引用
hasMoreTokensを用いずカウンタで制御
順不同のはず
Estimating Footprints ofModel OperationsCédric Jeanneret, Martin Glinz (スイス・チューリッヒ大学)Benoit Baudry (フランス・ IRISA )
ICSE2011 勉強会セッション: Testing the Water Ⅲ
モデル操作の Footprint を推定する
担当: NTT 研 張暁晶
目的と貢献 Footprintとは何か
モデルへの操作において、実際に「使われた」モデル要素の集合 モデル操作にはクエリ、シミュレーション、ビュー生成、モデル変換等がある
Footprintが判ると何が嬉しいか 問題の特定
Footprintが期待する内容やサイズとなっているかを観察することによって、「モデル」と「操作」の改良点を見つけられる モデルのスコープや抽象度、目的は適切か? 他のモデル要素をも読むことで、操作を高度化できないか?
インパクト分析 Footprint算出時に作られるモデルの「ビュー」と、操作の「戻り値」との間の相互の影響を把握できる
Footprintを求めるうえでの問題点 計算コストが高い。操作を実行するのと同じだけの計算コストがかかる
操作を実行することなく Footprintを推定する手法を提案
モデル使われた部分
ある操作の” Footprint”
貢献:モデル使用状況を知るための効率的かつ精確な手段を提供した
7
メタモデル
発火可能な遷移の名前を全て取り出すPetrinet :: namesOfEnabledTransitions(): Set(String) body: self.transitions −> select(t:Transition | t.enabled) −> collect(t:Transition | t.name)
モデル
モデル上の footprint
操作
Dynamic Footprint (従来手法)Static Footprint (提案手法)
Objects( 10 個)
Settings( 26 個)
p:PetrinetS1:PlaceS2:PlaceS3:Placet1:Transitiont2:Transition1:Flow2:Flow3:Flow4:Flow
S1.tokens=2S1.capacity=3・・・略
手法の説明
8
メタモデル上の footprint
Step2 Step1で得られたメタモデル要素のインスタンスであるような、モデル要素だけを集める
Step1 操作の「定義」を分析して「メタモデル」のどこを使っているかを抽出
Cedric Jeanneret, Martin Glinz, and Benoit Baudry. Estimating footprints of model operations. In International Conference on Software Engineering (ICSE 11), 2011. Figure 2, 3, Table 1 より引用
評価方法や評価結果評価方法
75個のモデルと 6種の操作を用いて実験
評価結果 提案した Static Footprintは…
適合率Dynamic Footprintに対して精確に推定できている
計算速度Dynamic Footprintより計算が速い
9 Cedric Jeanneret, Martin Glinz, and Benoit Baudry. Estimating footprints of model operations. In International Conference on Software Engineering (ICSE 11), 2011. Figure 9, Table 4 より引用
Objects,Settings 両方とも精確に推定できるケースが多い
Settings がイマイチなケースもある
Precise Identification of Problems for Structural Test Generation
Xusheng Xiao, Tao Xie (ノースカロライナ大学)Nikolai Tillmann, and Jonathan de Halleux ( Microsoft Research )
ICSE2011 勉強会セッション: Testing the Water Ⅲ
テストを自動生成できなかった原因を特定する
担当: NTT 研 丹野治門
目的と貢献 目的
テスト生成(テストデータ生成)でより高いカバレッジを実現する
現状の問題点 ツール (例えば, PEX)でテストを自動生成できないパスがある
提案 ツールで生成できなかった原因を特定し,人が補助してテストを生成する
11
…if ( … ){ …}else{ …}…
貢献:ツールと人の協調でカバレッジを上げる初の試みであり,そのために必要な原因( EMCP, OCP)の特定手法を考案
原因特定,
分類する
External-Method-Call Problem(EMCP)Object-Creation-Problem (OCP)※ ツールで生成できない原因の65 % を占める OCPか.じゃあ,この
Factory Methodを使うようツールに指示してみよう
ツールの未到達箇所!
EMCP候補・ Console.WriteLine・ File.Exists
External-Method-Call Problem(EMCP)の特定
12
static string GetDefaultConfigFile(string assemblyFile) { string configFilename = assemblyFile + ".config"; Console.WriteLine(“…searching ” + assemblyFile); bool exists = File.Exists(configFilename); if (exists) return configFilename; return null;}
手順 未到達箇所の直前までの外部ライブラリメソッド呼び出し EMCP候補
EMCP候補の中で未到達箇所の直前の分岐条件とデータ依存関係にあるメソッド EMCP特定
EMCP特定・ File.Exists
XUnit の例( C# )
絞り込み
Xusheng Xiao, Tao Xie, Nikolai Tillmann, and Jonathan de Halleux “ Precise Identification of Problems for Structural Test Generation” In International Conference on Software Engineering (ICSE 11), 2011. Figure 1 より引用(一部修正有り)
未到達箇所
Object-Creation Problem(OCP)の特定 手順
メソッドの引数(及びそのフィールド) OCP候補 OCP候補の中で未到達箇所の直前の分岐条件とデータ依存関係にあるメソッド引数(もしくはそのフィールド) OCP特定
13
public class FixedSizeStack { private Stack stack; public FixedSizeStack(Stack stack) { this.stack = stack; } public void Push(object item) { if(stack.Count() == 10) { throw new Exception("full"); } stack.Push(item); } ...}
Stack を用いた FixedSizeStack の実装例( C# )OCP 候補・ FixedSizeStack ( 引数 this) ・ FixedSizeStack.stack ・ Stack.items (直接代入不可) ・ items._size (直接代入不可)・ object ( 引数 item)
OCP 特定・FixedSizeStack.stack
※ 直接代入不可の場合はメンバとしてもつクラスをOCP として選ぶ
絞り込み
Xusheng Xiao, Tao Xie, Nikolai Tillmann, and Jonathan de Halleux “Precise Identification of Problems for Structural Test Generation” In International Conference on Software Engineering (ICSE 11), 2011. Figure 2 より引用(一部修正有り)
未到達箇所
評価 対象
XUnit( 8.3KLOC), Quick Graph( 11.4KLOC)
14
Object-Creation Problem(OCP) External-Method-Call Problem(EMCP)
候補 特定 正解 FP FN 候補 特定 正解 FP FN
XUnit
335 107 108 17 18 1313 39 41 0 2
QuickGraph
116 48 57 3 12 297 4 3 1 0
Total 451 155 163 20 30 1610
43 44 1 265.63% 除外 97.33% 除外絞り込み(候補→特定)の効果
高い正解率(False Positive ,False Negative が少ない )
データ依存関係を利用した絞り込みは効果があり高い正解率となったXusheng Xiao, Tao Xie, Nikolai Tillmann, and Jonathan de Halleux “Precise Identification of Problems for Structural Test Generation” In International Conference on Software Engineering (ICSE 11), 2011. Table2, Table3 より引用(一部修正有り)