mining parametric specifications

14
Mining Parametric Specifications Choonghwan Lee, Feng Chen, Grigore Rosu イイイイイイイ () CSE2011 イイイ イイイイTesting the Water Parametric Specifications イ イイイ イイ () イイNTT イイイ イイイイ

Upload: gil

Post on 12-Jan-2016

30 views

Category:

Documents


1 download

DESCRIPTION

ICSE2011 勉強会 セッション: Testing the Water Ⅲ. Parametric Specifications の(自動)抽出. Mining Parametric Specifications. Choonghwan Lee, Feng Chen, Grigore Rosu ( イリノイ 大学). 担当: NTT データ 朱峰錦司. 前提知識. “ Parametric Specifications ” とは? 形式的 な仕様記述の一種 実行 時のパラメータ(具体的なオブジェクト) に着目. ユーザ:「 next しても大丈夫か?」 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Mining Parametric Specifications

Mining Parametric Specifications

Choonghwan Lee, Feng Chen, Grigore Rosu (イリノイ大学)

ICSE2011 勉強会セッション: Testing the Water Ⅲ

Parametric Specifications の(自動)抽出

担当: NTT データ 朱峰錦司

Page 2: Mining Parametric Specifications

前提知識

2

“Parametric Specifications”とは? 形式的な仕様記述の一種 実行時のパラメータ(具体的なオブジェクト)に着目

Javaの Collectionと Iteratorクラス

ユーザ:「 nextしても大丈夫か?」hasNext:「大丈夫だ、問題な

い。」

「神は言っている…ここでCollectionを操作する定めではない

と…」

図表は Mining Parametric Specifications(ICSE 2011) P.591 より引用

Page 3: Mining Parametric Specifications

目的と貢献

3

問題 Parametric Specificationsは作成が難しい

形式仕様をminingする研究は様々あるが、(満足のいく) Parametricなものを抽出できるものはない 複数のオブジェクトが絡むと解析が複雑になる 本質的な部分のみを切り出す Slicingも難しい

貢献 提案手法を“ JMINER”というツールとして実現

mining対象の UnitTestCaseと実行系列があれば、mining処理の 100%自動化が可能

汎用的で本質的な Parametric Specificationsを抽出する技法の提案

Page 4: Mining Parametric Specifications

2. 異なるオブジェクトセットの系列を分離

提案手法の概要

4 図表は Mining Parametric Specifications(ICSE 2011) P.591-593 より引用

1. メソッドと関連するクラスのセットを抽出

( outputイメージ)<{add, iterator, hasNext, next}, {Collection, Iterator}>

3. 分離された系列から FSAを生成

Page 5: Mining Parametric Specifications

手法の評価

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を用いずカウンタで制御

順不同のはず

Page 6: Mining Parametric Specifications

Estimating Footprints ofModel OperationsCédric Jeanneret, Martin Glinz (スイス・チューリッヒ大学)Benoit Baudry (フランス・ IRISA )

ICSE2011 勉強会セッション: Testing the Water Ⅲ

モデル操作の Footprint を推定する

担当: NTT 研 張暁晶

Page 7: Mining Parametric Specifications

目的と貢献 Footprintとは何か

モデルへの操作において、実際に「使われた」モデル要素の集合 モデル操作にはクエリ、シミュレーション、ビュー生成、モデル変換等がある

Footprintが判ると何が嬉しいか 問題の特定

Footprintが期待する内容やサイズとなっているかを観察することによって、「モデル」と「操作」の改良点を見つけられる モデルのスコープや抽象度、目的は適切か? 他のモデル要素をも読むことで、操作を高度化できないか?

インパクト分析 Footprint算出時に作られるモデルの「ビュー」と、操作の「戻り値」との間の相互の影響を把握できる

Footprintを求めるうえでの問題点 計算コストが高い。操作を実行するのと同じだけの計算コストがかかる

操作を実行することなく Footprintを推定する手法を提案

モデル使われた部分

ある操作の” Footprint”

貢献:モデル使用状況を知るための効率的かつ精確な手段を提供した

7

Page 8: Mining Parametric Specifications

メタモデル

発火可能な遷移の名前を全て取り出す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 より引用

Page 9: Mining Parametric Specifications

評価方法や評価結果評価方法

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 がイマイチなケースもある

Page 10: Mining Parametric Specifications

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 研 丹野治門

Page 11: Mining Parametric Specifications

目的と貢献 目的

テスト生成(テストデータ生成)でより高いカバレッジを実現する

現状の問題点 ツール (例えば, PEX)でテストを自動生成できないパスがある

提案 ツールで生成できなかった原因を特定し,人が補助してテストを生成する

11

…if ( … ){ …}else{ …}…

貢献:ツールと人の協調でカバレッジを上げる初の試みであり,そのために必要な原因( EMCP, OCP)の特定手法を考案

原因特定,

分類する

External-Method-Call Problem(EMCP)Object-Creation-Problem (OCP)※ ツールで生成できない原因の65 % を占める OCPか.じゃあ,この

Factory Methodを使うようツールに指示してみよう

ツールの未到達箇所!

Page 12: Mining Parametric Specifications

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 より引用(一部修正有り)

未到達箇所

Page 13: Mining Parametric Specifications

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 より引用(一部修正有り)

未到達箇所

Page 14: Mining Parametric Specifications

評価 対象

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 より引用(一部修正有り)