テストの妥当性

ソフトウェア開発におけるテストは仕様の表現のひとつという風にも扱われるなど、重要な役割を担う一方で、テスト自体の妥当性の検証や保証は少なくて、こういう不安定な土台の上でいろいろやっていいのか、という気がする。

レビューする時には、まずテストコードを眺めて、大抵が自然文で表現された仕様と照らし合わせながら、矛盾がないかとか足りないテストケースがないか、とか考える。

ソフトウェアテストについてちゃんと勉強していけば、どういうテストケースが必要か *1 とかどういう風に表現すればよいか *2 はわかってくると思う。けど、人間の知識や理解に委ねられている、というのはどうにも不安に思える。

テストに対するテスト、メタテストみたいなのがあって、こういうテストケースが足りていない、とかわかるとよいと思う。

今思ったけど、カバレッジとかがそれにあたるのではないか、と思った。

今のチームでは一日に一回、カバレッジをとっていて、たまに眺める、という風になっている。本当はトピックブランチなどでテストの追加・削除を行ったらその都度カバレッジの変化が見れるとよいのだろうと思う。

*1:正常系、異常系、境界条件など

*2:stub, mock, など