テスト自動化ツールは様々なテストを自動化する機能が備わっています。私たちはその中から開発したソフトウェアに適したもの、エンドユーザーの要望に近いものをピックアップし、テストをいくつか組み合わせて実施します。そうすることで、ソフトウェアの不具合を発見したり、エンドユーザーの要求を満たせているかどうか、リリース前に確認することができるからです。

そんなテスト自動化ツールで実施可能な各種テストですが、具体的にはどのようなテストが利用できるようになっているのでしょうか?今回はこの中から「承認テスト」について詳しくご説明していきましょう。


承認テストとは?

承認テストは別名UAT (User Acceptance Testing)とも呼ばれています。これはエンドユーザーの要望通りにシステムが稼働するかどうか確認するためのテストです。承認テストはソフトウェアテストが完了した後に実施するもので、ここではシステムの不具合を見つけるのが最大の目的ではなく、実際に思い描いていた通りにシステムが稼働するかどうかをチェックします。開発側が承認テストを事前に行うことでユーザーへ提供するソフトウェアやアプリをスムーズに運用させる狙いがあります。

そもそもソフトウェア開発において、なぜソフトウェアテストなどの様々なテストが必要なのでしょうか?各種テストが重要である主な理由は次の通りです:

  • バグやエラーによるリリースリスクを無くす
  • ソフトウェアの脆弱性を無くし外部の攻撃からソフトウェアを守る
  • エンドユーザーの要望を満たし信頼を獲得する
  • より効率的なソフトウェア開発のプロセスを発見する
  • 完成したソフトウェアがエンドユーザーの要望や方向性を満たし品質を保証できているか確認する

この中で、承認テストが果たす役割はどこなのかというと最後の5番目の作業に当たります。

ソフトウェアテストのプロセス

そもそもソフトウェアテストはどういったプロセスでテスト範囲や手順を決定するのでしょうか?ソフトウェアテストは基本的に以下の要素やプロセスを基に決定されるといわれています。

  1. 要件分析しテスト範囲を決定する
  2. どんなアプローチを加えるべきか計画を立てる
  3. テストシナリオを設計する(テスト手順、テストデータ、テストスクリプトなどを作成する)
  4. テスト環境を準備する(テスト用のプラットフォームとデバイスの準備/テスト環境をインストールする)
  5. テストを実施する(計画に沿ってソフトウェアを実行する)
  6. 終了の基準を満たしたことを確認した後にテストを終了とする

上記のプロセスはテスト自動化ツールを導入していないことが前提です。テスト自動化ツールを利用すれば4番と5番のプロセスが省略できます。

通常、テスト自動化ツールでは次の8種類のテストが自動化の対象になります。その中から開発したソフトウェアに必要なものをピックアップして利用します。

  • ユニットテスト(単体テスト)
  • APIテスト
  • インテグレーションテスト(統合テスト)
  • UIテスト
  • スモークテスト
  • 承認テスト/ 受け入れテスト
  • パフォーマンステスト(性能テスト)
  • アクセシビリティテスト

上記の通り、承認テストも含まれています。

【関連記事】テスト自動化とは?8つの種類とテスト自動化のメリットをご紹介! | Autify Blog

承認テストが導入された背景

承認テストは英語にするとUATと記載しますが、これは「User Acceptance Test」の略で、エンドユーザーが結果を受け入れるかどうか確認するという意味になります。

システム開発を外部委託することが多かったかつては、承認テストをエンドユーザー側が行うのが主流が、システム開発は徐々に内製開発する流れに変わり、今では開発側が行うのが一般的です。

承認テストのプロセス

承認テストはどういったプロセスでテスト範囲や手順を決定すべきでしょうか?承認テストは基本的に以下の要素やプロセスを基に決定されるといわれています。

  1. ビジネス要件を分析する
  2. 承認テストの計画書を作成する
  3. テストシナリオとテストケースを定義する
  4. テストデータを準備する
  5. テストケースを実行し結果をまとめる
  6. ビジネス要件を全てクリアしているか確認する

承認テストのプロセスはソフトウェアテストのプロセスと似ているところが多いことが分かります。違いはどこにあるのでしょうか?

承認テストの種類

承認テスト(UAT)には主に3つの種類があります。それぞれJSTQB(Japan Software Testing Qualifications Board)が公開している「ソフトウェアテスト標準用語集 日本語版 Version 2.3.J02」に記載があるのでご紹介しましょう。

  • 受け入れテスト(acceptance testing)

システムが、ユーザのニーズ、要件、ビジネスプロセスを満足するかをチェックするための公式なテスト。このテストにより、システムが受け入れ基準を満たしているかどうかを判定したり、ユーザ、顧客、その他の認可団体がシステムを受け入れるかどうかを判定したりすることができる。

  • 工場受け入れテスト(factory acceptance testing)

