そもそもテストとはなんでしょう。
テストとは「できあがったシステムが正しく目的通りに動作するかどうかを検査すること」に他なりません。
まずテストに合格しないものが,出荷されると言うことは,どの製品や産物を見てもシステム分野以外には考えられないことです。システム自体も全くテストがなされずに出荷されるというこは無いかもしれません。しかし結果として,某銀行のシステムを例に出すまでもなく,出荷後に問題が多発すると言うことは残念ながらかなりみられることです。これはコンピュータシステムの成果物自体が目に見えないということが大きな原因かもしれません。逆に目に見えないということは,とりもなおさずテストの難しさの主要な原因でもあります。
たとえば,他の工業製品なら,色が塗ってなかったり,一部分がかけていたら,まずそのまま納品しようとする人はいないでしょう。
システムの場合,故意かどうかはともかくとして,色が塗ってなかったり,一部分がかけているものが,一見して目に見えないため結果として平気で納品されてしまうことがあります。 |
その原因ですが,次のようなことが多いようです。
@テスト工程が見積もり段階で不十分
時間が無いためテストが不十分なまま出荷せざるを得ない。また見た目には分からない。もっとひどい場合は,開発スケジュールにテストの工程を入れていない。あるいは開発が遅れても,納期は変わらないので,テストを省くしかない。最後は納期とのかねあいで見切り発車してしまう。
Aテスト仕様が不十分
そもそもどのようになったら合格なのかが制作者側自体も押さえていない(これは要求仕様があいまいだということ)
もっとひどい場合は,仕様を出す側も正解がどうなるのかを押さえていないまま発注する。
加えて,テスト仕様書とか検査仕様書などをまず作らない。
Bテスターがいない
開発者本人がテストを行うので,本人の思いこみや理解している度合いでテストの品質が変わる。(本人は良いと思っているが,実際の利用者は思いも寄らない使い方をする)
第三者がテストをして初めて合格したといえるものです。
Cテスト環境の不備
テストの環境が不備であるため,同じプログラムでもテストによって結果が異なる。(つまりプログラムが悪いのではなく,テストデータが悪い)
などということが一般的です。 |
■そもそもテストにはどのようなものがあるのか |
システムのテストには何種類かのものがあります。
開発段階の機能テスト
@単体テスト
プログラムで実装したすべての機能が,正しく動作するか。
A複合テスト
クライアントとサーバー,ブラウザとJSPなど組み合わせて機能するかどうかのテスト。
Bビジネステスト
「購買」とか「検収」など実際に使用するビジネスの単位で実際のビジネスルールや運用形態でテストする。
Cベータテスト
利用部門が準本番という形で使う。
開発段階のその他テスト
@意地悪テスト
わざと通常の運用では考えられないようなことを行い,システムの強さをテストする。(ちゃんとエラーメッセージを返すかなど)
A負荷テスト
ウエブベース開発では,特に重要です。すべて機能的にできあがってからレスポンスをあげることは非常に難しい。
Bインストールテスト
Cマニュアルテスト
|
運用段階のテストとしては
@レグレッションテスト
A再現テスト
等があり,アメリカでは日本と違い,要求仕様書の整合性などデザインレビューなどと呼ばれているものもテストを行っているところがあります。(品質管理として合格しないものは,開発に入らないなど)
このなかで,単体テストは開発者が行うテストです。これは通常ホワイトボックステストと呼ばれ,プログラムが実装したすべての機能について,正しく動作するかとか,デザイン規約に則っているかなどのテストを行います。このテストは,自動化される場合も多くあります。
単体テスト以降の複合テストからは,通常テスターが行います。大規模プロジェクトの場合は,専任のテストチームが行いますが,小規模な場合は1〜2名程度のテスト専任者と,あいている開発などの人間が兼務で行います。
ライトPMをおこなう場合,単体テストまでは,PGが,ブラックボックステストと,組合わせテスト・パフォーマンステストに関してはテストチームがおこなうのが普通です。XPなどライトなシステム開発では,テストが開発の最初に来ます。つまり,アプリケーションのコーディングを行う際に,まずこの関数はこうなったら合格であるというテスト関数を先にコーディングすると言うことです。この方式をとると,単体テストは,コンパイル毎に毎回テストを行っているようになります。
かなり大規模なクライアントサーバーシステムの場合も,テストは同時並行が基本です。システムの開発規模が大きくなるほど,あるビジネス的に意味のある単位でテストを行う日を先に決め。それに併せて必要なプログラムを開発する事によって,テストと開発が同時並行で出来るようになります。これもいわばプロジェクトマネージャの腕です。 |
■テストの基本テクニック |