4. 問題:既存手法はカバレッジ低
テストケース自動生成の研究が盛ん[1][2]
→ しかし,複雑なオブジェクト指向の
プログラムに対してカバレッジが不十分
対象 カバレッジ
SvnBridge
56.2%
対象 カバレッジ xUnit
15.5%
Commons Math
61.6% Math.Net
62.8%
Commons Collections
53.0% QuickGraph
53.2%
[1]を用いた実験(著者たちによる) [2]を用いた実験 [3]
4
[1] C.Pacheso et al. Feedback-directed random test generation. ICSE 2007
[2] N. Tillmann and J. de Halleux. Pex-white box test generation for .NET. TAP 2008
[3] X.Xiao et al. Precise identification of problems for structural test generation. ICSE 2011
13. 2. 未到達分岐へ至るパス?値を計算
カバーしたい分岐から逆向きに SMTソルバ[5]で
満たすべき制約条件を収集 (記号的実行[4]) 制約を満たす
private pri(int n) { 値を求める
if (n * 3 < 20) {
// カバーしたい場所 pub(x)
} x> 0
} n == x + 5
n * 3 < 20
public pub(int x) {
if (x > 0) { x=1
解けない
pri(x + 5) 解ける
…… ③制約解決パズル
④オブジェクト変更パズル 13
[4] L. A. Clarke. A system to generate test data and symbolically execute programs. TSE, 1976
[5] B. Dutertre and L. de Moura. System description: Yices 1.0. In Proc. SMT-COMP, 2006.