「完璧なテストケースなどといったものは存在しない。完璧な絶望が存在しないようにね。」村上春樹さん風 (『風の歌を聴け』より)
わたしはテストケースに完璧を求めていない派だけど、こうなる前までは”完璧”とか”漏れがない”とか…なんだろう理想のテストケースを追い求めていたように思います。
だから手を動かしてテストする時間より、理想のテストケースを作るために考える時間のほうが多くなる日もあって(テスターなのにテストしてないのでは!)と不安になることもありました。
何をどれくらいの密度や深さで、どのようにテストしたらよいのか、強弱は?テストする順番は?…それらを考えることもテストの一部なんだけど、やはり実際にシステムやソフトウェアを触って動かして、はじめてテストの価値が生まれるというか、生を与えられたように感じてしまう。
とにかく漏れのない完璧なテストケースを作って、きちんとテストしたい!と言う気持ちが強かったのは確かです。
そんなわたしが、なぜ、完璧なテストケースを求めなくなったのか、それで平気でいられるようになったのかを考えてみました。
1. イテレーション開発がそれを許してくれなかった
完璧なテストケースを考えてると、あっという間に開発に置いていかれます。
考えてみればウォーターフォールでの開発だって時間の制約があるんだから同じなんだけど、毎日、毎週締め切りがあるのは大きい。
で、どれくらいのスピードかと言うと、JSTQBのシラバスに載ってるテストプロセス(テスト計画、テスト分析、テスト設計、テスト実装、テスト実行、評価&レポート)を短いときは1日で全部やるイメージです。とにかく今のチームの開発のスピードがめちゃくちゃ早いので、テストのサイクルも必然的に早くなります。
開発手法のせいで、完璧なテストケースを作らせてもらえないわけですからね、さぞかしモヤモヤするんだろうな…と思いきや、そうでもなかった。だいぶ適当な人間なんだなぁとあらためて思いました。*1
2. 不完全さが新しいテストケースをつくる
すでに存在するテストケースをそのまま実行してもバグはほとんど見つかりませんが、そのテストケースに対する疑問やテストの不足を補うようなテストをすることで、バグを見つけることができます。*2
プロダクト(テスト対象)の品質自体も大きく関係しそうですが、わたしたちのチームで見つかるバグのほとんどがこれです。
またチームのメンバーが完璧なテストケースではないことを知っていて、それを容認していることも大きいと思います。開発しながらテストケースも一緒に育つ感じ。子供を育てながら、親も一緒に成長するのと似ています。そこには愛がありますね。
3. 完璧なテストケースは存在しないことを受け入れた
1と2がわたしの中では大きいのですが、最後にこれも。
でも諦めているわけではないんですよね。より良いテストを目指して、不完全なテストケースと共に、これから先もまだまだ新しいテストケースを開発していくし、イテレーション開発に組み込んでみたい中長期のテストケースもある。だから(完璧なテストケースは存在しないんだから)やり過ぎに注意しなさいよ!くらいに思えるようになったんじゃないかな、と。
テストケースについて書いてみたくなったのは、これを読んだからでした。残り2回も楽しみです。