test-case generation

24
Test-Case Generation E 情情情情情情 情情情情情情情情情情情 情情情情情情情情情情 WG ICSE’13 情情情 情情 情情情情情情 E1 “Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution” Pranav Garg, Franjo Ivancic, Gogul Balakrishnan, Naoto Maeda, and Aarti Gupta E2 “A Learning-Based Method for Combining Testing Techniques” Domenico Cotroneo, Roberto Pietrantuono, and Stefano Russo E3 “Human Performance Regression Testing” Amanda Swearngin, Myra B. Cohen, Bonnie E. John, and Rachel K. E. BellamyGuided E4 “Guided Test Generation for Web Applications” Suresh Thummalapenta, K. Vasanta Lakshmi, Saurabh Sinha, Nishant Sinha, and Satish Chandra

Upload: magar

Post on 22-Feb-2016

85 views

Category:

Documents


0 download

DESCRIPTION

Test-Case Generation. E. E1 “Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution” Pranav Garg , Franjo Ivancic , Gogul Balakrishnan , Naoto Maeda, and Aarti Gupta E2 “A Learning-Based Method for Combining Testing Techniques” - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Test-Case Generation

Test-CaseGenerationE

情報処理学会 ソフトウェア工学研究会国際的研究活動活性化 WGICSE’13 勉強会

担当:某製作所有志

E1 “Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution”Pranav Garg, Franjo Ivancic, Gogul Balakrishnan, Naoto Maeda, and Aarti Gupta

E2 “A Learning-Based Method for Combining Testing Techniques”Domenico Cotroneo, Roberto Pietrantuono, and Stefano Russo

E3 “Human Performance Regression Testing”Amanda Swearngin, Myra B. Cohen, Bonnie E. John, and Rachel K. E. BellamyGuided

E4 “Guided Test Generation for Web Applications”Suresh Thummalapenta, K. Vasanta Lakshmi, Saurabh Sinha, Nishant Sinha, and Satish Chandra

Page 2: Test-Case Generation

“Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution”Pranav Garg, Franjo Ivancic, Gogul Balakrishnan, Naoto Maeda and Aarti Gupta

紹介:某製作所有志 ○野尻,高井

E1

Page 3: Test-Case Generation

本論文の目的と貢献

目的 業界ではソフトウェア品質指標として支配的な「カバレッジ」 自動生成されたテストケースの「カバレッジ」向上が本研究の目的

貢献1. Directed-Random テスト生成と Concolic 実行を組み合わせた柔軟なテスト生成フレームワークにより,得られるケースのカバレッジを改善2. (Concolic で ) 目的の実行分岐へ至るパス式が実行 ( 満足 ) できない場合,軽量 Unsatisifiable Core( 充足不可能コア ) 分析を適用する手法を提案3. C/C++ 向けの実装を作成 : CILpp

E1: Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution

Non Linierソルバの適用

Page 4: Test-Case Generation

提案手法のイメージ

方向付けランダム (Directed-Random) テスト生成はサチる 以下、方向付けランダム (Directed-Random を ) 略して「ランダム」と呼びます

Coverage plateau

カバレッジ

生成テストケース数

提案手法の目指すところ

E1: Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution

※ :あくまで紹介者個人のイメージであり,実際の内容とは異なる可能性があります

Page 5: Test-Case Generation

ランダム生成と Concolic(Concrete & Symbolic) 実行を組合せ

2. Concolic 実行適用フェーズ

1. ランダム生成適用フェーズ

提案手法のイメージ

カバレッジ

生成テストケース数

E1: Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution

※ :あくまで紹介者個人のイメージであり,実際の内容とは異なる可能性があります

Page 6: Test-Case Generation

ランダム生成と Concolic(Concrete & Symbolic) 実行を組合せ

2. Concolic 実行適用フェーズ

1. ランダム生成適用フェーズ

提案手法のイメージ

カバレッジ

生成テストケース数

(1) ランダムテスト生成

(2) Concolic 実行

テスト実行結果

SMT ICPUnsatisfiableCore

ノーマル ランタイムエラー

補足できなかった

例外

充足できなかった Interval Constraint

Propagation( 区間制約伝搬 )

線形演算 非線形演算

E1: Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution

※ :あくまで紹介者個人のイメージであり,実際の内容とは異なる可能性があります

Page 7: Test-Case Generation

評価

自動生成フレームワーク「 CILpp 」を構築し有用性を評価RQ1: Concolic 実行はランダムテスト生成のカバレッジ改善に有効か

A 1: 特に分岐網羅のカバレッジ改善に有効 ( 約 45% -> 70% 超 )

RQ2: 非線形ソルバの利用はカバレッジ改善に効果的かA2: 選択的に使用すれば,確かにカバレッジ改善に効果的     ( 本論文の実験では LIA( 線形 )+CORAL( 非線形 ) の結果が良かった )

