アマチュアとプロフェッショナル
先週参加したカフェソフトウェアクオリティのお悩み相談コーナーで、「ソフトウェアテストなんて誰でも出来ると思われている」というものがあって笑った。
「○○なんて誰でも出来る」というフレーズは何にでもあてはまってしまう。
例えば
- キャッチボールなんて誰でも出来る
- ギターなんて誰でも弾ける
- 英語なんて誰でもしゃべれる
- サラリーマンなんて誰でも出来る
- プログラムなんて誰でも書ける
などなど。
結局これってアマチュアとプロフェッショナルの違いについての議論だ。
テストエンジニアがその存在価値を認めてもらうには、プロフェッショナルな開発者やマネージャーには提供出来ない、プロフェッショナルなテストエンジニアだけが提供出来る価値、組織にもたらす利益を突き詰めるしかない。
プロフェッショナルなテストエンジニアの役割
僕が最近感じるプロフェッショナルなテストエンジニアの役割を列挙してみる。(ここではテスト設計やテスト計画等の専門用語は使わない。)
バグを見つける
バグを見つける事は、それを見逃しリリースしてしまった時の損失を防ぐ事に直接つながる。損失をもたらすバグをテストで見つける事はソフトウェア開発プロジェクトにおいて最重要の役割の1つだ。
無駄なテストをしない
いくら徹夜で頑張って大量のテストを実施したからってバグをみつけられなければ、それはプロジェクト全体から見ればコストとしか見られない。無駄なテストをしない選択をする事も重要な役割だ。
バグを見つけるタイミングを計画する
「どんな」バグを見つけるかと同じくらい「いつ」バグを見つけるかも重要だ。プロジェクトが終るタイミングで見つけたって遅すぎる。適切なタイミングでバグを見つけるように計画するエンジニアはプロジェクトの進捗の円滑化をしてくれる貴重な存在だ。
バグに関する知識の蓄積
テストは失敗する事をチェックして終わりではない。バグの特定とバグの修正をする必要がある。バグに関する知識や経験を多く持つテストエンジニアは、バグの場所を特定したりバグの修正方法について、品質を向上させる為のアドバイスをする。
開発者とテストエンジニア
「ソフトウェアテストなんて誰でも出来る」なんて開発者に言われるのかしら。もしそうならば僕ならテキトーに言い返すなあ。「バグなんて誰にだって作る事が出来るw」と。
ま、実際にはバグだって「誰にでも作れるバグ」と「プロフェッショナルな開発者にしか作り込めないバグ」がある。昔、あるプログラムの1つの処理のテストとして作って実行した5万件のうち1件だけ失敗した時には、自分もすごいと思ったけれどもそのプログラムの開発者もすごいと思った。どうしたら、そんな複雑なバグが作れるのだwと。 テスト結果を見せた時はその開発者も「いいテストするねー」と笑ってた。
開発者はその最大限の想像力でプログラムを書くし、テストエンジニアは開発者の想像力のギリギリのところを狙ってテストをする。プロフェッショナルな開発者とテストエンジニアの関係ってそういうものだと思う。