メタモルフィックテスティングを解釈してみる
こちらを参考にさせていただきました。
簡単に言うと、テストオラクルがないからある法則を使ってテストオラクルを作り出す技法、ですね。ある法則とは、入力の変化がどう期待値に影響を与えるか、のことで、一つ期待値がわかれば周辺の期待値が生成できることになるという話です。
テストの十分性の話にも言及されていて、記事では「包括的にテストできるわけではありません」と書かれています。何をカバレッジ基準にするかですが、入力値のカバレッジが基準になっていれば、その入力をカバーできる期待値がMetamorphic relationを使って生成できれば包括的にテストできることになります。そのためには十分なMetamorphic relationが必要なことになりますね。期待値側でも同じですかね。期待値をカバーするように入力値を変えてあげて最終的に期待値が網羅できればOKです。
具体的にどんな時に使えそうか(参照記事にも書いてありますが)を考えてみました。使えるケースの法則としては、入力から出力への変換がブラックボックスで、かつ、前述の入力の変化の期待値への影響がわかること、ですかね。
・車の位置情報と燃料残量と乗客の総重量によって、速度をどう設定するかを決める処理
→新宿区、20リットル、60㎏:50㎞/hがわかっているので、品川区、20リットル、60kgでも50㎞/h
なるほどなるほど。たぶん、価値が出てくるのはテストオラクルがわからないときもそうですが、同値分割が容易にできず、テストデータを現実的な範囲で増やす必要があるケースなのではないかな、と思いました。
もっと調べます。。