Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Concolic Testing用途紹介(回帰テストの場合)

2,851 views

Published on

SQiP2014, SIG

Published in: Technology
  • Be the first to comment

Concolic Testing用途紹介(回帰テストの場合)

  1. 1. Concolic Tes+ngの用途紹介 【回帰テストの場合】 ソフトウェア品質シンポジウム2014 SIG12 “Let’s Concolic Tes+ng!” 2014/9/11 @東洋大学 Concolic Tes+ng研究会  井芹 洋輝 1
  2. 2. この資料について • SIGの構成 1. Concolic Tes+ngの概要説明 2. 活用事例の説明 3. Concolic Tes+ngの体験 4. ディスカッション • ここではオープンソースツールCRESTを使用す る場合での、Concolic Tes+ngの用途の事例を 紹介します 2 この資料の対象
  3. 3. 対象とする事例 • Concolic Tes+ngの歴史は古く、様々な活用方 法が提案されています。 • 今回は最もとっかかりやすいと考えられる、 回帰テストを用途とした事例を紹介します – (1)変更前のコードをテストオラクルに活用 – (2)既存コードから仕様やテストケースを抽出 3
  4. 4. 用途(1)変更前のコードを テストオラクルに活用 • 用途 – MC/DC 100%網羅の回帰テストを自動生成する • 手順の例 – 1:変更前のコードに対し、入力値のパターンを concolic testで抽出 – 2:変更後のコードに対し、入力値のパターンを concolic testで抽出 – 3:前述の1,2で抽出した入力値のパターンで、変 更前と変更後の実行結果を比較。変化していな いことを確認する 4
  5. 5. 用途(2) 変更前のコードから テストケースを抽出 • 用途 – 分岐構造を観点とした仕様やテスト条件の分析 を支援する • 手順 – 1:既存のコードやDSLに対してConcolic Testを実 行。入力値と実行結果のセットを取得 – 2:入力値と実行結果を元に、以下を行う • 該当する仕様のリバースを行う • テストの入力と期待値に展開する 5
  6. 6. 用途(2)のCRESTでの例 • 0. 前準備:変更前コードにCRESTおよび解析 用コードを挿入 解析対象変数を指定のAPIで指定する 6 生成された値の記録手段を追加(今回はわかりやすい暫定手段を実施)
  7. 7. 用途(2)のCRESTでの例 • 0. 前準備:変更前コードにCRESTおよび解析 用コードを挿入 出力値の記録手段を追加(今回はわかりやすい暫定手段を実施) 7
  8. 8. 用途(2)のCRESTでの例 • 1. CRESTで解析・実行。コードの入出力につい て値を取得する 8
  9. 9. 用途(2)のCRESTでの例 • 2. 仕様をリバースしながら、CRESTで得られた 入力をテストの入力に、出力をテストの期待 値に展開する 9
  10. 10. CRESTでの課題 • テスト設計〜テスト実施の完全自動化は可能 だが、独力のサポートが必要 – 世の中の話として、十分に自動化したツールは高 級なテストツールに限定される – CRESTの場合、型や構文解析の仕組みが要求さ れる 10
  11. 11. CRESTでの課題 • ツールの未対応部分のサポートが必要 – 分岐のみの構造ベースの解析しか行わない ループカバレッジや、文字列の同値分割など扱え ない – 解析対象の特定に手間がいる • ファイルをまたぐコードは、CILのマージ作業が必要 • ファイル内の対象外コンポーネントはTest Double化が 必要 – 割り込みなど、並行処理に対応できない • 設計の工夫による並行処理の影響範囲の局所化と いった、間接的な対策が必要となる 11

×