こんにちは!
株式会社アイスリーデザイン エンジニアリング部の芹田です。
前回の投稿では、「単体テストと総合テストの違いとは?」をテーマに記載しました。今回は、前回記載しきれなかった「受け入れテスト」について書いていこうと思います。
みなさんも馴染みのあるものを例にすることで、この記事を通して少しでもイメージを掴んでいただくことができればいいなと考えております!
それでは、どうぞよろしくお願いします。
システム開発のテストとは
前回の記事でお伝えしきれなかったのですが、システム開発のテストには、目的やフェーズに対応する複数のテスト工程があります。
全てを必ず実施しなければならないというよりは、必要に応じてテストを計画し実行していくことになります。
JSTQBで説明されている内容をイメージ化したものがこちらです。
コンポーネントテスト
コンポーネントテストとは、前回の記事に記載した「単体テスト」にあたる部分になります。
テスト可能な最小の単位でのテスト工程を指します。
統合テスト
統合テストは、結合テストとも呼ばれることがあり、コンポーネントやシステム間で期待通りの相互処理を検証するテスト工程を指します。
システムテスト
システムテストとは、前回の記事に記載した「総合テスト」にあたる部分になります。
開発すべきシステムが完成し、期待通りに動作することの妥当性を確認するテスト工程を指します。
受け入れテストとは
受け入れテストとは、「UAT(User Acceptance Test)」とも呼ばれ、一般的にはシステムやプロダクト全体の振る舞いや能力に焦点をあてたテスト工程を指します。
受け入れテストの目的として、以下3つがあげられます。
- システムの全体的な品質に対する信頼の積み上げ
- システムが完成し、期待通りに動作することの妥当性確認
- システムの機能的/非機能的振る舞いが仕様通りであることの検証
受け入れテストの実施者は一般的には発注者側であり、受け入れテストからの情報に基づいて、開発したシステムが導入に向けて準備できているかどうかや、顧客(エンドユーザー)が使用できるかを評価します。
今までのテスト工程同様、受け入れテストでも欠陥が見つかることはありますが、欠陥を見つけることだけが目的ではありません。
しかし、とても多くの欠陥が受け入れテスト時に検出されるような事態は、重要なプロジェクトリスクと見なさなければなりません。
受け入れテストには複数の形態がある
実は、受け入れテストには複数の形態があります。
- ユーザー受け入れテスト
- 運用受け入れテスト
- 契約による受け入れテストおよび規制による受け入れテスト
- アルファテストおよびベータテスト
それぞれの特徴を簡単に説明します。
ユーザー受け入れテスト
ユーザー受け入れテストは、意図されているユーザーが本番環境または本番環境とほぼ同じ運用環境にて、想定しているシステムの使用方法と合致していることを確認することに焦点をあてて実施するテストです。
主な目的は、
- システムの使用において、システムがユーザーニーズに合致し、要件を満たしていること
- 最小限の困難さ、コスト、リスクでビジネスプロセスを実行できるという信頼を積み重ねること
で、実施者は依頼者側になります。しかし、リソースが不足している場合やテスト内容を検討するスキルが不足している場合等は、第三者のパートナー会社の支援を受けながら実施することもあります。
運用受け入れテスト
運用受け入れテストは、実際の運用担当者またはシステムアドミニストレーターが行い、本番環境または本番環境とほぼ同じ環境で行うのが一般的です。
主な目的は、実際の運用環境で例外的な状況または困難な状況であっても、ユーザー向けにシステムを適切な稼動状態に維持できるかに焦点をあてて実施するテストです。
具体例としては、
• バックアップ/リストア
• インストール、アンインストール、アップグレード
• 災害復旧 • ユーザーマネジメント
• メンテナンスタスク
• データのロードと移行のタスク
• セキュリティの脆弱性のチェック
• 性能テスト
などが、該当します。
契約による受け入れテストおよび規制による受け入れテスト
これらのテストは、読んで字の通り、契約または規制に準拠しているかに焦点をあてて実施するテストです。
契約による受け入れテストは、契約時に当事者間で合意した受け入れ基準に従って実施し、
規制による受け入れテストでは、政府、法律、安全の基準にしたがって実施することになります。
いずれのテストも、ユーザーまたは独立したテスト担当者が行うことが一般的ですが、
規制機関が結果を証明または監査する場合もあります。
アルファテストおよびベータテスト
アルファテストやベータテストは、市販されているソフトウェアの開発担当者が、新たなソフトウェアプロダクトを市場へリリースする前に、ユーザー、顧客、システムの運用者からフィードバックを受けるために行うテスト工程のことです。
アルファテストとベータテストの違い
アルファテストとベータテストの代表的な違いは、下記の通りです。
アルファテスト | ベータテスト | |
---|---|---|
実施者 | 開発者や内部のテストチームが行います。 | 一般ユーザーや限られたユーザーグループが行います。 |
環境 | 開発者やテストチームの内部環境で行われます。 | 一般ユーザーが利用する環境で行われることが多いです。 |
時期 | 開発がほぼ完了し、ベータテストの前段階で行われます。 | アルファテスト後、一般ユーザーに公開する前の段階で行われます。 |
範囲 | ユーザーが日常的に利用する機能やシナリオを中心に行います。 | アルファテストよりも広範囲なユーザーやシナリオを対象にして、本番環境での使用を想定して行います。 |
目的 | ソフトウェアの機能や品質を評価し、バグを発見して修正することです。 | リリース前に実際のユーザーが利用することで、本番環境での挙動やユーザーからのフィードバックを収集することです。 |
まとめ
いかがでしたでしょうか?
一言で「受け入れテスト」と言っても、たくさんの目線でテストを実施していく必要があります。
「高品質のシステム」を実現するのは簡単ではありません。
それぞれのテスト工程をただ実施するだけではなく、明確な基準や目的を持って実施していくことが重要になります。
自社にそう言った知見や経験が豊富な方がいれば良いのですが、そうではない企業からすると、システム開発の中で一番不安があるポイントではないかと思っています。
アイスリーデザインでは、グロースまで支援しているため、そういった企業様であっても安心してシステム開発を進めていけると思います。
最後まで読んでいただき、ありがとうございました!
開発パートナーをお探しですか?お気軽にご相談ください!