コンポーネント又はシステムが要件を満たすかどうかを確認するために、製品開発の場所で供給者組織の従業員により実行される受け入れテスト。要件には、ソフトウェア要件だけでなく、ハードウェア要件も含む。

  • サイト受け入れテスト(site acceptance testing)

ユーザや顧客が自分のサイトで実施する受け入れテスト。コンポーネントやシステムが、ユーザや顧客のニーズを満たしているかどうか、ユーザや顧客のビジネスプロセスに適合するかを判定するために実施する。通常、ソフトウェアだけでなく、ハードウェアも含める。

工場受け入れテストを実施するのは開発者でもクライアントでもなく、第三者の供給者組織の従業員が行います。受け入れテストは通常ハードウェアを含まないのに対し、サイト受け入れテストはハードウェアを含むのが特徴です。

上記、3種類の承認テストはどれもユーザーや顧客、供給者組織の従業員など、第三者の目線を最優先してテストが実施されています。これに対し、ソフトウェアテストは開発チームのエンジニア目線で行われますので、それぞれ立場が違うということが分かります。

承認テストは十分な時間がかけられない可能性がある

承認テストの計画書を作成する際、テストをどこまでやるべきか判断しなければなりませんが、ここで意気込み過ぎてテスト範囲を広範囲にし過ぎたり、細かく設定し過ぎてしまうとスケジュールが遅延してしまう可能性があります。受け入れテストの質を上げれば、その分、開発したソフトウェアの品質は良くなりますが、ここで力を入れ過ぎてしまうと時間やコストが予定よりオーバーしてしまうのです。

開発チームがスケジュール通りにソフトウェアを仕上げてくれれば、次のステップである承認テストを行う時間の余裕が生まれ、その分承認テストに十分な時間を割くことができます。しかしソフトウェアテストで不具合が発生し遅延が起きてしまったとなると、承認テストの時間も削減されてしまう可能性があるでしょう。

承認テストの結果でも問題箇所が見つかった場合は、またその分の戻りが大きくなり、全体のスケジュールへの負荷が大きくなってしまいます。

承認テストは余裕のある場合、ない場合、どちらの場合にも対応できるよう準備しておくのがベストです。

承認テストでは要点を上手く確認するのがコツに

承認テストの目的はエンドユーザーの要望通りにシステムが稼働するか確認することでしたが、具体的には何を確認すべきなのでしょうか?承認テストを最終的に成功させるコツは特に重要な機能を優先して確認できるかどうかが鍵となります。

開発したソフトウェアはソフトウェアテストをクリアしなければ承認テストに辿り着くことができません。なのに承認テストでまた開発チームが既に行ったテストをまた一から細かく実施すべきなのでしょうか、これでは無駄が多過ぎます。

承認テストは時間をかけず要点、特に重要な機能に絞って確認する。開発完了後に行ったテストとかぶらない要素や確認できなかった漏れはないかなど、的確にチェックポイントをおさえるのがポイントです。そうすることで、全体の機能が確認できる上に、システムに残存している不具合を見つけ出すことができます。

ソフトウェアテスト完成後に加えられた変更・追加の部分が伝達されているか確認する

時間に追われるソフトウェアの開発業務は納期ぎりぎりで完成することがほとんどです。最後のテストもとりあえず1回試してみたといった場合もあり、テスト後に問題ないと報告した後に変更や追加が発生していたなんてことがあり得ます。

承認テストを行う際は、ソフトウェアテスト完了後に加えられた変更・追加などがあるかどうか、もう一度確認するのがおすすめです。小さな変更がきっかけで大きなエラーに繋がる場合があります。

【関連記事】開発工程、リリースサイクルにおける課題とその対処法

承認テストで使用するデータに気を配る

ソフトウェアテストで使用したデータが疑似環境のものだった場合、本番環境でのリリース後に予期せぬ不具合が発生する場合があります。リスクを軽減させるために、承認テストではできるだけ実環境での実データを使用するのがおすすめです。入手可能な場合はできるだけ早めに実データを準備しておきましょう。

まとめ

承認テストは、テスト工程の最後のポジションを任されるため、ここが最後の砦と意気込み過ぎてしまうあまり、確認項目を増やし過ぎたり、戻りにかかる時間が多くなり過ぎたりと、全体のスケジュールへの負荷をかけてしまう場合があります。

承認テストでは、ソフトウェアテストの結果を信じて、必要最低限の確認項目にまとを絞り、「最後の砦」の考え方を脱却していきましょう。
 
Autifyではこの他にも品質保証やテスト、アジャイル開発に役立つ資料を無料で公開していますので、ぜひこちらからご覧ください。