JCUnitに必要なもの。
この三連休は、文献[1][2]を読んだりのんびり散歩していたりしたのだが、PICTの完成度をまずは目指さないとなとの思いを新たにした。
PICTに比較してJCUnitに欠けているものはおおよそ以下の機能だろう。
- 「制約(constraints)」機能
- 因子の階層
- Negative testの生成
- 任意強度でのテスト生成
思うに、重要度もこの順。
因子の階層(パラメタを入れ子にする機能。単体テストの範囲ではあまり気にしなくていいかもしれない)とNegativeテスト(異常系用のテスト生成。でも現行の機能でもめんどくさいながらもできる)は実装もそれほど難しくなさそう。で、あると非常に便利。しかし、なんといってもConstraintを実装しないと実用的なシーンではかなり辛い。と、思う。
無論、当初から、「制約」「禁則」と呼ばれる概念を全く意識していなかったわけでもない。"RuleSetBuilder"を用いて、テストの実行時に入力値・出力値の妥当性を検査するRuleを定義する仕組みが実装済みだ。
しかし、現状では生成されたテストを実行する際に評価されるのであって、生成されるべきテストを定義づける(制約を破ったテストを作らないようにする)ために使うことはできていない。
まずはここをなんとか完成させよう。ここを乗り越えれば、視界が大きく開けるはずだ。
そして、
- テスト件数の最適化
という一番楽しい部分に取り組むのだ。
- 参考文献
- Pairwise Testing in the Real World: Practical Extensions to Test-Case Scenarios, http://msdn.microsoft.com/en-us/library/cc150619.aspx
- Combinatorial test cases with constraints in software systems, http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6221818