創屋ぷれす

メタモルフィックテスティング

メタモルフィックテスティングに関して説明する前に,テスト不可能プログラムというものに関して説明します.

ソフトウェアのテストの際,ある入力値をソフトウェアに入力したときの出力が期待値になっているかどうかを確認します.
2つの値を加算するソフトウェアがあったとすると,1と3を入力値としたとき出力は4になることを期待して確認します(期待値=4).
ただ,ソフトウェアの中身が分からない場合=ブラックボックスな場合,入力と出力の関係性が分からないので期待値を設定することができません.
こういったソフトウェアのことをテスト不可能プログラムといいます.
機械学習やディープラーニングのモデルもその1つです.

で,メタモルフィックテスティングはこのテスト不可能プログラムに対して疑似的にテストオラクルを生成する手法です.
(テストオラクルに関しては前回の記事を見ていただければわかるかと)
ある入力値Aに変化を加えることで出力値Aにも変化が現れること(現れないこと)を期待して,出力値のバリエーションを増やしてテストケースを増やすイメージです.

どういった実例があるかは,以下のサイトを見てもらえれば分かります.
https://qiita.com/tokumoto/items/cd3d17cae3b099badaf6

実例をみると,機械学習・ディープラーニングの分野では汎化性能の確認している印象をうけます.
ノイズを加えることを含めた入力のバリエーションにモデルが対応できているか,を確認することでテストになるということですね.

Comments are closed.