1 / 24

Test-Case Generation

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”

magar
Download Presentation

Test-Case Generation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Test-Case Generation E E1 “Feedback-Directed Unit Test Generation for C/C++ using ConcolicExecution” PranavGarg, FranjoIvancic, GogulBalakrishnan, Naoto Maeda, and AartiGupta E2 “A Learning-Based Method for Combining Testing Techniques” DomenicoCotroneo, 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. VasantaLakshmi, SaurabhSinha, NishantSinha, and SatishChandra 情報処理学会 ソフトウェア工学研究会 国際的研究活動活性化WG ICSE’13 勉強会 担当:某製作所有志

  2. E1 “Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution”PranavGarg, FranjoIvancic, GogulBalakrishnan, Naoto Maeda and Aarti Gupta 紹介:某製作所有志○野尻,高井

  3. 本論文の目的と貢献 Non Linier ソルバの適用 • 目的 • 業界ではソフトウェア品質指標として支配的な「カバレッジ」 • 自動生成されたテストケースの「カバレッジ」向上が本研究の目的 • 貢献 • Directed-Randomテスト生成とConcolic実行を組み合わせた柔軟なテスト生成フレームワークにより,得られるケースのカバレッジを改善 • (Concolicで)目的の実行分岐へ至るパス式が実行(満足)できない場合,軽量Unsatisifiable Core(充足不可能コア)分析を適用する手法を提案 • C/C++向けの実装を作成: CILpp E1: Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution

  4. E1: Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution 提案手法のイメージ ※:あくまで紹介者個人のイメージであり,実際の内容とは異なる可能性があります カバレッジ Coverage plateau 提案手法の目指すところ • 方向付けランダム(Directed-Random)テスト生成はサチる • 以下、方向付けランダム(Directed-Randomを)略して「ランダム」と呼びます 生成テストケース数

  5. E1: Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution 提案手法のイメージ ※:あくまで紹介者個人のイメージであり,実際の内容とは異なる可能性があります 2. Concolic実行適用フェーズ カバレッジ 1.ランダム生成適用フェーズ ランダム生成とConcolic(Concrete & Symbolic)実行を組合せ 生成テストケース数

  6. E1: Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution 提案手法のイメージ ※:あくまで紹介者個人のイメージであり,実際の内容とは異なる可能性があります (1)ランダム テスト生成 (2) Concolic実行 2. Concolic実行適用フェーズ カバレッジ 非線形演算 線形演算 1.ランダム生成適用フェーズ Unsatisfiable Core ICP SMT 充足できなかった Interval Constraint Propagation (区間制約伝搬) テスト実行結果 ノーマル ランタイムエラー 補足できなかった 例外 ランダム生成とConcolic(Concrete & Symbolic)実行を組合せ 生成テストケース数

  7. 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:ランダムテスト生成器の実装

  8. E1: Feedback-Directed Unit Test Generation for C/C++ using Concolic Execution 所感 ? ? • 分岐網羅性の高いテストが全自動で生成・実行できる • 多くのOSSでバグ検出した実績がある • 具体的にどのタイミングでランダム生成→Concolic実行に切り替えればよいのかを詳しく知りたい • Concolic実行に切り替えるタイミングの前後でカバレッジ曲線にどの程度影響あるか • 時間切れまで生成を続けるというアルゴリズムになっている.今回、どの時間の生成でどの程度の精度が出たのかについての記載がなく,時間に対してどのような効果が出るのか気になる

  9. 情報処理学会 ソフトウェア工学研究会 国際的研究活動活性化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 紹介者:大林浩気(某製作所有志)

  10. 組み合わせ1 組み合わせ2 組み合わせ3 不具合 検出数 テスト技法A テスト技法C テスト技法C テスト技法D テストケース数 テスト技法C テスト技法B 背景と目的 背景 • 複数のテスト技法(=テストケース作成基準)をうまく組み合わせることでテストの性能(不具合検出効率)が向上 • 効果的なテスト技法の組み合わせはテスト対象によって異なる • テスト対象に応じて効果的なテスト技法の組み合わせを選択する 目的 ? 組み合わせ 選択

  11. 提案手法(1) • 機械学習に基づきテスト性能予測モデルを作成 • テスト性能予測モデルから効果的なテスト技法組み合わせを得る(テスト性能が最大となるようにテスト技法を選択) 提案手法の特徴 • 2段階の機械学習 • 過去のテストのデータを使うOffline learning • テスト実施中に得られるデータを使うOnline learning テスト技術の性能は様々な要因に依存 過去にはない振る舞いをすることもありうる  ⇒過去のデータからのみでは予測しきれない

  12. 過去のテストデータ テスト1 • テスト対象の特徴量 • テストの特徴量 • テストの性能 テスト性能 予測モデル Offline learning テスト実施中に得られるデータ • テストの性能など Online learning テスト性能 予測モデル 更新 提案手法(2) • フェーズ1(事前) • 過去のテスト実施時のデータを元にOffline learningによってテスト性能を予測するモデルを作成 • フェーズ2(テスト実施中) • 初期モデルはフェーズ1で得られたモデルを使用 • テスト実施中に得られるデータを元にOnline learningによってテスト性能予測モデルを繰り返し更新

  13. 評価(1) ケーススタディ • 4つのC言語のプログラム(規模:数KLOC~数十KLOC)を用意 • 3つからOffline learningによりテスト性能予測モデルを作成 • 残り1つをテスト対象とし、テスト技法選択の戦略を変えてテストを実施 • 不具合検出の効率を比較 • 選択対象となるテスト技法の集合 • random testing • statement coverage-based testing • robustness testing • テスト技法選択の戦略 • テストセッション中ずっと1種のテスト技法のみ • ALL-RAN: 一つのテストケースごとにテスト技法をランダムに切り替え • FULL: 各テスト技法をすべて試す

  14. 評価(2) 結果 グラフは論文より引用(Fig.4, Fig.5, Fig. 7) • 提案手法はテスト技法を単独で使用するより効果的だった • Offlineのみ、Onlineのみより、On-Offを組み合わせた手法のほうが効果的だった • 提案手法はテスト技法をランダムに切り替えるより効果的だった • 技法すべてを使う場合とほぼ同等の効果が出た(ただしFULLは各技法単独×3なのでテストケース数が3倍)

  15. 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勉強会

  16. 背景とアプローチ E3: Human Performance Regression Testing • 対象 • ユーザインタフェイスのユーザビリティに関する退行テスト • 背景課題 • ユーザビリティに関する退行テストは時間と労力がかかる • 伝統的な実験→結果測定の手法ではデータの収集、解析が困難 • ヒューマンパフォーマンスモデルよるUIの評価はモデルの構築がネック • アプローチ • ヒューマンパフォーマンスモデルの生成支援ツールを開発 • 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勉強会

  17. 提案手法の概要 E3: Human Performance Regression Testing 図は本文中のFig.1から引用 • 評価したいタスクを選択 • 例:テキストを選択して太字にする • 提供するUI:V1=メニューのみ, V2=V1+キーボードショートカット, V3=V2+ツールバー • タスク個別のテストケースを生成 • 対象アプリのインタフェイスを元にして、タスク実行の際に通過するイベントのサブセットを抽出 • イベントの順序や排他関係の制約をルールとして与える • テストケース生成器(GUITAR)でテストケース生成 • モデルの生成と予測 • CogTool-HelperでUIデザインとテストケースを再構築 • CogToolで与えられたバージョンの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勉強会

  18. 評価 E3: Human Performance Regression Testing UI機能の追加しても(この場合は)退行は発生してない 表は本文中のTABLE IIから引用 • 推定に用いるテストケースを半分に削減しても十分な効果 →ツールの実行時間を  削減可能 表は本文中のTABLE IIIから引用 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勉強会

  19. 情報処理学会 ソフトウェア工学研究会 国際的研究活動活性化WG ICSE‘13勉強会 2013年7月9日 # E. Test Case Generation Guided Test Generation for Web Applications Suresh Thummalapenta, K. Vasanta Lakshmi,† SaurabhSinha, NishantSinha, 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

  20. 論文概要 • 目的 • エンタープライズWebアプリケーションのテストケースを自動生成したい • 最小限のテストケース数でビジネスルールのカバレッジを上げたい • 主要な貢献 • 5つのオープンソースのWebアプリケーションと、60のビジネスルールを用いてテストケースを生成 • 提案手法は、少ないテストケース数で、92%のビジネスルールをカバーした • 既存技術は、ビジネスルールカバー率が52%で、テストケース数も多かった • 採録された理由(予想) • 本技術はビジネスルールの網羅確認の観点で、テストケース数を削減し、かつ生成時間も抑えている点 • Webアプリケーションのテストケース生成といえば、画面遷移やGUI操作の網羅確認などが普通 なぜビジネスルールを網羅すれば十分かという理由は不明

  21. 例題:BookStoreアプリのテストケース例 • GUI操作を網羅しているとテストケース数が膨大になるため抽象化 1テストケースのパス 抽象化 WebアプリケーションのSTD (1テストケース=STD上の1パス) Webアプリケーションのテストケース例 一連のGUI操作を記述したテストケース GUI操作を抽象化したSTD 図、表は本論分より引用

  22. 例題:ビジネスルールの例 • ビジネスルールカバーに必要なSTDパスのみをテストケースとして抽出 Webアプリケーションの振舞いを規定するビジネスルール 状態分割 初期STD 初期STDでは粒度が粗いこともあるため、必要に応じて状態分割しながらビジネスルールのカバレッジを上げる 図、表は本論分より引用

  23. 評価実験 • 5つのOSS Webアプリケーション、60のビジネスルールを用いて実験 • WATEG:提案手法を実装したツール、KPATH+:既存手法(STDの単純なパス網羅)を実装したツール 生成したテストケース数と生成にかかった時間など(Pt:テストケース数、Ti:生成時間) ルールカバレッジ ビジネスルールのカバレッジ割合 (提案手法92%,既存手法52%) 既存手法に比べて、少ないテストケース数で、より多くのビジネスルールをカバーできた。 図、表は本論分より引用

  24. 関連研究、キーワード • 一覧

More Related