シリーズ「開発の初めから順番に書いていってみる」の続きです。
設計手順には、要求分析、外部設計、内部詳細設計・プログラミング、単体テスト、結合テスト、総合テスト、運用テスト及び運用とあります。
前回までで、プログラミングがおわりました
(バックナンバーは、ここ http://www.geocities.jp/xmldtp/index_kaihatsu.htm)。
今、テストについてやっています。前回、
同じプログラムでも、単体・結合・総合でテストする内容が違うのです。
で、その違いから、テスト仕様書項目が変わり・・・ということになってきます。
どうちがうのか・・・
で、終わっていたので、今日は、各種テストで、どのように違うかという話を見ていきます。
■その前に、ホワイトボックステストとブラックボックステスト
単体・結合・総合テストの内容の違いの前に、ホワイトボックステストとブラックボックステストの内容の違いについて書きたいと思います。
ホワイトボックステストというのは、プログラム内部の構造に着目し、テストしていく方法です。
一方、ブラックボックステストというのは、プログラム内部の構造は見ないで(ブラックボックスとして)入出力から判断し、テストするものです。
単体テストでは、プログラムをテストするので、ホワイトボックステストが可能ですし、ブラックボックステストも可能です(が、単体とは、ホワイトボックステストをさし、単体のブラックボックスは、結合テストになってしまうという考えもあります)。
一方、結合、総合テストでは、プログラムのソースが渡されるとは限りません。
そうすると、プログラムの構造に着目したテスト=ホワイトボックステストはできません。ブラックボックステストのみとなります。
■単体テストの内容
単体テストは、上記のように、ホワイトボックステストとブラックボックステストが考えられるとかきました。
ホワイトボックステストの場合、テスト項目の挙げ方、内容は、
・命令に着目して、その命令を通過したかという挙げ方
・分岐に着目し、分岐を通過したかという挙げ方
になります。
一方ブラックボックステストの場合、契約による設計のように、
入力(事前条件に関連)
出力(事後条件に関連)
と、不変条件(かわらない条件)をもとにかんがえる、つまり、
試験しようとするプログラムの引数や、アクセスするDBやファイルの値をかえて、期待する値が得られるか?という確認方法になります。
■結合テストの内容
結合テストでは、一番低レベルでは、単体のブラックボックス同様、モジュールの入出力チェックになりますが、主にここでは、画面の値をかえて、想定する結果になるかどうか、データベースの値をかえて、想定する結果になるかどうかなど、外部仕様のテストとなります。
■総合テストの内容
大きく2とおりあります。
要求仕様の業務内容にかかれている業務が実現できるかというテスト(これは運用テストのほうに含まれてしまうかもしれないけれど)と、
非機能要件のテスト、つまり、性能(トランザクション、負荷量など)などのテストがあります。
非機能要件のテストのほうが、めんどっちいかも・・
という具合で、テストによって、やる内容がちがってくるわけです。
ということで、次回から、それぞれのテストについて、その内容を見ていきたいと思います。
まずは、単体テストから。
