ソフトウェアテストと一言で言っても、アプリケーションには複数の層があり、テストの種類もいくつかあります。そこでこの記事では、システム全体をテストするE2Eテストに注目していきます。システムの中には相互に連携する要素がたくさんあります。E2Eテストとは、全体としてシステムがきちんと動作するかすべてまとめて確認することを言います。


E2Eテストとは?

E2Eテストは、「エンドツーエンドテスト」または「ユーザーインターフェイステスト(UIテスト)」とも呼ばれ、システム全体を最初から最後までテストし、期待通りの挙動をするか確認するテスト手法です。一般的に、機能テストとシステムテストの後に行われます。

具体的に、E2Eテストはエンドユーザーの観点からシミュレーションして行うものです。ネットワーク接続、Webサービス、データベース接続、その他のアプリケーションや依存関係など、様々なサブシステムがE2Eテストの結果に影響を与えます。E2Eテストシナリオで1つのサブシステムが失敗した場合、システム全体のテスト結果が「失敗」となってしまう可能性があります。

たとえば、QAテスターがアプリケーションのログインセクションをテストしている時に、データベース接続のエラーが原因でエラーメッセージが表示された場合、テストシナリオの結果は「失敗」となります。

E2Eテストが重要なのはなぜ?

E2Eテストのイラスト

最近のソフトウェア開発では、システムすべてがお互いに連携していますから、フロントエンドからバックエンドまで、システム全体がうまく動作するかテストするのはとても大切です。

上のイラストはクラウドベースのアプリがどのように機能するか簡単に示しています。システムテストで注目するのは内部システムと機能だけです。一方、E2Eテストではデータベースなどの内部ネットワークだけでなく、サードパーティのAPIやWebサービスなどの外部リソースなど、考慮しなければならない要素はシステムテストよりたくさんあります。

ユーザーが実際に使った時に、確実に成功するか確かめるためにはシステム全体をテストする必要があります。

E2Eテストが壊れる理由は?

ユニットテストとは違い、E2Eテストでは様々な外部の要素が結果に影響を与えます。たとえば、ネットワークアクセス、データベース接続、またはファイルのアクセス権限のトラブルなどです。「200 OK」という結果を期待していたのに「500内部」エラーが出てしまったという経験はありませんか? 本番環境でアクセス権限やファイアウォールなどに遭遇したことが原因かもしれません。これは開発環境・QA環境では遭遇しえないトラブルなので、E2Eテストでしか発見できないわけです。

E2Eテストケースを作成する方法は?

E2Eテストケースは3つの要素で構成されています。

  1. ユーザー機能を構築する
    機能と相互接続されているサブシステムを書き出します。データの入力・出力の結果を含め、システムの相互作用を追跡して記録します。
  2. 条件を構築する
    すべてのユーザー機能を検討して、条件を決定します。位置条件、タイミング条件、データ条件などです。
  3. テストケースを構築する
    ユーザー機能ごとに複数のテストケースを作成します。
    この段階で自動テストソフトウェアが活躍します。テストケースをレコーディングしておけば、UIの変更があっても失敗なく再実行できます。なぜでしょうか?AutifyのようなAIベースのテスト自動化ソフトを使うと、AIがソフトウェアのUIを学習するからです。QAテスターは変更点を確認するだけです。UIが少し変わっただけでテスト全体が失敗するということはありません。AIが変更点を認識して指摘してくれるので、テストサイクルをどんどん回していけます。

E2Eテスト自動化ソフト、「Autify」が優れているか3つの理由を見てみましょう。

  • ノーコードで使用できるので使いやすい。
  • テストに掛かる工数を大幅に短縮できる。ソフトウェア開発のライフサイクルを高速化できます。
  • メンテナンスはAIが行うことで、壊れたテストを直す時間を省ける。その分の時間を開発に回すことができます。

Autifyを使うと、画面で操作するだけで簡単にテストをレコーディングできます。コーディングする必要はなく、実際にマウスをクリックしたり遷移するだけでレコーディングできるため、直感的に使いやすいわけです。テストの各ステップを1つひとつ見たり、全体を俯瞰することもできます。結果は並べて表示され、比較しやすいのも便利です。さらに、テストは、複数のブラウザとモバイル端末で同時に実行できます

コストを削減できたAutifyの導入事例

GAテクノロジーズのQAチームマネージャー、柿崎憲氏とのインタビューでは、Autifyを導入したことでテストを書く時間を95%短縮できたそうです。

GAテクノロジーズは、「ユーザーが使用する問い合わせフォームが表示されない」などの課題を抱えていました。Autifyを導入した当初はフォームが表示されているかだけを確認していたのですが、徐々にテスト条件を追加していったそうです。CSSを確認して「見た目が崩れていないか」「フォームデータで正しく問い合わせを受け入れられているか」などもテストするようになったと言います。

「Seleniumやcypressなどを使っていたとき、テストがうまく動かないことがあると、「よいしょ…」と重い腰をあげて、原因を調べます。原因調査のためには、まず始めに、調査用の検証環境を用意し、そこにロールバックしたコードをデプロイし直して環境を構築すること。原因調査のためには、まず始めに、調査用の検証環境を用意し、そこにロールバックしたコードをデプロイし直して環境を構築すること。そこから、本当の原因調査が始まるのです。 1つの問題に対して数時間、または数日かけていた作業が、15分/日程度の確認の時間をとるだけで運用できるようになりました。」

時間をどれくらい削減できるか考慮しないQAチームは多いですが、工数の削減はソフトウェア開発のTCO(総保有コスト)の削減につながり、会社の収益に大きな影響を与える可能性を秘めているのです。

まとめ

アプリケーションのE2Eテストを行うなら、作業を簡単にする実用的なツールを活用しましょう。

手動でソフトウェアをテストすると工数がかかってしまい、特にUIが頻繁に変わるとかなりの手間です。最新の自動化ツールはスマートで、反復的な作業以外の場面でも活躍します。機械学習を採用したツールを使えば複雑なパターンも学習できるため、変更があっても失敗せずに変更点を指摘できます。

テスターは本番環境のサブシステムを含め、システム全体をテストできなければなりません。Autifyはそのようなニーズに応えるツールなのです。Autifyなら簡単にレコーディング、分析、比較、テストができ、複数の端末でテストを実行できるという強みもあります。ぜひこれを機会にAutifyの無料トライアルをお試しください
 
Autifyではこの他にも品質保証やテスト、アジャイル開発に役立つ資料を無料で公開していますので、ぜひこちらからご覧ください。