単体・結合・システムテストは確認する範囲で見分ける
ITパスポート試験 令和5年度 問42 / システム開発技術 › システム開発技術
過去問にチャレンジ
ソフトウェア開発における,テストに関する記述a~cとテスト工程の適切な組合せはどれか。 a 運用予定時間内に処理が終了することを確認する。 b ソフトウェア間のインタフェースを確認する。 c プログラムの内部パスを網羅的に確認する。

- ア
単体テスト:a,結合テスト:b,システムテスト:c
- イ
単体テスト:a,結合テスト:c,システムテスト:b
- ウ
単体テスト:b,結合テスト:a,システムテスト:c
- エ
単体テスト:c,結合テスト:b,システムテスト:a
会話形式の解説
講師この問題は、テスト工程ごとに何を確認するのかを対応付けるものです。単体テスト・結合テスト・システムテストで、それぞれ確認する範囲がどこまで広がるかに注目してください。
受験者名前が似ていて、私はいつも区別があいまいです。「単体」は部品1つ、「システム」は全体というイメージくらいしか持てていません。
講師そのイメージで大丈夫です。単体テストは1つのプログラムやモジュール(部品)の内部、結合テストは部品どうしのつなぎ目、システムテストはシステム全体が要件を満たすかを見ます。範囲が「部品の内部」「つなぎ目」「全体」の順に広がると覚えておくと整理しやすいです。
受験者そうすると、「プログラムの内部パスを網羅的に確認する」は、1つのプログラムの中身を調べているので単体テストですね。
講師そのとおりです。内部パスは、プログラムの中で処理が通る経路のことです。経路を漏れなくたどるのは、部品を単独で検証する単体テストの役割です。
受験者「ソフトウェア間のインタフェースを確認する」はどうでしょう。インタフェースはつなぎ目のことだと思うので、結合テストでしょうか。
講師はい。インタフェースは、部品どうしがデータをやり取りする接点のことです。単体テストが済んだ部品を組み合わせて、この接点が正しく働くかを確かめるのが結合テストです。
受験者残った「運用予定時間内に処理が終了する」は、処理時間の話なので、1つのプログラムを速く動かせるかを見る単体テストかとも思いました。
講師そこが引っかかりやすい点です。運用予定時間に処理が収まるかどうかは、システム全体を動かしたときの性能の問題です。性能などの要件を満たすかは、システムテストで確認します。
受験者なるほど。ということは、処理時間を単体テストに入れている組合せや、内部パスの網羅をシステムテストや結合テストに入れている組合せは、どれも工程の目的と合わないわけですね。
講師そうです。インタフェースの確認を単体テストやシステムテストに入れている組合せも誤りです。単体テストに内部パスの網羅、結合テストにインタフェースの確認、システムテストに運用予定時間内の処理終了の確認がそろった組合せが正解になります。
受験者「内部」なら単体、「つなぎ目」なら結合、「性能」や「運用時間」なら全体を見るシステムテスト、と言葉から判断すればよいのですね。
講師よく整理できています。補足すると、プログラムの内部構造に着目するテスト手法をホワイトボックステストといい、パス網羅はその代表例です。テストは一般に単体、結合、システムの順に進め、その後に利用者側が確認する受入テストなどが続くこともあります。
まとめ
単体テストは個々のプログラムやモジュールを単独で検証し、内部の処理経路(内部パス)を網羅的に確認する工程です。結合テストは単体テストが済んだ部品を組み合わせ、部品間のインタフェースを検証します。システムテストはシステム全体が要件を満たすかを検証する工程で、運用予定時間内に処理が終わるかといった性能もここで確認します。確認する範囲が「部品の内部」「部品のつなぎ目」「システム全体」の順に広がると覚えると、各工程を見分けやすくなります。
解答・解説
正解はエです
この問題のテーマ
単体テスト・結合テスト・システムテストの3つの工程について、それぞれで何を確認するのかを正しく対応付けられるかを問う問題です。
解き方の考え方
工程ごとに、どの範囲を検証するのかを思い出します。単体テストは1つのプログラムの内部、結合テストは部品どうしのつなぎ目、システムテストはシステム全体が要件を満たすかを見ます。記述cの「プログラムの内部パス」は単体テスト、記述bの「ソフトウェア間のインタフェース」は結合テストに当たります。記述aの「運用予定時間内に処理が終了するか」は全体の性能を確かめる内容なのでシステムテストです。この3つがそろう組合せを選びます。
選択肢ごとの解説
- ×ア 単体テスト:a,結合テスト:b,システムテスト:c運用予定時間内に処理が終わるかを確認するaを単体テストに入れていますが、これはシステム全体の性能を見るシステムテストの内容です。また、内部パスを網羅的に確認するcをシステムテストに入れていますが、cは単体テストで行います。
- ×イ 単体テスト:a,結合テスト:c,システムテスト:b内部パスの網羅を確認するcを結合テストにしていますが、プログラムの内部を調べるのは単体テストです。インタフェースを確認するbをシステムテストに、処理時間を確認するaを単体テストにしている点も工程の目的と合いません。
- ×ウ 単体テスト:b,結合テスト:a,システムテスト:cソフトウェア間のインタフェースを確認するbを単体テストにしていますが、部品のつなぎ目は結合テストで確認します。内部パスの網羅であるcをシステムテストに、処理時間の確認であるaを結合テストにしている点も誤りです。
- ○エ 単体テスト:c,結合テスト:b,システムテスト:a単体テストに内部パスの網羅(c)、結合テストにインタフェースの確認(b)、システムテストに運用予定時間内の処理終了の確認(a)を割り当てています。どれも各工程の目的と一致するので、これが正解です。
補足
プログラムの内部構造に着目してテストする手法をホワイトボックステストといい、パス網羅はその代表例です。テストは一般に単体、結合、システムの順に進め、その後に利用者側が行う受入テストなどが続きます。「性能」や「運用時間」といった言葉が出てきたら、システム全体を対象にするテストだと判断できます。
POINT
- 単体テストは個々のプログラムやモジュールを単独で検証し、内部の処理経路を網羅的に確認します。
- 結合テストは単体テストが済んだ部品を組み合わせて、部品間のインタフェースを検証します。
- システムテストはシステム全体が要件を満たすかを検証し、処理時間などの性能要件もここで確認します。
- 検証する範囲は「部品の内部」「部品のつなぎ目」「システム全体」の順に広がると覚えると整理しやすくなります。
