2018年6月25日

【コンサルタント散歩】

~単体テストで陥りやすいポイント~

システム開発では、作成した機能に対して必ずテスト工程(単体テスト・結合テスト・総合テスト)があります。今回はテスト工程の中でも「単体テスト」について、陥りやすいポイントをご説明いたします。内容は経験年数が浅い人向けになっていますのでご了承ください。

まずは単体テストとは何なのかをご説明いたします。単体テストとは、プログラムを検証する作業の中でも、プログラムを手続きや関数といった個々の機能ごとに分割し、それぞれについて動作検証を行う手法のことです。JAVA言語でいえば、メソッド単位でカバレッジ(網羅率)100%を目指すテストなどが該当します。

単体テスト工程では、単体テスト仕様書を作成してから単体テストを実施します。この単体テストを実施する際に陥りやすいポイントがあります。それは、テストを実施した結果に合わせてテストデータを直してしまうことです。例えば、以下のようなことです。

「単体テスト仕様書の実行条件としはAAAAAというテストデータを使うと記載されており、実施結果はBBBBBと出力される」と書いてあり、実際にAAAAAというテストデータを準備してテストを実施したところ、結果として出力されたのはCCCCCでした。この時、出力結果がBBBBBとなるように実行条件をDDDDDというテストデータに修正した。

このようなことは、テストを行う意味を理解していない人や忙しくて時間に追われている場合に陥りやすくなります。時間がないから取り敢えずテストを終わらせようという心の囁きが聞こえ、ついつい安易にテストデータを修正してしまうような考え方は問題を先延ばしにしているだけで、後々問題になってしまいます。

そうならないためにも、テストの実施結果とテスト仕様書の実施結果が違う場合は、一呼吸置いた後に、何が正しいのかを冷静に確認する必要があります。例えば、詳細設計書を確認して単体テスト仕様書の実行条件が悪いのか、それとも実行結果に誤りがあるのか、実施者で判断ができないのであれば有識者やテスト仕様書作成者に確認するなどです。そもそもテスト仕様書が正しくてプログラムに誤りがある可能性もあります。

テスト対象のプログラムは、インプットに対してプログラミングされた通りにアウトプットを出力していることを念頭に、すべてを疑って見直しを行いましょう。最初は時間がかかるかもしれませんが、こういった癖が将来的に自分のためになります。

2018年6月