SE基本情報に出るIT用語

単体テストとは?一つのプログラム(モジュール)に対する動作確認

単体テスト(単体試験)とは、「一つのプログラム(モジュール)に対する動作確認」のことです。

UT(Unit Test)と呼ばれたり、PT(Part Test)と呼ばれたりするけど、開発プロジェクトの文化次第。

基本情報技術者試験の文中には、「モジュール」なんて難しい言葉で出てくるけど、簡単に言えば「一つ一つの部品(プログラム)がちゃんと動くよね?」という確認をします。

一つ一つの部品を最終的には合体させて、「ホテル予約システム」なり「在庫管理システム」なり「会計システム」なり、誰かが使える「システム(製品)」になるのだけれども。

部品を合体させる前に、それぞれの部品をしっかりとテストするのが単体テストです。

スポンサーリンク

単体テストとは、一つのプログラム(モジュール)に対する動作確認

単体テストとは、一つのプログラム(モジュール)に対する動作確認です。「基本設計書」(外部設計書)や、「詳細設計書」(内部設計書、モジュール設計書)通りに動くか?を見てあげる作業。

その前に、モジュールとは何かについて、簡単に説明します。

モジュールとは?

モジュール結合度とは?プログラムの部品同士のくっつき度合い」と説明がかぶりますが、モジュールとは、「プログラムの部品」のこと

例えば、ドラクエ。

実際のドラクエの作りはわからないけど、冒険の書を作ってオープニングムービーが流れるまでに、

  1. 冒険の書を作るプログラム
  2. オープニングムービーを流すプログラム

の2つのプログラム(モジュール)があると仮定します。

モジュールとは

「ドラクエ」というゲームは、冒険の書だけ作っても意味がないし、オープニングムービーを流して終わりでもありません。魔王を倒すまでがドラクエです。

冒険の書を作る→オープニングムービーを流す→・・・

みたいに、それぞれの部品(モジュール)が、いくつも合体して「ドラクエ」と言う製品が完成します。

1つのモジュールをしっかりと見てやるのが単体テスト

「冒険の書をつくるプログラム」は、一つの部品(モジュール)として単体でも機能するので、「『冒険の書をつくるプログラム』をしっかりとテストしてやりましょう」っていう話が単体テスト

単体試験とは

たとえば、こんなことをテストします。

  • 文字が正しく入力できること(かな・カナ・記号)
  • 「もどる」ボタンを押したら、名前が一文字消されること
  • ×ボタンを押したら、冒険の書を作る画面が閉じられること
  • 「けってい」ボタンを押したら、冒険の書が作られること

「冒険の書をつくるプログラム」をピンポイントでテスト。プログラム単体が正しく動くかを、「詳細設計書」(内部設計書、モジュール設計書)にもとづいて、試験してやります。

テストして不具合(バグ)が見つかれば、設計書が間違ってるかもしれないし、プログラムがおかしいかもしれないので、原因を特定して1つ1つ修正します。

スポンサーリンク

単体テストでやるべきことや、見るべき観点

単体テストでやるべきことや、見るべき観点を簡単に書いておきます。

ホワイトボックステストとブラックボックステスト

ホワイトボックステストブラックボックステストは、単体試験で必ずやるべきこと。

  • 【ホワイトボックステスト】プログラムの分岐や内部構造など、細かいつくりを1つずつ検証する
  • 【ブラックボックステスト】入力に対する出力(結果)のみに注目する

ホワイトボックステストでは、「○○の場合は、▲▲」みたいな細かい分岐をすべてテストしてあら探し。

まともにやると量がかなり多いので、テスト実行用のプログラムを別に用意することもあります(Javaであれば、JUnit)。

ブラックボックステストであれば、実際に画面を操作して、結果がどうなったかだけを注目するイメージです。

単体試験の範囲は、別のモジュールとの結合ができるところまでを担保

単体試験の範囲は、別のモジュールとの結合(インターフェース結合、別のプログラムの呼び出し)ができるところまでを担保します。

※「別のプログラム」が未完成であれば、ドライバ(呼び出し元の仮プログラム)やスタブ(呼び出し先の仮プログラム)を作ったりするけど、話がややこしくなるので、ここでは考えないでおきます。

「冒険の書をつくるプログラム」の例でいけば、「オープニングムービーを流すプログラム」を呼び出すことができるところまで、担保します。「呼び出せればOK」です。

「冒険の書」⇒「オープニングムービー」の順でドラクエが進んでいって、おかしなことにならないかは、結合テストという次のテスト工程で確認します。

まとめ

単体テスト(単体試験)ときたら、「一つのプログラム(モジュール)に対する動作確認」のことです。

UT(Unit Test)と呼ばれたり、PT(Part Test)と呼ばれたり、仕事する場所によっていろいろです。

「モジュールがどうたら」みたいに書くと難しそうだけど、やりたいことは「一つ一つの部品(プログラム)がちゃんと動くよね?」という確認。

1つ(単体)のモジュールが設計した通りに動けばよし。さらに別の(後続の)プログラムが呼び出せさえすれば、単体テストではカンペキ。「呼び出した結果がどうなるか?」は、実際にモジュールを合体させて結合テストで検証します。

プログラム単体のテストをして不具合(バグ)が見つかれば、設計書のおかしなところを直したり、プログラムを修正する作業を、1つ1つ地道にやるものだと思ってくださいまし(-_-;)。

スポンサーリンク

▼この記事がいいと思ったら、下の画像をクリックしてくれたら励みになります!

にほんブログ村 IT技術ブログ システムエンジニアへ

コメント

タイトルとURLをコピーしました