ソフトウェアテストの種類

テスト自動化は「誰がどのようにソフトウェアテストをたくさんするのか」の答えの1つとなりますが、先ほども書いた通り、一口にテストと言っても自動化に向いているもの、向いていないものがあります。

その説明をする前に、まずはソフトウェアテストにどのような種類があるのか「テストレベル」「テストタイプ」の2つの軸で紹介します。

1. テストレベル

テストの粒度とも言うべき「テストレベル」は、「コンポーネントテスト」「統合テスト」「システムテスト」の3つに分かれます。

「コンポーネントテスト」はモジュールやコンポーネント単位で行う最小単位のテストで、それらを組み合わせて正常に動作するかを確認するのが「統合テスト」です。そして、システム全体が仕様書通りに動くかを確認するのが「システムテスト」です。

ここで挙げたのはJSTQB(Japan Software Testing Qualifications Board:日本におけるソフトウェアテスト技術者資格の運営組織)でも採用されている用語ですが、開発の現場ではコンポーネントテストの代わりに「単体テスト」「ユニットテスト」、統合テストの代わりに「結合テスト」といった言葉も非常によく使われます。

ウォーターフォール開発(2)では単体テストからシステムテストへと進み、発注者に完成形の「受け入れテスト」をしてもらって、問題がなければ納品となります。

一方、アジャイル開発では短期間のサイクル(スプリント)を繰り返すので、各スプリントごとに様々なテストレベルのテストを行います。

また、以前のスプリントで動作していた機能が次のスプリントで不具合を起こしていないかを確認する「リグレッションテスト(回帰テスト)」も重要です。

2…開発プロセスを複数の工程に分けて、順番に進めていくシステム開発手法

2. テストタイプ

テストを目的別に分類したものが「テストタイプ」で、こちらは大まかに4種類あります。

この中にもいろいろな種類があり、例えば「非機能テスト」では以下のようなテストを行います。

・ユーザビリティテスト︰ユーザーの使いやすさを確認
・セキュリティテスト︰システムの脆弱性・堅牢性を確認
・ストレステスト︰過負荷に耐えられるかを確認
・パフォーマンステスト︰処理速度などを確認

テストレベルとテストタイプによる分類以外にも、特徴的なテストの種類がいくつかあります。意外な由来を持つ用語もあって面白いですね。