○○テストまとめ(テストレベル/テストタイプ/テスト技法)
「○○テストが多すぎる」 件について、自分なりに整理すべくまとめます。
テストレベル
各テスト工程を系統的にまとめ、マネジメントしていくためのグループ。テストプロセスのインスタンスでもある。(インスタンス=実体)
JSTQBに定められているレベルから増えたりすることは基本的にない。※日本語名称はたくさんあります(英語名称で呼んであげた方が言語統一しやすい気がする)
コンポーネントテスト(Unit Testing)
単体テスト/モジュールテスト/ユニットテスト/コーディングテスト/プログラムテストと呼ばれることもある。
通常CIなどで自動化されおり、さまざまなテスティングフレームワーク(minitest/RSpec/xUnit/Jest…)が提供されている。
※単体テストという日本語は他でも使うので、あまり使わない方がいいかもしれない。例えば、画面単体テスト、機能単体テストなどがあり単体の括り方において齟齬が発生しやすい印象がある
統合テスト(Integration Testing)
結合テスト/リンクテスト/連結テスト/ジョイントテストと呼ばれることもある。
統合テストにはコンポーネント間の統合とサブシステム間の統合の大きく2つある。(サブシステム=システムの一部となっているシステムのこと)
システムテスト(System Testing)
総合テスト/プロダクトテスト/システム適格性テストと呼ばれることもある。
サブシステムを全て統合し(最終形態)、ユーザーと同様の操作環境で行うテストのこと。
受け入れテスト(Acceptance Testing)
検収テスト/承認テスト/ユーザー検収試験(UAT)と呼ばれることもある。
ユーザー(ここでいうユーザーはエンドユーザーでもあるし、システム運用者という意味でもある)がサービスを利用する上で必要な要求、要件を満たしているかを検証する。
受け入れテストは開発プロセスのどの段階でも行うことができると考える(誰が受け入れるのかによって)。が、最終的に受け入れるかどうかを判断するのはそのサービスのユーザーである。
テストタイプ
特定のテストの目的から見た、ソフトウェアシステムの特性をテストする活動を束ねたものである。つまりテストのWhat(何を)である。
- 機能テスト
- 非機能テスト
- 性能テスト(パフォーマンステスト)
- 負荷テスト(ロードテスト)
- ストレステスト
- 使用性テスト(ユーザビリティテスト)
- 相互運用性テスト
- 保守性テスト
- 信頼性テスト(障害許容性テスト)
- 移植性テスト
- セキュリティテスト
- ホワイトボックステスト
- 変更関連のテスト
- 確認テスト
- リグレッションテスト
上記はシラバスに記載のあるテストタイプの一例である。Whatは保証したい特性によって変化するため、実質テストタイプは無限にある&作ることができると考える。性能「を」テスト、使用性「を」テスト、など「を」を当てはまるかどうかと考えるとわかりやすい。(気がする)
テスト技法
テストレベル、テストタイプ以外にもテスト技法名+テスト、のようなテストも存在する。テストのHow(どうやって) である。
- デシジョンテーブルテスト
- 状態遷移テスト
- 探索的テスト
後書き
○○テスト、多すぎる。自分の頭の整理のためにまとめましたので、実際と異なっているところがあるかもしれません。日本語ムズカシイ。
参考文献
JSTQB-SyllabusFoundation_Version2018.J03
ソフトウェアテスト教科書 JSTQB Foundation 第4版 シラバス2018対応
単体テスト(Wikipedia)
統合テスト(Wikipedia)
システムテスト(Wikipedia)
検収試験(Wikipedia)
サブシステムとは
Discussion