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