Core Concepts
ループを展開することで、より多くのバグを見つけることができる。
Abstract
スタンフォード大学のBertrand Meyerによる「ループ展開(テストカバレッジ用)」に関する内容は以下の通りです。
1. 一般的なアイデア
ループを条件分岐として扱い、パス数を増やすことでより多くのパスを実行可能。
ループを理解するためにはdenotational semanticsやabstract interpretationが重要。
2. トレースセマンティクスと記法
プログラムPの意味論は、入力ごとのトレースセットTraces(P)によって与えられる。
状態sと式eに関する定義が重要。
3. 制御構造の定義
ループや条件分岐など、制御構造はトレースセットとして簡単に表現可能。
ループは再帰的条件分岐としても定義可能。
4. ループ展開の理論的枠組み
テスト戦略でループを展開する理論的基盤が提供されている。
デフォルトの展開レベルは1であり、より多く展開すればテスト範囲が広がる。
5. 参考文献
Denotational SemanticsやAbstract Interpretationなど、関連文献への言及あり。
Stats
最新作業では、「ループ展開」によって有意な数のバグが見つかった。
Traces(P) = Traces(A) ∪ Traces(B) のプログラムPに関する重要な指標。
Quotes
"By “unrolling” loops the approach can find significantly more bugs."
"Instructions and programs will be defined by their trace sets."