RQ3: 提案手法により未知のバグが検出できるかA3: バグを顕在化させるテストの生成に成功した

RQ4: RANDOOP※ で検出できなかったバグ ( メモリリーク ) を検出できるかA4: 検出できたが,必ずしもバグでない例も検出してしまった

E1: Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution

※RANDOOP: ランダムテスト生成器の実装

Page 8: Test-Case Generation

所感

分岐網羅性の高いテストが全自動で生成・実行できる 多くの OSS でバグ検出した実績がある

具体的にどのタイミングでランダム生成→ Concolic 実行に切り替えればよいのかを詳しく知りたい Concolic 実行に切り替えるタイミングの前後でカバレッジ曲線にど

の程度影響あるか

時間切れまで生成を続けるというアルゴリズムになっている.今回、どの時間の生成でどの程度の精度が出たのかについての記載がなく,時間に対してどのような効果が出るのか気になる

E1: Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution

Page 9: Test-Case Generation

A Learning-Based Method for Combining Testing Techniques

Domenico Cotroneo*, Roberto Pietrantuonom*, Stefano Russo*†*Universita’ di Napoli Federico II†Lab CINI-ITEM Carlo Savy

Proc. ICSE’13, pp. 142-151, May 2013.

情報処理学会 ソフトウェア工学研究会 国際的研究活動活性化 WGICSE'13勉強会

2013/07/09 紹介者:大林浩気(某製作所有志)

Page 10: Test-Case Generation

背景と目的

複数のテスト技法(=テストケース作成基準)をうまく組み合わせることでテストの性能(不具合検出効率)が向上

効果的なテスト技法の組み合わせはテスト対象によって異なる

テスト対象に応じて効果的なテスト技法の組み合わせを選択する目的

背景

テスト技法 Cテスト技法 Cテスト技法 Dテスト技法 B

テスト技法 Cテスト技法 A

テストケース数

不具

合検

出数

組み合わせ3

組み合わせ2

組み合わせ1?組み合わせ選択

Page 11: Test-Case Generation

提案手法 ( 1 )1. 機械学習に基づきテスト性能予測モデルを作成2. テスト性能予測モデルから効果的なテスト技法組み合わせを

得る(テスト性能が最大となるようにテスト技法を選択)

提案手法の特徴 2段階の機械学習

過去のテストのデータを使う Offline learningテスト実施中に得られるデータを使う Online learning

テスト技術の性能は様々な要因に依存過去にはない振る舞いをすることもありうる ⇒過去のデータからのみでは予測しきれない

Page 12: Test-Case Generation

提案手法 ( 2 ) フェーズ1 (事前 )

過去のテスト実施時のデータを元に Offline learning によってテスト性能を予測するモデルを作成

フェーズ2(テスト実施中)初期モデルはフェーズ1で得られたモデルを使用 テスト実施中に得られるデータを元に Online learning によって

テスト性能予測モデルを繰り返し更新

テスト性能予測モデルOffline learning

過去のテストデータ

テスト1 テスト対象の特徴量 テストの特徴量 テストの性能

テスト性能予測モデル

Online learning テストの性能など

更新

テスト実施中に得られるデータ

Page 13: Test-Case Generation

評価 ( 1 )1. 4つの C言語のプログラム(規模:数 KLOC~数十

KLOC )を用意2. 3つから Offline learning によりテスト性能予測モデルを

作成3. 残り1つをテスト対象とし、

テスト技法選択の戦略を変えてテストを実施4. 不具合検出の効率を比較選択対象となるテスト技法の集合• random testing• statement coverage-based testing• robustness testing

ケーススタディ

テスト技法選択の戦略• テストセッション中ずっと 1種のテスト技法のみ• ALL-RAN : 一つのテストケースごとにテスト技法をランダムに切り替え• FULL : 各テスト技法をすべて試す

Page 14: Test-Case Generation

評価 ( 2 )

提案手法はテスト技法を単独で使用するより効果的だった

結果

提案手法はテスト技法をランダムに切り替えるより効果的だった

技法すべてを使う場合とほぼ同等の効果が出た(ただし FULL は各技法単独× 3なのでテストケース数が3倍)

Offline のみ、 Online のみより、On-Off を組み合わせた手法のほうが効果的だった

グラフは論文より引用( Fig.4, Fig.5, Fig. 7 )

Page 15: Test-Case Generation

Human Performance Regression Testing

Amanda Swearngin, Myra B. Cohen, Bonnie E. John, Rachel K. E. Bellamy

(University of Nebraska-Lincoln, USA; IBM, USA)

担当:明神 智之(某製作所有志)

Amanda Swearngin, Myra B. Cohen, Bonnie E. John, and Rachel K. E. Bellamy, Human Performance Regression Testing, in ICSE2013, pp. 152-161., 2013

