単体テストの目的と課題

シェアする

単体テストとは

単体テスト(ユニットテスト)は、プログラムを構成する比較的小さな単位(ユニット)が個々の機能を正しく果たしているかどうかを検証するテストです。

単位としては、メソッドを単位とすることと言われていますが、実際は、1画面または1ソースを単体テストの単位とすることが多いです。
つまり、単体テストとは、1画面または1ソースを開発者によって設計書のとおり動作することを保証するテストとなります。

単体テストの目的

単体テストの目的は、次フェーズの結合テストをスケジュールどおりに進めることを目的とします。つまり、結合テストでバグが多発しテストが進まないといった状況にならないよう、バグの洗い出しを行うことが目標となります。

単体テストの観点

単体テストは大きく、ホワイトボックステストとブラックボックステストに分類できます。

  • ホワイトボックステスト

プログラムの内部構造に着目したテストです。条件分岐やループなど全てのロジックを通してテストを行います。条件分岐については、全ての分岐条件を網羅する必要があります。

  • ブラックボックステスト

設計書のとおりに動作するかを確認するテストです。通常は製造を行いながら動作確認を行っているのが現状ですので、製造完了時点では本テストでのバグはほぼなくなっていることが予想されます。

上記のことから、単体テストとは、ホワイトボックステストをメインとしたテストになることが分かります。そして、ホワイトボックステストは全ての条件を網羅する必要がありますので、非常に工数がかかることが予想できます。

単体テストの項目

単体テストのテスト項目としては、以下のような項目があります。

  • 画面表示項目に正しい値が設定されているか?
  • 検索条件に対する検索結果は正しいか?
  • 必須チェックは正しく行われているか?
  • 依存性チェックは正しく行われているか?
  • DBへ正しい値が登録されているか?
  • 出力ファイルに正しい値が出力されているか?

これらの項目を条件毎に細分化していくためPCL件数は膨れます。

PCL件数が大きくなると当然ですが工数も増加していきます。

単体テストの課題

単体テストは1回で終わることはないです。

バグが見つかった場合は当然ですがプログラム修正を行います。そこで必ず必要となるのがデグレートチェックです。

簡単に言うと、PCL件数が100件あり、バグが1件(OK:99件、NG:1件)見つかったとします。プログラム修正を行いNGとなったテスト項目はOKとなったが、修正箇所が起因となり、プログラム修正を行う前にOKであった99件はNGとならないか?を確認するのがデグレートチェックです。

さぁ、ここで問題が発生します。
PCL100件のテストにかかった工数が8hだったとします。デグレートチェックも行う必要があるため、PCL100件の再テストが必要となりました。再テストを行うのにかかる工数は8hです。当然ながら、このプログラム以外のタスクもあるため遅延が発生。再テストでバグが新たに見つかると更に進捗が遅延することとなります。

単体テストの課題解決

単体テストで必要な作業項目は以下となります。

  1. PCL作成
  2. テストデータ作成
  3. テスト実施

課題は再テストにかかる工数をいかに削減するかなので、3.テスト実施にかかる工数を削減する手段を検討しなければなりません。

解決策は、テスト自動化です。

具体的には、テスト実施をプログラムで自動化し、テスト結果をレポートで参照できるようにします。

そうすると、人がやる作業はテスト結果を見て、OKかNGかを判断するだけになるため、テスト実施作業工数は、1分程度に削減できることとなります。

新たな課題

テスト実施が自動化できてしまえば、かなりの工数削減が期待できることはわかりました。ですが、テスト実施を行うためのプログラム作成が必須作業となりますので、作業項目は下記の4項目となります。

  1. PCL作成
  2. テストデータ作成
  3. テストプログラム作成
  4. テスト実施

テスト実施工数を抑えるために追加したテストプログラム作成ですが、テストプログラム作成にかかる工数が膨大だと自動化する意味がなくなります。

つまり、次の課題はテストプログラム作成にかかる工数を削減する手段を検討しなければなりません。

それでは、テストプログラムをどのようなツールを使って工数をかけずに作成するのかを次回の記事で記載することにします。

 

単体テストの自動化に使うツールの選定
本記事は、前記事での課題となった単体テストプログラムの作成にかかる工数をいかに削減できるか?についての記事となります。 前提条件 ...

 

以上

スポンサーリンク
PC用広告

フォローする

スポンサーリンク
PC用広告