私が「ちゃんとしたテスト」について書く前に、なぜちゃんとしたテストを考えるようになったかを書きます
はじめに
突然ですが、「ちゃんとしたテスト」って何でしょうか。
これに対する答えを持っている方はそれほど多くないんじゃないかなと思います。
しばらく前になりますが、仕事で「ちゃんとテストした?」と聞かれたことがあります。
その時、私は「これはこうで、あれはああで-」と長々と説明をしましたが、
話しているうちに自信が無くなってきてしまい、なんだか言い訳をしている気分になっていました。
今から1年半くらい前の話です。
思うようにバグを見つけられず悶々とする日々
私はいわゆるシステムエンジニアです。
プロジェクトリーダーをする機会も少なくないのですが、進捗を管理する身からすると納期直前に顕在化するバグほど嫌なものはありません。
「なんでこのタイミングでこのバグが?」、「ちゃんとテストしてたのかな?」と、疑心暗鬼に取りつかれてしまいます。
「もっとちゃんとテストしたい」
「でもテストの仕方が分からない」
「テストの仕方を聞いても体系的に教えてくれる人がいない」私は、こんな悩みで悶々とする日々を送っていました。
総当たりテストとの出会い
ある日、先輩からテストケースレビューをして頂く機会がありました。
そこで先輩から「この組み合わせはやった?あの組合せは?」と、組合せの指摘を受けました。
指摘を受けた組合せはやっていなかったので当然やることになりますが、なぜその組合せが大切なのか分かりませんでした。
しかし、これをやることでレビューは合格になる為、ケース表のひな形とケースの作成に躍起になっていました。
時間はかかりましたが、チームのメンバーにケース表の書き方を説明して、私が因子、水準の抜け漏れをチェックする-という構図で、協力してもらっていました。
これが「総当たりテスト」との出会いです。
テストの自動化
ただ、次第に総当たりテストも辛くなってきました。
テストそのものも時間が掛かるのですが、テストレビューにも猛烈に時間が掛かるからです。
チームのメンバーもテストが嫌になりかけていました。
一方で、こなせやれば効果があることも知っていました。
そこで、この大量のテストケースを自動でテストできないかな?と考えたわけです。
当時の私は欠陥に心身共にやられていた為、「一つでも特技を身に付けて自分に自信をつけよう」と考えるようになりました。
そして、テストを自動実行するフレームワークの作成に取り組み始めました。
いざ始めると色々と勉強することがあります。
プログラムの資格はOCJ-PやOCJ-WCとかを持っているのですが、ペーパープログラマーだったので調べることが多く苦労しました。
seleniumjpの方に色々な場で助言を頂いたりと、たくさん助けて頂きました。
ですが、大分時間を掛けてようやく出来上がったと思った時、ふとこんなことを思いました。
「あれ?僕は何を自動化すればいいんだろう」
あ、でも、苦労して出来たプログラムは、結構好評でしたのでよかったです。
テストデータの登録ツールとしてでしたが(笑)
テストの勉強を始めました
せっかく作ったテスト自動化ツールなのでちゃんとテストを実行させたいと考えました。
そこで手にしたのが秋山先生の通称「ドリル本」でした。
「ちゃんとテストした?」とよく聞かれていたころ、本屋でいくつか購入した本のうちの一冊でした。
それまで1、2章を2回くらい読んで挫折した本でした。
当時は開発者経験が浅すぎて、3章以降がぜんぜん頭に入らなかったようです。
これは大変勉強になりました。
すぐに実践に活かすことはできませんでしたが、だんだんとテストのイメージがつかめてきました。
当時は、テストタイプ、テスト技法、テストレベルの区別さえつかなかったので、目から鱗でした。
ドリル本を読み終えてすぐに「事例とツールで学ぶHAYST法」も読みました。
テスト設計をするうえでのコツがたくさん紹介されていたからです。
勉強を始めてから1ヶ月たったころ、seleniumjp だったか、Nait でお知り合いになった方の繋がりで、「栃木テストの会議」(#toteka)に参加させて頂く機会に恵まれました。
チョットデキル人に訊け!
toteka ではこのような企画が予定されており、ドリル本で有名な秋山さんもパネラーとして参加されるということで、チャンスだと思って聞きました。
「ちゃんとしたテストってなんですか?」
今思うと馬鹿にした質問だったなと思いますが、当時の私にとってみれば必死でした。
これに対して真摯に回答をくださった、秋山先生には頭が上がりません。本当に感謝しています。
また、この質問を採用してくださったmiwaさんや、当日回答をくださった和田さん、関さんにも感謝しています。
テスト業界(?)って人にやさしいところだなと改めて思いました。
そして「ちゃんとしたテスト」へつづく
それからも色々と勉強したり、これまでの出会った方から教えて頂いたりで自分のテストを成長させてきました。
何も参照せずにまとめられる私のテストはまだこれだけですが、まとめます。
まだまだ未熟ですが、読んでみてください。