Transcript E - qwik.jp

E
Test-Case
Generation
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
情報処理学会 ソフトウェア工学研究会
国際的研究活動活性化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
紹介:某製作所有志 ○野尻,高井
E1: Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution
本論文の目的と貢献
目的


業界ではソフトウェア品質指標として支配的な「カバレッジ」

自動生成されたテストケースの「カバレッジ」向上が本研究の目的
貢献

1.
2.
3.
Directed-Randomテスト生成とConcolic実行を組み合わせた柔軟な
テスト生成フレームワークにより,得られるケースのカバレッジを改善
(Concolicで)目的の実行分岐へ至るパス式が実行(満足)できない場合,
軽量Unsatisifiable Core(充足不可能コア)分析を適用する手法を提案
C/C++向けの実装を作成: CILpp
Non Linier
ソルバの適用
E1: Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution
提案手法のイメージ
※:あくまで紹介者個人のイメージであり,実際の内容とは異なる可能性があります

方向付けランダム(Directed-Random)テスト生成はサチる

以下、方向付けランダム(Directed-Randomを)略して「ランダム」と呼びます
カバレッジ
Coverage plateau
提案手法の目指すところ
生成テストケース数
E1: Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution
提案手法のイメージ
※:あくまで紹介者個人のイメージであり,実際の内容とは異なる可能性があります

ランダム生成とConcolic(Concrete & Symbolic)実行を組合せ
2. Concolic実行適用フェーズ
カバレッジ
1.ランダム生成適用
フェーズ
生成テストケース数
E1: Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution
提案手法のイメージ
※:あくまで紹介者個人のイメージであり,実際の内容とは異なる可能性があります

ランダム生成とConcolic(Concrete & Symbolic)実行を組合せ
2. Concolic実行適用フェーズ
(2) Concolic実行
カバレッジ
非線形演算
線形演算
(1)ランダム
1.ランダム生成適用
テスト生成
フェーズ
Unsatisfiable
Core
SMT
充足できな
かった
ICP
Interval Constraint
Propagation
(区間制約伝搬)
テスト実行結果
ノーマル
ランタイムエラー
補足できなかった
例外
生成テストケース数
E1: Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution
評価

自動生成フレームワーク「CILpp」を構築し有用性を評価
RQ1: Concolic実行はランダムテスト生成のカバレッジ改善に有効か
A1: 特に分岐網羅のカバレッジ改善に有効 (約45% -> 70%超)
RQ2: 非線形ソルバの利用はカバレッジ改善に効果的か
A2: 選択的に使用すれば,確かにカバレッジ改善に効果的
(本論文の実験ではLIA(線形)+CORAL(非線形)の結果が良かった)
RQ3: 提案手法により未知のバグが検出できるか
A3: バグを顕在化させるテストの生成に成功した
RQ4: RANDOOP※で検出できなかったバグ(メモリリーク)を検出できるか
A4: 検出できたが,必ずしもバグでない例も検出してしまった
※RANDOOP:ランダムテスト生成器の実装
E1: Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution
所感


分岐網羅性の高いテストが全自動で生成・実行できる
多くのOSSでバグ検出した実績がある
? 具体的にどのタイミングでランダム生成→Concolic実行に切

り替えればよいのかを詳しく知りたい

Concolic実行に切り替えるタイミングの前後でカバレッジ曲線にど
の程度影響あるか
? 時間切れまで生成を続けるというアルゴリズムになっている.

今回、どの時間の生成でどの程度の精度が出たのかにつ
いての記載がなく,時間に対してどのような効果が出るのか
気になる
情報処理学会 ソフトウェア工学研究会 国際的研究活動活性化WG
ICSE'13勉強会
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.
2013/07/09 紹介者:大林浩気(某製作所有志)
背景と目的
背景


複数のテスト技法(=テストケース作成基準)を
うまく組み合わせることでテストの性能(不具合検出効率)が向上
効果的なテスト技法の組み合わせはテスト対象によって異なる
目的

テスト対象に応じて効果的なテスト技法の組み合わせを選択する
組み合わせ
選択
テスト技法A
組み合わせ1
?
組み合わせ2
検不
出具
数合
組み合わせ3
テストケース数
提案手法(1)
1. 機械学習に基づきテスト性能予測モデルを作成
2. テスト性能予測モデルから効果的なテスト技法組み合わせを得る
(テスト性能が最大となるようにテスト技法を選択)
提案手法の特徴
 2段階の機械学習
 過去のテストのデータを使うOffline learning
 テスト実施中に得られるデータを使うOnline learning