情報処理学会 ソフトウェア工学研究会 国際的研究活動活性化 WG ICSE’13 勉強会15

E3: Human Performance Regression Testing

Page 16: Test-Case Generation

背景とアプローチ• 対象

o ユーザインタフェイスのユーザビリティに関する退行テスト

• 背景課題o ユーザビリティに関する退行テストは時間と労力がかかる

• 伝統的な実験→結果測定の手法ではデータの収集、解析が困難• ヒューマンパフォーマンスモデルよる UI の評価はモデルの構築がネック

• アプローチo ヒューマンパフォーマンスモデルの生成支援ツールを開発o UI タスク個別のテストケースを生成し、モデル上で予測実行時間を評価 (※テストケース=開始状態から終了状態までの経路)

Amanda Swearngin, Myra B. Cohen, Bonnie E. John, and Rachel K. E. Bellamy, Human Performance Regression Testing, in ICSE2013, pp. 152-161., 2013

情報処理学会 ソフトウェア工学研究会 国際的研究活動活性化 WG ICSE’13 勉強会16

E3: Human Performance Regression Testing

Page 17: Test-Case Generation

提案手法の概要1. 評価したいタスクを選択

o 例:テキストを選択して太字にするo 提供する UI : V1= メニューのみ , V2=V1+ キーボードショートカット , V3=V2+ ツールバー2. タスク個別のテストケースを生成o 対象アプリのインタフェイスを元にして、タスク実行の際に通過するイベントのサブセットを抽出o イベントの順序や排他関係の制約をルールとして与えるo テストケース生成器 (GUITAR) でテストケース生成3. モデルの生成と予測o CogTool-Helper で UI デザインとテストケースを再構築o CogTool で与えられたバージョンの UI でタスクの実行時間を推定

図は本文中の Fig.1 から引用Amanda Swearngin, Myra B. Cohen, Bonnie E. John, and Rachel K. E. Bellamy, Human Performance Regression Testing, in ICSE2013, pp. 152-161., 2013

情報処理学会 ソフトウェア工学研究会 国際的研究活動活性化 WG ICSE’13 勉強会17

E3: Human Performance Regression Testing

Page 18: Test-Case Generation

評価• UI設計者に有用な情報を提供

• 推定に用いるテストケースを半分に削減しても十分な効果

→ ツールの実行時間を 削減可能

UI機能の追加しても (この場合は ) 退行は発生してない

表は本文中の TABLE II から引用

表は本文中の TABLE III から引用Amanda Swearngin, Myra B. Cohen, Bonnie E. John, and Rachel K. E. Bellamy, Human Performance Regression Testing, in ICSE2013, pp. 152-161., 2013

情報処理学会 ソフトウェア工学研究会 国際的研究活動活性化 WG ICSE’13 勉強会18

E3: Human Performance Regression Testing

Page 19: Test-Case Generation

Guided Test Generation for Web Applications

Suresh Thummalapenta, K. Vasanta Lakshmi,† Saurabh Sinha, Nishant Sinha, and Satish Chandra‡IBM Research, India

†Indian Institute of Science, India‡IBM T.J. Watson Research Center, USA

論文紹介者 村上 正敏(某製作所有志)  

#  E. Test Case Generation

情報処理学会 ソフトウェア工学研究会 国際的研究活動活性化WG ICSE‘13勉強会 2013年 7月 9日

S. Thummalapenta, K. Vasanta Lakshmi, S. Sinha, N. Sinha, and S. Chandra, Guided Test Generation for Web Applications, in ICSE2013, pp. 194-203.,2013

Page 20: Test-Case Generation

S. Thummalapenta, K. Vasanta Lakshmi, S. Sinha, N. Sinha, and S. Chandra, Guided Test Generation for Web Applications, in ICSE2013, pp. 194-203.,2013情報処理学会 ソフトウェア工学研究会 国際的研究活動活性化WG ICSE‘13勉強会 2013年 7月 9日

論文概要• 目的

– エンタープライズ Web アプリケーションのテストケースを自動生成したい– 最小限のテストケース数でビジネスルールのカバレッジを上げたい

• 主要な貢献– 5つのオープンソースの Web アプリケーションと、 60 のビジネスルールを用いてテストケースを生成

• 提案手法は、少ないテストケース数で、 92%のビジネスルールをカバーした• 既存技術は、ビジネスルールカバー率が 52% で、テストケース数も多かった

• 採録された理由(予想)– 本技術はビジネスルールの網羅確認の観点で、テストケース数を削減し、かつ生成時間も抑えている点

• Web アプリケーションのテストケース生成といえば、画面遷移や GUI操作の網羅確認などが普通20

なぜビジネスルールを網羅すれば十分かという理由は不明

Page 21: Test-Case Generation

