【入門編】システム開発におけるテストの種類について

今回はシステム開発におけるテストを体系的に整理したいと思います。

まず、テストは大きく下記2つに分類できます。

 ①システムテスト

 ②ユーザーテスト

①はシステム開発時に行われるテストで、実施者はシステム開発担当です。

②はシステムが動く状態になってから行うテストで、実施者は業務担当(ユーザー)です。

また、それぞれのテストの代表的なものは以下の通りです。

[システムテスト]
・単体テスト
・結合テスト
・総合テスト

[ユーザーテスト]
・受入テスト
・運用テスト

上記に挙げただけでも多いと思いますが、では何故こんなに多くのテストをする必要があるのでしょうか。

それは、バグを発見し、システムの質を向上させるためです。つまり、テストはバグを発見するために行うのです。

リリース後、現場に導入されたときに混乱を生まないように何度もテストを行い、そのたびに質を高めていくのです。

それでは、各種テストについて説明したいと思います。

1.単体テスト

クラスや関数といった単位のプログラムのテストのこと。主に設計通りにこれらが動くかをテストし、論理構造が適切かを確認する。UT(Unit Test)やCT(Component Test)、PT(Prgram Test)とも言う。

1-1.テスト手法

①ホワイトボックステスト:モジュールの内部構造に着目して行うテスト。プログラムの内部構造や論理が記述された内部仕様書に基づくテストであり、主にプログラム開発者自身が実施します。

②ブラックボックステスト:モジュールの内部構造を考慮することなく、仕様書通りに機能するかどうかをテストする。主にプログラム開発者以外の第三者が実施。単体テストだけでなく、結合テストや総合テストでも行う。

1-2.単体テストの種類

①機能確認テスト:1つのモジュールが設計書や仕様書通りに動作することを確認するテスト。

②制御フローテスト:プログラムの論理構造に沿って、「命令」や「分岐」などが実行されるかを確認するテスト。

③データフローテスト:データや変数が「定義」「使用」「消滅」の順に行われているかを確認するテスト。

1-3.テストデータの作成方法

①限界値分析:有効値と無効値の境界となる値をテストデータとする。

②同値分割:有効値と無効値のグループに分け、それぞれのグループの代表的な値をテストデータとする。

2.結合テスト

単体テストで検証したプログラムを組み合わせて行うテストのこと。なお、本サイトではソフトウェア結合テスト、ソフトウェア適格性確認テスト、システム適格性テスト全てを結合テストに含めることとする。IT(Interface Test)やJT(Join Test)とも言う。

2-1.目的

①モジュール間のインタフェースを検証する。(ソフトウェア結合テスト)

②ソフトウェア要件どおりに実現されているかどうか確認する。

③実業務で使うデータを使ってテストし、システム要件が実現されているかどうか確認する。

2-2.テスト手法

①トップダウンテスト:上位のモジュールから下位のモジュールへと順次結合して検証する。ダミーモジュールのスタブが必要である。

②ボトムアップテスト:下位のモジュールから上位のモジュールへと順次結合して検証する。ダミーモジュールのドライバが必要である。

2-3.結合テストの種類

①機能テスト:システム要件に定められている機能が、すべて含まれているかどうか検証する。

②性能テスト:要求される処理能力や応答時間を満たしているかどうかを検証する。

③例外処理テスト:間違ったデータを入力したときにエラーとして認識されるかどうかを検証する。

④負荷テスト:量的な負荷をかけてシステムが業務に耐えられるかどうか検証する。ストレステストともいう。

⑤操作性テスト:操作性の良さや表示されるエラーの分かりやすさを検証する。

⑥状態遷移テスト:設計されたイベントと内部状態組合せどおりにシステムが動作することを検証する。状態遷移図や状態遷移表に基づいて動作を確認する。

3.総合テスト

個々のプログラムや機能結合したプログラムが仕様通りに動くかを検証するためのテスト。

3-1.確認テスト

①回帰テスト:修正・変更した後に、変更箇所が正しく動くかを確認するテスト。

②デグレードチェックリスト:修正・変更を行った後に、新たな不具合が生まれていないかを確認するテスト。

3-2.評価テスト

①セキュリティテスト:悪意のある外部からの攻撃への対応や脆弱性が存在しないかを確認するためのテスト。

②ユーザビリティテスト:操作性、学習性、理解性、見やすさといったユーザーに対しての使いやすさを確認するテスト。

③障害許容性テスト:障害が発生した場合に指定された機能が維持されていることを確認するテスト。

3-3.負荷テスト

①性能テスト:処理能力が仕様を満たしているか確認するテスト。

②ロングランテスト:長時間の連続稼働によって処理能力や稼働率に問題が生じないかを確認するテスト。

③負荷テスト:極端に高い負荷をかけた状況下での動作を確認するテスト。

4.参考書籍

基本情報技術者の参考書としては下記が分かりやすくておススメです。

システム開発におけるテストの解説もありますので、資格の参考書としてだけでなく、読み物としてもおすすめです。

イメージ&クレバー方式でよくわかる栢木先生の基本情報技術者教室(平成30年度) [ 栢木厚 ]

価格:1,922円
(2019/1/27 08:41時点)
感想(1件)

5.まとめ

いかがでしたでしょうか。

今回はシステム開発におけるテストを体系的に整理しました。

↓↓このブログが少しでもお役に立ったならば、応援クリック頂けると嬉しいです!↓↓

ブログランキング・にほんブログ村へ