情報処理のWeb教科書―IPA情報処理試験対策のお供に!
トップ 情報処理の知識体系 テクノロジ系 技術要素 開発技術 システム開発技術 ソフトウェア構築 単体テスト
単体テスト(ソフトウェアユニットのテスト)についてまとめています。テストの目的、実施と評価、分岐網羅などのホワイトボックステストの観点やテスト手法について解説しています。
この記事の目次になります。
単体テストは、ソフトウェア詳細設計で定義したテスト仕様に従っ て行い、要求事項を満たしているかどうかを確認することが目的です。
単体テストは、テストの目的、方針、スケジュール、体制、使用するテストツールなどを決定してテスト計画を立て、 次にテスト項目、テストデータの作成、テスト環境の用意などのテスト準備を行い、 テストを実施し、テスト結果を評価するという一連の手順で行います。
テストの目的、実施方法、留意事項、テストで使用されるテストツールの役割を理解し、 また、テストの実行後には、テスト結果の記録、結果分析、プログラムの修正や改良作業を行います。
バグ曲線とは、縦軸にバグの検出数の累積、横軸に時間で表したグラフのことをいいます。
テストで検出されるバグの数を時間を追って記録していくと、S字型の曲線になるというものです。 バグ曲線はもっと一般的な言葉で言うと信頼度成長曲線(ゴンぺルツ曲線)といいます。
テスト開始段階ではバグが多数発見されます。 バグが修正されないと確認ができないところもあり、テスト回数の経過とともに検出数が増えます。 しかし、さらにテスト回数の経過に従って、発見されるバグの数は減って行きます。 最終的にはバグの数が収束に近づきます。 このような仮説よりバグ曲線はS字型の曲線に従っていると考え、現状の状況と比較して分析します。
具体的なバグ曲線の分析例になります。
あるシステムをサブシステムa、bに分けて開発していて、ともにテストが終了した段階のデータが以下の表です。
サブシステム名 | 開発規模 | テスト項目数 | 未解決バグ数 |
a | 30kステップ | 300 | 0 |
b | 20kステップ | 200 | 0 |
現在までのバグ検出状況が以下のようなグラフで示されています。
2つのサブシステムとも、表より未解決バグ数は0件となっております。 しかし、グラフを見るとサブシステムaの方はバグ検出数が減少しており、サブシステムbの方はバグ検出数が減少していません。 サブシステムbのバグの検出数は、今後も同じ数出てくるのではないかと予想されます。
したがって、十分にテストされているとはいえませんが、サブシステムaの方が、サブシステムbよりもバグの検出数が収束しており、品質は高いと判断できます。
一般的にシステムテストや運用テストはブラックボックステスト、単体テストはホワイトボックステストで行われます。
ブラックボックステストとは、入力と出力の関係だけ注目して行うテストです。 仕様によるテストとも呼ばれ、機能仕様からテストケースを作ります。
また、ブラックボックステストのテストデータは、 機能仕様から同値クラスや限界値を識別し、テストデータを作成します。
ホワイトボックステストとは、プログラム内部の論理構造に着目してテストする方法です。
ホワイトボックステストでは、モジュール内部で正常に動作が行われているかをチェックします。 入力と出力の対応が正しいかどうかをチェックするだけでなく、正しい手順で計算が行われるかどうかなど、内部構造のアルゴリズムも考慮してテストします。
ホワイトボックステストで使用されるテストケースの作成方法には、網羅のレベルによって、命令網羅法、分岐網羅法、条件網羅法、複数条件網羅法などがあります。
命令網羅法は、プログラム中の各文を少なくとも1度実行させるテスト方法です。 if-else文でelseでは何も行わない場合、ifの条件1回通せばOKとなります。
分岐網羅法は、分岐を少なくとも1度実行させるテスト方法です。 if-else文でelseでは何も行わない場合、ifとelse両方の条件1回ずつ通せばOKとなります。
条件網羅法は、判定条件を網羅するテスト方法です。 判定条件が複数からなる場合は各条件の真偽を少なくとも1回は実行させます。
複数条件網羅法は、判定条件が複数条件から成り立つ場合、各条件のすべての真偽の組み合わせを実行させるテスト方法です。
限界値分析は、テストケース作成技法の一つで、境界値に隣接する値を入力値としてテストを行う方式です。
プログラムの誤りの一つに、繰返し処理の終了条件としてA≧aとすべきところをA>aとコーディングしたことに起因するものがある(Aは変数、aは定数)、 このような誤りを見つけ出すために有効なテストケース設計技法は限界値分析です。
以下では単体テストに関連したIPA情報処理試験の過去問とその解説をまとめています。
単体テストに関連した参考書籍です。目次や参考いたしました内容をまとめています。
システム開発技術をテーマに要件定義、方式設計、詳細設計、構築、テスト、導入、受入れ、保守など、システムやソフトウェア開発の考え方、手順、手法、留意事項をまとめています。
情報処理試験対策用のサイトオリジナル教科書をテーマにテクノロジ系の知識をまとめています。
Copyright (C) 2010-2023 情報処理のWeb教科書. All Rights Reserved. Loarding…