このページでは,基本情報技術者試験をはじめとする情報処理技術者試験で必須となる,ソフトウェア構築・テストについてシンプルにまとめています。ソフトウェア構築では,プログラミング(ソフトウェアユニットの作成)やコーディング規約,単体テスト(ブラックボックステスト,ホワイトボックステスト)を中心に,ソフトウェアコードとテスト結果の評価・レビューまでを整理します。テスト工程では,ソフトウェア結合テスト,ソフトウェア適格性確認テスト,システム結合テスト,システム適格性確認テスト,運用テストについて,代表的なテスト手法とあわせて解説します。内容は多いですが,試験対策として重要なポイントを押さえていますので,順番に理解していきましょう。
このページの内容は,システム開発の全体像を理解した上で読んだ方が理解が深まると思いますので,先に次のページを読むことをお勧めします。

ソフトウェア構築とは(目的と役割)
プログラミング(ソフトウェアユニットの作成)とは
プログラミングでは,ソフトウェア詳細設計の内容に基づいて,各モジュール(ソフトウェアユニット)を作成(コーディング)し,ソース(原始)プログラムを作成します。
コーディング規約とは
プログラミングについては,誰が見ても読めるように,コーディング規約を定めます。
- 命名規則を定める(変数名や関数名などに統一性のある名前を付ける)
- コーディングのスタイルを定める(括弧の付け方やインデントなどの記述を統一する)
- 禁止事項を定める(利用してはいけない機能などを定める)
※ プログラミングの詳細は「(カテゴリー)アルゴリズムとプログラミング」を参照
単体テスト(ソフトウェアユニットのテスト)とは
単体テストでは,テスト手順やテストデータを作成し,作成したモジュールが要求事項を満たしているかを,ソフトウェア詳細設計で定義した内容に従いテストします。
※ 1つのモジュールやプログラム単位で機能の確認を行う
ブラックボックステストとは
ブラックボックステストは,モジュールの仕様に基づき,モジュールの外部から見た機能やインタフェースに着目して行うテストです。
※ モジュールの内部に冗長なコードがあった場合,それを検出することはできない
※ すべてのテスト工程で使用できるテスト手法である
同値分割とは
同値分割では,モジュールへの入力データを,正しい値を持つ有効同値クラスと,正しくない値を持つ無効同値クラスに分割し,各クラスから1つの値を取り出してテストデータとします。
限界値分析とは
限界値分析では,モジュールへの入力データを,正しい値を持つ有効同値クラスと,正しくない値を持つ無効同値クラスに分割し,各クラスの境界値を取り出してテストデータとします。
原因-結果グラフ(因果グラフ)とは
原因-結果グラフでは,入力(原因)と出力(結果)の因果関係をグラフで表し,それを基に決定表(デシジョンテーブル)を作成して,テストケースを洗い出します。
※ モジュールへの入力データが明確にクラス分けできない場合に有効な方法である
決定表(デシジョンテーブル)とは
決定表は,複数の条件と,それによって決定される処理を表にしたものです。
広告
ホワイトボックステストとは
ホワイトボックステストは,モジュールの内部構造に着目して行うテストで,モジュールの論理構造が正しいかをテストします。
※ すべての実行経路を検証するのが望ましいが作業量の面から困難であるため,網羅性と生産性を考慮したうえで,分岐や繰返しなど重要な部分をテストするようにする
命令網羅とは
命令網羅では,すべての命令を少なくとも1回は実行するようにテストケースを作成します。
判定条件網羅(分岐網羅)とは
判定条件網羅では,分岐の判定条件で真となる場合と偽となる場合を,それぞれ少なくとも1回は実行するようにテストケースを作成します。
条件網羅とは
条件網羅では,分岐の判定が複数の条件から成る場合に,各条件が真となる場合と偽となる場合を組み合わせたテストケースを作成します。
※ 各条件の真と偽を,1回はテストするようにする
判定条件/条件網羅とは
判定条件/条件網羅では,判定条件網羅と条件網羅を組み合わせてテストケースを作成します。
※ 分岐の判定が複数の条件から成る場合の方法
複数条件網羅とは
複数条件網羅では,分岐の判定条件において,取り得るすべての組合せを網羅するようにテストケースを作成します。
※ 分岐の判定が複数の条件から成る場合の方法
ソフトウェアコードとテスト結果の評価及びレビューとは(目的と方法)
ソフトウェアコードとテスト結果の評価及びレビューでは,ソフトウェアコードとテスト結果を評価し,レビューを行います。
※ レビューの詳細は,「レビューの基礎まとめ」を参照
広告
ソフトウェア結合テストとは
ソフトウェア結合テストでは,プログラムの動作確認を,ソフトウェア方式設計で定義した内容に従いテストします。
また,ソフトウェア結合テストの評価及びレビューも行います。
※ レビューの詳細は,「レビューの基礎まとめ」を参照
ボトムアップテストとは
ボトムアップテストでは,下位のモジュールから上位のモジュールへと順に結合しながらテストします。未完成の上位のモジュールの代わりにドライバが必要になります。
※ ドライバ…上位モジュールの働きをするテスト用モジュール
トップダウンテストとは
トップダウンテストでは,上位のモジュールから下位のモジュールへと順に結合しながらテストします。未完成の下位モジュールの代わりにスタブが必要になります。
※ スタブ…下位モジュールの働きをするテスト用モジュール
折衷テスト(サンドイッチテスト)とは
折衷テストでは,あらかじめ折衷ラインを定めておき,その折衷ラインの上位をトップダウン,下位をボトムアップで並行してテストします。
※ スタブとドライバが必要になる
ビッグバンテストとは
ビッグバンテストでは,プログラムを構成するすべてのモジュールの単体テストが終了した後に,全モジュールを結合して一気にテストします。
※ 一気にテストできるが,モジュール間インタフェースのエラーが見つけにくく,エラーが見つかった場合でもデバッグが難しい
ソフトウェア適格性確認テストとは
ソフトウェア適格性確認テストでは,ソフトウェアが要件どおりに作成されているかの確認を,ソフトウェア要件定義で定義した内容に従いテストします。
また,ソフトウェア適格性確認テストの評価及びレビューも行います。
※ レビューの詳細は,「レビューの基礎まとめ」を参照
システム結合テストとは
システム結合テストでは,ハードウェア,ソフトウェア,人による活動,その他すべてを結合したシステムの動作確認を,システム方式設計で定義した内容に従いテストします。
また,システム結合テストの評価及びレビューも行います。
※ レビューの詳細は,「レビューの基礎まとめ」を参照
システム適格性確認テストとは
システム適格性確認テストでは,システムが要件どおりに作成されているかの確認を,システム要件定義で定義した内容に従いテストします。
※ 実際に業務で使用するデータを使用してテストするが,テストは本番環境とは隔離した環境で行う
| 機能テスト | 求められたシステム要件を満たしているかをチェックする |
| 性能テスト | 求められたシステム性能(スループットやレスポンスタイムなど)を満たしているかをチェックする |
| 操作性テスト | 操作しやすいかなど,ユーザーインタフェースをチェックする |
| 障害回復テスト | 障害発生時における回復機能をチェックする |
| 負荷テスト | 通常時よりも大きな負荷がかかったときの性能や機能をチェックする |
| 耐久テスト | 長時間の連続運転に耐えられるかをチェックする |
| 例外テスト | 例外的なデータや異常なデータの入力に対する動作が適切であるかをチェックする |
| セキュリティテスト | 十分なセキュリティ対策が施されているかをチェックする |
運用テストとは
運用テストでは,本番環境(または,リリース前の環境)で,システムが実際の業務手順通りに稼働することをテストします。
※ 利用者がテストを行い,テストに問題がなければ,システムは利用者側に引き渡される
まとめ
今回は,ソフトウェア構築・テストについてシンプルにまとめてみました。内容は多いですが,試験対策としては重要です。繰り返し読み,テスト工程ごとの役割と位置付けを整理して理解しておきましょう。
理解が進んだら,過去問題等にもチャレンジしてみてください。


