ICSE2011勉強会 セッション: Testing the Water Ⅲ Parametric Specificationsの(自動)抽出 Mining Parametric Specifications Choonghwan Lee, Feng Chen, Grigore Rosu (イリノイ大学) 担当: NTTデータ 朱峰錦司 前提知識 “Parametric Specifications”とは? 形式的な仕様記述の一種 実行時のパラメータ(具体的なオブジェクト)に着目 JavaのCollectionとIteratorクラス ユーザ:「nextしても大丈夫か?」 hasNext:「大丈夫だ、問題ない。」 「神は言っている…ここでCollectionを 操作する定めではないと…」 2 図表はMining Parametric Specifications(ICSE 2011) P.591より引用 目的と貢献 問題 Parametric Specificationsは作成が難しい 形式仕様をminingする研究は様々あるが、(満足のいく)Parametric なものを抽出できるものはない 複数のオブジェクトが絡むと解析が複雑になる 本質的な部分のみを切り出すSlicingも難しい 汎用的で本質的なParametric Specificationsを抽出する技法の提案 貢献 提案手法を“JMINER”というツールとして実現 3 mining対象のUnitTestCaseと実行系列があれば、mining処理の100% 自動化が可能 提案手法の概要 1. メソッドと関連するクラスのセットを抽出 (outputイメージ) <{add, iterator, hasNext, next}, {Collection, Iterator}> 2. 異なるオブジェクトセットの系列を分離 3. 分離された系列からFSAを生成 4 図表はMining Parametric Specifications(ICSE 2011) P.591-593より引用 手法の評価 題材 JMINERを用いてOpenJDK6の4つのパッケージをmining java.util, java.io, java.lang, java.net 実行系列取得にはDaCapo benchmark suiteとApache JAMES Serverを使用 評価観点と結果 Miningに要した時間 わりと現実的な時間で実施可能 系列に含まれるevent数が多ければ多いほど、 時間がかかってしまうが、得られる 出力の品質が高いので大きな問題ではない 出力されたParametric Specificationsの妥当性 例を4つ上げており、全てについて結果はおおむね妥当 手法の特性上、制限もあり 順不同のはず 使用するサンプルに依存してしまう FSAなので「カウンタ」の概念がない hasMoreTokensを用いずカウンタで制御 5 図表はMining Parametric Specifications(ICSE 2011) P.598-599より引用 ICSE2011勉強会 セッション: Testing the Water Ⅲ モデル操作のFootprintを推定する Estimating Footprints of Model Operations Cédric Jeanneret, Martin Glinz (スイス・チューリッヒ大学) Benoit Baudry (フランス・IRISA) 担当: 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) Step1 操作の「定義」を分析して 「メタモデル」のどこを使っている Dynamic Footprint(従来手法) かを抽出 Static Footprint(提案手法) モデル上のfootprint Objects (10個) Settings (26個) p:Petrinet S1:Place S2:Place S3:Place t1:Transition t2:Transition 1:Flow 2:Flow 3:Flow 4:Flow S1.tokens=2 S1.capacity=3 ・ ・ ・ 略 8 メタモデル上のfootprint Step2 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 より引用 評価方法や評価結果 Objects,Settings両方とも精確に推定できるケースが多い 評価方法 75個のモデルと6種の操作を 用いて実験 評価結果 9 提案したStatic Footprintは… 適合率 Dynamic Footprintに対して精確に 推定できている 計算速度 Dynamic Footprint より計算が速い Settingsがイマイチなケースもある 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 より引用 ICSE2011勉強会 セッション: Testing the Water Ⅲ テストを自動生成できなかった原因を特定する Precise Identification of Problems for Structural Test Generation Xusheng Xiao, Tao Xie (ノースカロライナ大学) Nikolai Tillmann, and Jonathan de Halleux (Microsoft Research) 担当: NTT研 丹野治門 目的と貢献 目的 現状の問題点 テスト生成(テストデータ生成)でより高いカバレッジを実現する ツール(例えば,PEX)でテストを自動生成できないパスがある 提案 ツールで生成できなかった原因を特定し,人が補助してテストを生成する ツールの 未到達 箇所! … if ( … ){ … } else{ … } … 原因特定, 分類する External-Method-Call Problem(EMCP) Object-Creation-Problem (OCP) ※ツールで生成できない原因の65%を占める OCPか.じゃあ,この Factory Methodを使うよう ツールに指示してみよう 貢献:ツールと人の協調でカバレッジを上げる初の試みであり, そのために必要な原因(EMCP,OCP)の特定手法を考案 11 External-Method-Call Problem(EMCP)の特定 手順 未到達箇所の直前までの外部ライブラリメソッド呼び出しEMCP候補 EMCP候補の中で未到達箇所の直前の分岐条件とデータ依存関係に あるメソッドEMCP特定 XUnitの例(C#) static string GetDefaultConfigFile(string assemblyFile) { string configFilename = assemblyFile + ".config"; Console.WriteLine(“…searching ” + assemblyFile); bool exists = File.Exists(configFilename); if (exists) return configFilename; 未到達箇所 return null; } 12 EMCP候補 ・Console.WriteLine ・File.Exists 絞り込み EMCP特定 ・File.Exists 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特定 Stackを用いたFixedSizeStackの実装例(C#) 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); } 未到達箇所 ... } 13 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) Object-Creation Problem(OCP) External-Method-Call Problem(EMCP) 候補 特定 正解 FP FN 候補 特定 正解 FP FN 335 107 108 17 18 1313 39 41 0 2 Quick 116 Graph 48 57 3 12 297 4 3 1 0 Total 155 163 20 30 1610 43 44 1 2 XUnit 451 65.63%除外 絞り込み(候補→特定)の効果 97.33%除外 高い正解率 (False Positive, False Negativeが少ない) データ依存関係を利用した絞り込みは効果があり高い正解率となった 14 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 より引用(一部修正有り)
© Copyright 2024 ExpyDoc