JaSST15東海(2)「特別講演:はじめてのコンコリックテスト ~基本原理から知るホワイトボックステストの新技術とその応用~」
11/6(金)に開催されたソフトウェアテストシンポジウム2015東海(JaSST'15 Tokai)に参加しました。私が聴講したセッションは下記です。
セッション1 基調講演:「テストから観た実体のモデリングと実装構造の評価 ~検証指向設計の実現に向けて~」 松尾谷 徹(デバッグ工学研究所)
セッション 4-1 特別講演:「はじめてのコンコリックテスト ~基本原理から知るホワイトボックステストの新技術とその応用~」 植月 啓次(フェリカネットワークス)
セッション 4-2 事例発表:「安全系組込ソフトウェア開発におけるユニットテストの効率化」 岸本 渉(デンソー)
セッション 4-3 ワークショップ 「意地悪漢字を使ってみよう! ~テスト設計ワークショップ~」 鈴木 三紀夫(リコーITソリューションズ)
情報交換会
前回書いた記事
今回は、セッション 4-1 特別講演:「はじめてのコンコリックテスト ~基本原理から知るホワイトボックステストの新技術とその応用~」です。
セッション 4-1 特別講演:「はじめてのコンコリックテスト ~基本原理から知るホワイトボックステストの新技術とその応用~」 植月 啓次(フェリカネットワークス)
(1)シンボリック実行(Symbolic execution)
- プログラム解析後、実行パスの抽出と実行パスを実行するための入力データを特定する技術。
- 入力データ:シンボリック(Symbolic)として扱う。
- 静的テストに分類される。
(2)SAT(充足可能性問題)
- 論理式の変数True/Falseの組み合わせで、結果がTrueかFalseかを判定する問題。
- 論理式をコンピュータで解くアルゴリズムを利用。
- SATソルバで解く。
(3)動的実行
実行結果の値を入力してSATソルバで解かせる。
(4)Concolic = Concrete + Symbolic
"Concolic test"は、具体的な値(Conclete Value)を使った動的実行とシンボリック実行(Symbolic execution)を組み合わせたもの。
流れは以下。
- 入力する変数を指定する。
- 入力する変数に任意の初期値を指定
- 実行の過程で出てきた数値を次のテストに入れて、SATソルバに解かせる
(5)Concolic testを現場適用するときの障壁
- パス数が爆発
10回のループが2つ並んだら→100回。 - ソルバの制約
- 種類によって得意不得意。
- 浮動小数やポインタは苦手。
- オラクル問題
入力は求められるが、期待結果は求められない。
(6)ツール
- PathCrawler
- C
- Web上で試行できる。
- CUTE
- C/Java
- 更新が滞っている。
- CREST C
- KLEE LLVM
- Microsoft Pex
- SPF(Symbolic Path Finder)
- DART(非公開)
(7)実例
Fuzzテストで応用されている。MictosoftのSAGEというツールの事例が有名とのこと。
(8)課題
- パス数の爆発
- 処理能力Upで改善。
- 部分適用で工夫する。
- ソルバの制約
- ソルバの進化で改善。
- SMTソルバ。
- オラクル問題
(9)デモ
- Symbolic Path Finder
- 植月さんのblog(http://blog.utkeiji.com/?cat=2)に詳細情報が掲載されている。
所感
Concolic Testは、1~2年前から時折耳にしていますが、概要は分からない状態でした。近い将来、concolic testを適用する場面が出てくると思いますので、開発者と連携して取り組もうと思います。まずは、情報収集と活用できるところの検討から始めたいと思います。