はじめに
本記事では、E2Eテスト(End to End テスト)の概要や、E2Eテストを自動化するメリット、自動化のポイントについてご紹介します。
E2Eテストとは?
E2Eテストとは、システム全体のテストを実施することで、テスト対象のシステム全体が正しく機能し想定通りの動作となっているのかユーザー視点(ユーザーエクスペリエンス)で一連のテストをおこなうことをいいます。一般的に統合テストや、システムテスト、受入テストなどのテストフェーズで使用されます。また、単体テストに比べてテストの範囲が広いのが特徴で、UI操作を自動化することで、テストの効率や品質を向上できます。
なぜE2Eテストを自動化するのか
E2Eテストは、ユーザー視点でシステムが問題なく動くか検証する必要があるため、抜けや漏れの無いようにテストをする必要があります。しかしながら、すべての操作を手動で実施すると膨大な時間がかかります。中には手動でしかテストが実施できないテストももちろんありますが、以下のテストは、手動で実施すると入力ミスや確認漏れが発生する可能性が高いため自動化が求められます。また、UIの操作を自動化することで、限られた時間で効率的にテストをおこなうことが可能となります。
- 繰り返し何度もおこなうテスト
- シナリオのパターンが決まっているテスト
- 検証項目が多いテスト
E2Eテストを自動化するメリット
時間とコスト削減
自動化により、テストの実行時間やコストの大幅な削減が可能となります。データ駆動型テストや回帰テストなど、同じ操作を何度も繰り返し実行するようなテストでは、人が手動で実行し、目視確認する手法に比べて、はるかに高速にテストを実行可能です。
効率向上/品質向上
自動化により、テストの実行や検証などの作業を効率的に実施することが可能となります。また、効率的にテストを実施できるようになることで、空いた時間を他の作業に充てることで品質向上に繋がります。
迅速なフィードバック
CI環境に組み込むことで、定期的なテスト実行、および迅速かつ頻繁なフィードバックを得ることができます。
再現性の高さ
テストケースを自動化するためのスクリプト(テストスクリプト)を使用しテストを行うため、回帰テスト(リグレッションテスト)などの同じテストを繰り返し実施したい場合にそのスクリプトを実行することで簡単に再現できます。
E2Eテスト自動化の課題
E2Eテスト自動化は、メリットが大きい一方で、課題も存在します。
課題1.スタートアップ、ランニングコスト
テスト自動化のスタートアップコストには、自動化ツール導入のほか、テスターのトレーニング費用が含まれます。また、ランニングコストとして、作成したテストシナリオのメンテナンスや保守のリソースが含まれます。
一般的に、作成したテストシナリオを3回~4回繰り返し実行することで、手動テストに比べて費用対効果が得られると言われています。
課題2.シナリオのメンテナンスが必要
自動テストを作成した後、テスト対象アプリケーションが変更されても適切に動作し続けるためには、継続的なメンテナンスが必要になります。メンテナンスを怠り、作成したテストシナリオが活用できなくなると、自動化の速度を一気に落とすこととなります。
課題3.ツールの機能範囲のことしかテストできない
テスト自動化ツールを導入したからと言って、すべてのテストが自動化できるわけではありません。
ツールはあくまでもツールです。そのため、実装したことだけ、かつ、対象ツールの機能範囲内のことしか自動化できません。
E2Eテスト自動化のポイント
E2Eテストのメリットや課題をご紹介してきましたが、実際に自動化する際のポイントをご紹介します。
1.アプリケーションに合ったテスト自動化ツールを選択する
テスト対象のアプリケーションに合ったテスト自動化ツールを選択することは最も重要です。必ず、テスト自動化ツールでアプリケーションのオブジェクトが認識でき、テストケースが自動化できるか確認したうえでプロジェクトに導入しましょう。
WEBプリケーション、デスクトップアプリケーション、モバイルアプリケーションのテストが必要な場合には、これらすべてに対応する自動化ツールを選定することで、余計な労力やコストをかけずにテストに取り組むことができます。
2.何を自動化するのか(テストの範囲や優先順位付けをする)
テスト自動化に取り組む際に、テストすべてを自動化するのではなく、自動化の効果を得やすいテストから優先的に自動化に取り組むことも重要です。リソースは限られているので、「自動化の作業労力と時間ををどこに集中させるか?」を考慮したうえで取り組む必要があります。
自動化に適したテストケース、自動化が難しいテストケース(自動化に時間と労力がかかるテストケース)、自動化に適していないテストケースはブログ記事で紹介しています。
3.回帰テストから取り組む
テスト自動化に適したテストケースの一つに、「回帰テスト(リグレッションテスト)」があります。
回帰テストは、プログラムの一部を修正した際に、他の箇所で不具合が起こっていないかを確認するためのテストのことで、同じ操作を何度も実施することになるので自動化に向いていると言われています。
回帰テストを自動化することで、何度も実施する工数を減らすだけでなく、CIプロセスと統合すれば、継続的にテストを実施し、不具合の早期発見にも繋がります。
4.メンテナンスを考慮したテストケースを作成する
自動化の中で作成したテストシナリオは、一度作成すれば完了ではなく、その後もアプリケーションの変更やテストシナリオの変更に応じてメンテナンスが必要となります。そのため、メンテナンスを考慮したテストシナリオの設計が求められますし、メンテナンスをおこないやすいツールを選定することもポイントとなります。
まとめ
この記事では、E2Eテストを自動化する目的と、E2Eテストにおけるメリットやポイント、課題をご紹介しました。
UIテスト自動化ツール Ranorex
Ranorexはデスクトップアプリ、Webアプリ、モバイルアプリに対応しており、高性能なUIキャプチャ機能を搭載した、UIテスト自動化ツールです。E2Eテストにおいて、UIの操作を自動化します。
Ranroexは、多くのサードパーティー製コントロールなど、さまざまなテクノロジーをサポートしており、いつも通りの画面操作をするだけで操作をキャプチャし、テストシナリオを自動生成します。また、GUI上での操作となるため、メンテナンスもおこないやすく、直感的に操作できる特徴もあります。
UIのテストでは、さまざまなデータパターンでテストを実施するデータ駆動型テストや、回帰テストにより繰り返しの検証が必要になりますが、Ranorexにはデータ駆動型テストや検証を実施するための機能が用意されているので、テストに合わせて柔軟にテストシナリオを作成、編集することが可能です。
また、無償によるトレーニングなどにより、ツール導入時のRanorexを使用したテスト自動化のサポート体制が整っています。