システム開発工程においてテスト工程はお客様の要望に沿った品質の担保されたシステム納品を行うために様々な観点でテストの種類が設けられております。テスト工程にはどんな種類のテストがあるのか?またその役割や特徴はどういったことか見ていきましょう。
この記事ではシステム開発におけるテスト工程を理解するために様々なテストの種類やその役割を解説していきます。
システム開発におけるテストの意義とは、開発されたシステムが要件、仕様書通りに作成をされているか、品質に問題はないかなどの確認を行うための作業を意味します。ウォーターフォールモデルを用いたシステム開発を実施する際には『V字モデル』という検証方法を実行することが一般的です。
ウォーターフォールモデルの特徴とメリットについて解説された記事はこちら>>
単体テストとは作成したモジュール単位で設計書にて要求された要件・機能を満たしているかどうかを確認、検証するテスト工程です。不具合が見つかった場合には製造工程(プログラム)へと戻り、修正対応を実行し、テスト結果のフィードバックを実施します。単体テストが完了し問題ないことが実証された後に結合テスト(後述)へと移行します。
英語表記は“Unit Test”
略式は”UT”
となっております。
※英語で表現される機会もあるため参考までに
また単体テストについて、“ユニットテスト”や”モジュールテスト”と表現する場合もあります。
結合テストとは複数のモジュールを組み合わせてシステムが正しく連携し合い、不具合なく動作するかを確認、検証するテスト工程です。主にモジュール間のインターフェイスが正しく機能するかやモジュールを結合した状態でのブラックボックステストの2つの種類を確認します。結合テストが完了し問題ないことが実証された後に総合テスト(後述)へと移行します。
英語表記は“Integration Test”
略式は”IT”
となっております。
※英語で表現される機会もあるため参考までに
また結合テストについて、“連結試験”や”結合試験”や”統合試験”と表現する場合もあります。
システムテストとはシステムが全体をとして要求された機能や性能を満たしているかどうかを検証を行うシステム開発工程におけるテストフェーズの最終段階のテスト工程です。システムテストを実施する際は、本番に近い環境を用いてテストを実施します。
英語表記は“Product Test”
略式は”PT”
となっております。
※英語で表現される機会もあるため参考までに
またシステムテストについて、“総合テスト”と表現する場合もあります。
受け入れテストとは開発者によって作成されたシステムが要件通りに仕上がっているかお客様が判断をするためのテスト工程です。そのために実際に使用するデータや業務上使用する操作方法を用意してテストを実施します。テスト工程における最後の関門です。
英語表記は
“User Acceptance Test”
略式は”UAT”
となっております。
※英語で表現される機会もあるため参考までに
受け入れテストについて、“承認テスト”や”検収テスト”と表現する場合もあります。
またこの受け入れテストは運用テストと合わせて実施される場合もあります。
運用テストとは業務上の操作に対する確認だけでなく、操作に対する応答時間などシステムの処理性能の計測やシステムに対する負荷への耐久力の計測なども実行します。
またイレギュラーなケースなど想定されるものは確率が低かろうとも網羅的テストすべき観点を作成しに様々な業務視点で処理を行います。運用テストの工程は前述の受入テストと合わせて実行されるケースもあります。
英語表記は“Operation Test”
略式は”OT”
となっております。
※英語で表現される機会もあるため参考までに
確認テストとはプログラムへなんらかの変更を加えた際に不具合が生じないかやどんな挙動が起きるのかを確認するテストです。確認テストにおけるテスト手法をご紹介します。
評価テストとはセキュリティやユーザビリティなどの性能を評価するテストです。
評価テストにおけるテスト手法をご紹介します。
負荷テストとはシステムの耐久性を測定し、負荷が生じた際の処理能力などを確認するテストです。負荷テストにおけるテスト手法をご紹介します。
数あるテスト工程のそれぞれの役割を一言で説明するためにご活用ください。
単体テスト | モジュール単位で性能を確認するテスト |
結合テスト | 複数のモジュールを組み合わせて性能を確認するテスト |
システムテスト | システム全体の機能や性能を確認するテスト |
運用テスト | 実際の業務を通じて確認するテスト |
受け入れテスト | 顧客がシステムに合否を下す最終テスト |
リグレッションテスト(確認テスト) | プログラム変更に伴い、不具合が生じないか確認するテスト |
デグレートチェックテスト(確認テスト) | プログラム変更に伴い、デグレーションが発生しないか確認するテスト |
セキュリティテスト(評価テスト) | システムのセキュリティを確認するテスト |
ユーザビリティテスト(評価テスト) | ユーザ目線でシステムの使いやすさを確認するテスト |
障害許容性テスト(評価テスト) | 障害発生時のシステム稼働状況を確認するテスト |
性能テスト(負荷テスト) | システムの処理能力を確認するテスト |
ロングランテスト(負荷テスト) | システムが長時間稼働の際の処理能力を確認するテスト |
ストレステスト(負荷テスト) | システムに高い負荷を掛けた際の挙動を確認するテスト |
ロードテスト(負荷テスト) | システムの稼働状況に応じた性能や処理能力を確認するテスト |
キャパシティテスト(負荷テスト) | ユーザやデータ量が増えた際の挙動を確認するテスト |
テスト工程において用いられる有名な4つの手法を紹介させて頂きます。
『内部構造を理解する開発者がテストを実施』
ホワイトボックステストとはシステムの内部構造をしっかりと把握し理解した開発者が対象のシステムの論理構造が正しいかどうか解析するテスト手法です。
参考:e-words
『内部構造に着目せず、第三者がテストを実施』
ブラックボックステストとはシステムの内部構造を把握しない第三者が対象となるシステムの操作性や性能を正しいかどうか解析するテスト手法です。
参考:e-words
『上位のモジュールから順に動作検証を実施するテスト手法』
トップダウンテストとは不具合などの問題発生箇所の特定や判断を効率よく行うために上位のモジュールから順に動作検証を実施していくテスト手法です。主に結合テスト工程にて活用されます。
参考:e-Words
『下位のモジュールから順に動作検証を実施するテスト手法』
ボトムアップテストとは下位のモジュール(特定の機能)から動作検証を実施していくテスト手法です。主に結合テスト工程にて活用されます。
参考:e-Words
テストの自動化とは、これまで人的リソースを活用して行っていたテストケースの作成、テストの実行と確認、レポートの作成などの作業の一部をテストツールを活用することで自動化することです。特にルールに則って繰り返し検証作業が必要なテストにおいてはシステマチックな作業の方が効率よく進められることがあります。限られた開発の人的リソースを大切に扱うためにも、人の手を頼らずして作業を効率的に進められるものはテスト自動化の対象になります。
テスト工程の全体像を理解するために各テストの種類や特徴を紹介させて頂きました。
単体テスト、結合テスト、システムテストを筆頭にテストには主要なものだけでも5つ以上の工程が存在します。お客様の要望通りにシステムを仕上げるにはそれだけの確認事項を満たさないとならないということです。それぞれの工程の目的や観点を正しく理解し、テスト工程を円滑に進めて品質の高いシステム納品を実現しましょう。