japan.internet.com
ビジネス2004年11月16日 00:00
文字サイズ文字サイズ小文字サイズ中文字サイズ大

Web システム開発におけるテストの役割

この記事のURLhttp://japan.internet.com/busnews/20041116/8.html
著者:ファンサイド
国内internet.com発の記事
■システム開発における各種テスト

システム開発では、大抵の場合、開発のみで完了するのではなく、 リリース/納品前に各種のテストを行う「テストフェーズ」を設けている。 行われるテストには、最小ユニットごとの動作を確かめる単体テスト、 各ユニットを結合したときにきちんと動作しているかをチェックする結合テスト、 求められている機能が期待通りに動いているかを検証する機能テストなどがある。

プロジェクトによっては、 テストを専門に行うテスターがチームにいることもあるが、 一般に、開発担当者はコードを書くのが好きな一方、 テストの類に関しては嫌いがちだ。 つまり、テストを実施するのは、 新しいコードを書くことよりも知的興奮が喚起されないうえに、 自分の書いたコードに間違いを発見するかもしれないからだ。

そのようなことなんてわざわざやりたくない、というわけで、 そんな時間があるなら、 一行でも新しいコードを書いて前に進みたい、 と感じるのが開発者の人情のようである。

また、システム開発に詳しくない人間にとっては、 なぜテストが必要なのかということが骨身にしみては理解されていない。 開発者個々人のスキルが高いのだからテストなど不要だろう、 テスト時間を短縮してその分早期リリースを、 というような案が開発担当ではない人間から出されることがある。

が、しかし、開発担当者にとってどんなにつまらない作業だろうと、 営業担当者にとってどんなに削れそうな工程に見えようと、 システム開発にとってテストは必須なのである。

■なぜテストが必須なのか

これらのテストを実施する目的は、 簡単に言えば、複雑なシステムの「品質管理」である。

システムとは個々の要素が有機的に組み合わさって全体となっている。 システム全体をひとりが一気呵成につくりあげるのは難しい(規模によるが)。 したがって、多くの場合は、システムを個々の要素に分解して、 複数の人間が分担しつつ構築していくことになるのだが、 人間が行うことなので、その過程でいろいろな問題が入り込む可能性がある。 個々の要素に問題がなくても、組み合わさった時点で問題が発覚することもある。 開発時につぶせる問題もあるが、そうでない問題も存在する。

それらの問題を洗い出すのがテストだ。

テストを実施するにはコストがかかる。 が、テストにかけるコストと、 テストを実施しなかった場合に起こりうる不利益発生(パッケージ商品の開発などでは、最悪商品回収騒ぎになることもある)を天秤にかけた際、 テスト実施によるコストをかけた方が見合うという判断がされるのが通常だ。

そのため、システム開発時にはテストが実施されている。 実際にここまで読まれた方の中で、 システム開発に携わっておられる方は「何をいまさら当たり前のことを力説しているのだろう?」と不思議に思われたに違いない。

力説しているのは、テストが当たり前ではない世界が存在するからである。

■Web システム開発におけるテスト

Webシステム開発において、テストがされなかったり、 必要ないと認識されていることがある。 そもそもテストはやるものなのだ、という知識がないケースを除き、 その代表的な理由として以下が挙げられる。

1.Web システムは繰り返し更新して進化していくべきスクラッチ&ビルドのシステムなので、問題点はその過程のどこかで修正すればよいと考えている
2.ユーザーは Web 上の無料で使えるサービスなら、 その機能が少々だめでも許してくれると考えている
3.ユーザーテストが機能テストを兼ねると考えている

それぞれへの反論は以下である。

[1への反論]
スクラッチ&ビルドはあくまでサイトがより良いサイトに進化するためのもので、 テストを実施しなかったり、 テストにより発覚するバグ修正を後回しにする言い訳にすべきものではない。

スクラッチ&ビルドが可能であるということは、 競合も今以上に良いシステムを作リ続けることが可能だということを意味する。 毎回の開発過程でテストを実施し、 バグの洗い出しと修正に最善を尽くしてから後、 次のバージョンでは「修正」ではなく、 「クォリティアップ」をめざしたい。

[2への反論]
Web 上のサービスは無料だからありがたいというだけで、 かつては許されていたが、 現在では、無料が前提の上に、 たとえ無料であっても提供するサービスのクォリティが厳しく問われる時代になっている。

ユーザーからクレームは直接来ないかもしれないが、 だめなサービスからユーザーはただ黙って去ってしまう。 ジャンルを問わず、 先行して成功しているサービスのハイクォリティを、 ユーザーはすでに知っているということを忘れずに。

[3への反論]
ユーザーテストは、機能するシステムについて、 使いやすさを調べていくために行われる。 機能テストのようにシステムが処理する内容が正しいかどうかについて検証するためのものではない。 あくまで、実際のユーザーが、 そのシステムの使い方が学習しやすいと感じるか、 誤った動作をせずに使えるか、主観的に快適か、 などという点を見るものである。

したがって、ユーザーテストは、テスターが行う機能テストの代理にはならない。

逆も真であり、機能テストもユーザーテストを兼ねることはできない。 ふたつは別のものである。

■まとめ

Web システム開発においてもテストフェーズは必須である。 テスト実施により回避されるリスクについて考慮すべきだ。 また、別の役割を持つテストを他のテストの代わりにはできない。 機能テストは機能テストとして、 ユーザーテストはユーザーテストとして実施すべきである。

記事提供:ファンサイド
japan.internet.comのウエブサイトの内容は全て、国際法、日本国内法の定める著作権法並びに商標法の規定によって保護されており、その知的財産権、著作権、商標の所有者はインターネットコム株式会社、インターネットコム株式会社の関連会社または第三者にあたる権利者となっています。
本サイトの全てのコンテンツ、テキスト、グラフィック、写真、表、グラフ、音声、動画などに関して、その一部または全部を、japan.internet.comの許諾なしに、変更、複製、再出版、アップロード、掲示、転送、配布、さらには、社内LAN、メーリングリストなどにおいて共有することはできません。
ただし、コンテンツの著作権又は所有権情報を変更あるいは削除せず、利用者自身の個人的かつ非商業的な利用目的に限ってのみ、本サイトのコンテンツをプリント、ダウンロードすることは認められています。

Copyright 2012 internet.com K.K. (Japan) All Rights Reserved.