S. Thummalapenta, K. Vasanta Lakshmi, S. Sinha, N. Sinha, and S. Chandra, Guided Test Generation for Web Applications, in ICSE2013, pp. 194-203.,2013情報処理学会 ソフトウェア工学研究会 国際的研究活動活性化WG ICSE‘13勉強会 2013年 7月 9日

例題: BookStore アプリのテストケース例• GUI操作を網羅しているとテストケース数が膨大になるため抽象化

Web アプリケーションのテストケース例一連の GUI操作を記述したテストケース

Web アプリケーションの STD(1テストケース= STD 上の 1 パス)

1テストケースのパス

抽象化

GUI操作を抽象化した STD

図、表は本論分より引用21

Page 22: Test-Case Generation

S. Thummalapenta, K. Vasanta Lakshmi, S. Sinha, N. Sinha, and S. Chandra, Guided Test Generation for Web Applications, in ICSE2013, pp. 194-203.,2013情報処理学会 ソフトウェア工学研究会 国際的研究活動活性化WG ICSE‘13勉強会 2013年 7月 9日

例題:ビジネスルールの例• ビジネスルールカバーに必要な STD パスのみをテストケースとして抽出

Web アプリケーションの振舞いを規定するビジネスルール

図、表は本論分より引用

状態分割初期STD初期 STDでは粒度が粗いこともあるため、必要に応じて状態分割しながらビジネスルールのカバレッジを上げる

22

Page 23: Test-Case Generation

S. Thummalapenta, K. Vasanta Lakshmi, S. Sinha, N. Sinha, and S. Chandra, Guided Test Generation for Web Applications, in ICSE2013, pp. 194-203.,2013情報処理学会 ソフトウェア工学研究会 国際的研究活動活性化WG ICSE‘13勉強会 2013年 7月 9日

評価実験• 5つの OSS Web アプリケーション、 60 のビジネスルールを用いて実験

– WATEG :提案手法を実装したツール、 KPATH+ :既存手法( STD の単純なパス網羅)を実装したツール

既存手法に比べて、少ないテストケース数で、より多くのビジネスルールをカバーできた。ビジネスルールのカバレッジ割合 ( 提案手法 92%,既存手法 52%)

生成したテストケース数と生成にかかった時間など (Pt: テストケース数、 Ti: 生成時間)

ルールカバレッジ

図、表は本論分より引用23

Page 24: Test-Case Generation

S. Thummalapenta, K. Vasanta Lakshmi, S. Sinha, N. Sinha, and S. Chandra, Guided Test Generation for Web Applications, in ICSE2013, pp. 194-203.,2013情報処理学会 ソフトウェア工学研究会 国際的研究活動活性化WG ICSE‘13勉強会 2013年 7月 9日

関連研究、キーワード

• 一覧項目 詳細モデルベーステスト ・ F. Ricca and P. Tonella, “Analysis and testing of web applications,” in ICSE, 2001, pp. 25–34.

・ A. A. Andrews, J. Offutt, and R. T. Alexander, “Testing web applications by modeling with FSMs,” Software and Systems Modeling, vol. 4, no. 3, pp. 326–345, Jul. 2005.・ G. Di Lucca, A. Fasolino, F. Faralli, and U. De Carlini, “Testing web applications,” in ICSM, 2002, pp. 310–319.・ D. C. Kung, C.-H. Liu, and P. Hsia, “An object-oriented web test model   for testing web applications,” in   COMPSAC, 2000, pp. 537–542.

AJAXアプリケーションテスト

・ A. Marchetto, P. Tonella, and F. Ricca, “State-based testing of Ajax web applications,” in ICST, 2008, pp. 121–130.・ A. Mesbah and A. van Deursen, “Invariant-based automatic testing of   AJAX user interfaces,” in ICSE, 2009, pp.   210–220.・ D. Amalfitano, A. R. Fasolino, and P. Tramontana, “Rich internet   application testing using execution trace data,”   in ICST Workshops, 2010,pp. 274–283.

ユーザセッションベーステスト

・ S. Elbaum, G. Rothermel, S. Karre, and M. Fisher II, “Leveraging usersession   data to support web application   testing,” IEEE Trans. on Softw.   Eng., vol. 31, no. 3, pp. 187–202, Mar. 2005.・ S. Sprenkle, E. Gibson, S. Sampath, and L. Pollock, “Automated replay   and failure detection for web applications,”   in ASE, 2005, pp. 253–262.・ S. Sampath, V. Mihaylov, A. Souter, and L. Pollock, “A scalable   approach to user-session based testing of web   applications through   concept analysis,” in ASE, 2004, pp. 132–141.

その他キーワード ・ Dynamic Symbolic Execution ・ Search-Based Test Generation ・ Rule Management Systems

・ Unguided Crawling ・ Decision-table-based Test Generation

24