« 私のPDA遍歴 | トップページ | GPS位置検索サービスを決めるまで »

2006/11/14

テスティング -手動テスト と 自動テスト-

 また、テスティングの話である。ふと思い出したので、忘れないうちに書きとめておくことにした。

 自動テスト、オートテスト、オートメーション・テスト、いろいろ言い方はあるだろうが、要はスクリプトによって一つもしくは複数の動作を検証中のソフトウェアに行わせて、結果を人手をそれほどかけずに得ることを目的としたテストのことである。おそらく現状の市販のソフトウェア規模であれば、自動テスト抜きでは品質を保証することはかなり難しいと思われる。
(とは言うものの、エクストリーム・プログラミング などによって大規模な自動テストが重要でなくなることももしかしたらあるのかもしれないとはちょっとだけ期待している。)

 私が現役のテスターであった頃、ちょっと困った考えをもっている人達が一部に見られた。どういう困った考え方かというと、『自動テストなどいらない。手動テストだけ行えば十分である。』 という考えと、『自動テストさえあれば、手動テストは必要ない。』 という考えである。
前者は、どちらかといえばやや優秀なテスターに見られた。自分が効率的にバグを見つけることができるため、それを基準として、必要な人員を集めれば十分に品質が保障できると思ってしまうらしい。
後者は、マネージャーや経営者に多く見られた。どうやら、テストをすべて自動化すればコストをかなり低く抑えることができるはず、と信じて疑っていないようであった。

 人並みにテスターを経験してきた人間なら、手動テストと自動テストは互いに必要なものであり、それぞれにバランスのよい比率があることがわかってくる。
手動でテストをすれば5分で終わるテストに、スクリプトを1時間も2時間もかけてテストをするのは、見るからに非論理的である。逆に、数百GBもあるデータベースに何日もぶっ続けでランダムアクセスし続けるなどとというテストは自動テストであればこそ現実のものとなりえる。

 私の考える自動テストに向いているテストを以下に示す。
1.以前のバージョンで既に確立した機能で、開発中のバージョンでも変更のない機能のテスト
2.開発中に見つかって修正したバグの再発検知テスト
3.長時間にわたるストレス・テスト (メモリー・リーク・テスト)
4.大量のデータの読み込み、書き出しの繰り返しテスト
5.外部へ公開しているAPIの接続テスト
6.マクロのようなスクリプト機能をもっている場合のスクリプト機能そのものテスト
7.ビルド後の新しく出来上がったテスト用プログラムの健全性チェックテスト

 逆に、私の考える手動テストを優先したほうがよいと思われるテストを以下に示す。
1.開発中のバージョンで新しくつける機能のテスト (特に機能そのものが実装途中の場合)
2.開発中のバージョンで大幅に機能が変わる部分のテスト
3.ユーザー操作を想定した実仕様テスト (結局最後にユーザーがそのソフトウェアを使うのは手動である)

 私の経験では、自動テストを担当させるのに選任のテスターを配置したほうがいい成果を出せた。逆に、テスター全員に自動テストを分担させると、手動テストも自動テストも共に中途半端になる傾向が見られ、手動テストでは見落としが、自動テストは充実しないことが多かった。

 私も何度か自動テストを担当して、その高い有効性にずいぶんとのめりこんだこともある。バグを修正するつもりで別の以前のバグをプログラマーが復活させてしまったのを、自動テストで検知できたことも一度や二度ではなかった。夜に会社からかえるときに自動テストをスタートさせて、次の日に会社に来るとテスト結果が出ていたのもとても気持ちよく、得した気分にさせてくれた。

 しかしながら、ユーザーがそのソフトウェアを操作するのは、あくまでもユーザー自身の手であり、ユーザーがスクリプト・ツールを使い、自分達が開発したソフトウェアを使うとは思えない。だからこそ、テスターは最後は自分の手で実際に動かしてみて出荷可能であることの確認をその肌身で感じることが重要である。

|
|

« 私のPDA遍歴 | トップページ | GPS位置検索サービスを決めるまで »

テスティング」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/61641/12232654

この記事へのトラックバック一覧です: テスティング -手動テスト と 自動テスト-:

« 私のPDA遍歴 | トップページ | GPS位置検索サービスを決めるまで »