テスト技術の性能は様々な要因に依存
過去にはない振る舞いをすることもありうる
⇒過去のデータからのみでは予測しきれない
提案手法(2)

フェーズ1(事前)

過去のテスト実施時のデータを元にOffline learningによって
テスト性能を予測するモデルを作成
過去のテストデータ
テスト1
 テスト対象の特徴量
 テストの特徴量
 テストの性能

テスト性能
予測モデル
Offline learning
フェーズ2(テスト実施中)
初期モデルはフェーズ1で得られたモデルを使用
 テスト実施中に得られるデータを元にOnline learningによって
テスト性能予測モデルを繰り返し更新

テスト実施中に得られるデータ

テストの性能など
テスト性能
予測モデル
Online learning
更新
評価(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: 各テスト技法をすべて試す
評価(2)
結果
グラフは論文より引用(Fig.4, Fig.5, Fig. 7)
 提案手法はテスト技法を単独で
使用するより効果的だった
 Offlineのみ、Onlineのみより、
On-Offを組み合わせた手法
のほうが効果的だった
 提案手法はテスト技法をランダムに
切り替えるより効果的だった
 技法すべてを使う場合とほぼ同等の
効果が出た
(ただしFULLは各技法単独×3なので
テストケース数が3倍)
E3: Human Performance Regression Testing
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
背景とアプローチ
• 対象
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
提案手法の概要
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
評価
• 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
情報処理学会 ソフトウェア工学研究会 国際的研究活動活性化WG ICSE‘13勉強会 2013年7月9日
# E. 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
論文紹介者 村上 正敏(某製作所有志)
S. Thummalapenta, K. Vasanta Lakshmi, S. Sinha, N. Sinha, and S. Chandra, Guided Test Generation for Web Applications, in ICSE2013, pp. 194-203.,2013
論文概要
• 目的
– エンタープライズWebアプリケーションのテストケースを自動生成したい
– 最小限のテストケース数でビジネスルールのカバレッジを上げたい
• 主要な貢献
– 5つのオープンソースのWebアプリケーションと、60のビジネスルールを用
いてテストケースを生成
• 提案手法は、少ないテストケース数で、92%のビジネスルールをカバーした
• 既存技術は、ビジネスルールカバー率が52%で、テストケース数も多かった
• 採録された理由(予想)
– 本技術はビジネスルールの網羅確認の観点で、テストケース数を削減し、
かつ生成時間も抑えている点
• Webアプリケーションのテストケース生成といえば、画面遷移やGUI操作の網羅確認などが普通
なぜビジネスルールを網羅すれば十分かという理由は不明
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日
20
例題:BookStoreアプリのテストケース例
• GUI操作を網羅しているとテストケース数が膨大になるため抽象化
1テストケースのパス
抽
象
化
Webアプリケーションのテストケース例
一連のGUI操作を記述したテストケース
WebアプリケーションのSTD
(1テストケース=STD上の1パス)
GUI操作を抽象化したSTD
図、表は本論分より引用
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日
21
例題:ビジネスルールの例
• ビジネスルールカバーに必要なSTDパスのみをテストケースとして抽出
Webアプリケーションの振舞いを規定するビジネスルール
初期STD
状態分割
初期STDでは粒度が粗いこともあるため、必要に応じて状態分割しながらビジネスルールのカバレッジを上げる
図、表は本論分より引用
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日
22
評価実験
• 5つのOSS Webアプリケーション、60のビジネスルールを用いて実験
–
WATEG:提案手法を実装したツール、KPATH+:既存手法(STDの単純なパス網羅)を実装したツール
生成したテストケース数と生成にかかった時間など(Pt:テストケース数、Ti:生成時間)
ル
ー
ル
カ
バ
レ
ッ
ジ
ビジネスルールのカバレッジ割合 (提案手法92%,既存手法52%)
既存手法に比べて、少ないテストケース数で、より多くのビジネスルールをカバーできた。
図、表は本論分より引用
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日
23
関連研究、キーワード
• 一覧
項目
詳細
モデルベーステスト
・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
・Unguided Crawling
・Decision-table-based Test
Generation
・Rule Management Systems
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日
24