ATS|テスト自動化

2023.1.12

【第2回】:自動化で直面する3つの課題

E2Eテストの自動化で加速する品質保証

ITサービスの不具合流出を防ぎ、ユーザー体験(UX)を向上させるうえで、昨今の開発・QA現場には「E2E(End to End)テスト」が求められています。E2Eテストとは、アプリケーションで利用されるコンポーネントやレイヤーを全て結合した状態で、あらゆる構成要素を組み込んだテスト対象システム全体の品質を保証する手法です。

結合テストでは、アプリケーションの一部のコンポーネントやレイヤーのみでテストを行います。主にインターフェースに起因する問題を検証するため、必ずしも全てを結合させる必要はありません。それに対してE2Eテストは、データベースや外部サービスへのアクセスなども含め、できる限り本番に近い環境で実施します。ある意味で結合テストの1つのバリエーションとも言えますが、環境を本番に近づけることによって環境固有の障害を事前に検知できます。

また、アプリケーションだけをテストしても、ブラウザやデバイスとの互換性の問題は解決できません。もし、E2Eテストの段階でデバイスやブラウザ、OSを切り替えてテスト(クロスブラウザテストや多端末における互換性テストなど)ができれば、こうした互換性の問題も事前に回避することが可能となります。

このようにE2Eテスト実施の必要性は高いものの、テスターが全てを手動で行うことは容易ではありません。その理由の1つは、幅広いテスト観点をカバーするために、テストケースが膨大となるためです。テスター依存から脱却し、高品質を担保するE2Eテストを実施するうえで、「自動化」が重要なテーマといえます。E2Eテストを自動化するメリットに関して詳しくは、前回の記事をご一読ください。

E2Eテストの自動化で加速する品質保証【第1回】:E2Eテスト自動化のメリット

第2回となる本記事では、E2Eテストの自動化に向けた課題についてお伝えします。

E2Eテストの自動化に向けた3つの課題

現状では、多くの開発・QA現場がE2Eテスト自動化の重要性を認識する一方で、未だ検討段階や一部の試行にとどまっているケースがほとんどです。ツールの制約などから、E2Eテストへの自動化導入や自動化率の劇的な改善には大きな障壁があり、その実現にあたっては課題の把握が欠かせません。

それではE2Eテストの自動化に向けた3つの主な課題について、順番に解説します。

課題1:実施における制約が多い

E2Eテストの自動化には、テスト対象システムへの操作をテストスクリプトに落とし込む仕組みが求められます。膨大なテストケースから手動でテストスクリプトを作成することは現実的に困難なため、自動生成できるテスト自動化ツールが欠かせません。

しかし第1章でも述べた通り、E2Eテストには細かい操作タイミングや複雑な操作手順をともなうテストケースが必要となります。昨今増えている、テスターの操作を記録・再現する仕組みのテスト自動化ツールでは、まず操作を正確に記録することが困難です。

また、プログラムコードを拠り所にしてテストを制御するテスト自動化ツールも少なくありません。操作対象やユーザー観点を含む操作結果の判定が多様化するE2Eテストにおいては、検証範囲が限定されるこうしたツールの投入が実態に即さないというケースも散見されます。AI(人工知能)などを用いる高度なテクノロジーでなければ、E2Eテストのあらゆる事象を高精度に検証することはできません。

このように、E2Eテストを自動化する従来の手法では、実施できるテストケースや検証できる範囲の制約が大きいのです。E2Eの自動テストを適用できたとしても、得られるテスト成果は限定的となり、費やしたコスト以上の成果を得ることは難しいといえます。

課題2:カバレッジ(網羅性)の向上が困難

規模の大きいE2Eテストには、概して多くのコストが発生します。コストに見合うテスト成果を得るうえで、不具合を確実に検出できる、網羅性の高いE2Eテストの実現が求められます。しかし、多くのテスト自動化ツールではテストケース作成作業の大部分がテスト担当者に委ねられ、現状では人海戦術なくしてカバレッジの向上が困難となっています。

サーバーやモバイル端末など、テスト対象システムの動作に関わる全ての要素を組み合わせる必要があり、膨大なテストケースを作成することとなります。カバレッジの向上には、テスト担当者の技量や労力が求められるだけでなく、実施に必要なハードウェアやソフトウェアの調達といった課題もクリアーしなければなりません。

また、サーバーとの通信なども含む全体の振る舞いを確認するE2Eテストでは、通信環境の良し悪しやサービス間のタイミングが結果に影響を及ぼすケースも考えられます。前述のようにテスターの操作を拠り所にするテスト自動化ツールでは、こうしたユーザー以外の要素を勘案したテストケースの生成は難しいといえます。

テスト設計や環境構築の難しさから自動テストで実施可能なテストケースが限定されるのでは、カバレッジが向上せず不具合流出につながりかねません。E2Eテストのカバレッジ向上には、テスト設計を自動で行えるテスト自動化ツールや、リモートで端末をレンタルできるサービスの活用が求められます。

課題3:複数のプロセスを包括する自動化が困難

テストには計画から設計、環境構築、実行、結果分析、フィードバックにいたるまで多くのプロセスが存在します。またテスト対象システムには、デバイスやサービスごとに異なるテクノロジーが採用されることが通例です。E2Eテストの高度な自動化にあたっては、こうしたプロセスやテクノロジーを包括するアプローチが求められます。

しかし、テスト自動化ツールの多くはテスト実行しか自動化できない、特定のテクノロジーが前提となるなど、自動化の範囲が限定的です。手動によるプロセスが介在する部分的な自動化では新たなボトルネックが発生し、かえってQCDの低下を招くこともあります。

たとえば、自動化できないテストケースを手動で実施する場合、手動テスト用のテストケースを個別に作成することとなります。自動テストと手動テストではテストケースの実行や保守の方法が異なるため、結果としてテスト担当者の負荷増大は避けられません。

複数のプロセスやテクノロジーを一気通貫で自動化できるアプローチでなければ、費用対効果が上がらないばかりか、開発サイクルの継続にも支障をきたすことも考えられます。

E2Eテスト自動化の解決策とは?

今回は、E2Eテストの自動化にあたり障壁となる課題についてお伝えしました。

E2Eテストの品質はサービス品質に直結する要素であり、その向上には自動化が不可欠です。しかしながら、実施上の制約やカバレッジの向上など、自動化には課題が多数存在します。E2Eの高度な自動テストを開発・QA現場に適用するうえでは、適切なテクノロジーを選定することが肝要です。

たとえば、Webブラウザを使用したアプリケーションテストを行う際、Seleniumは比較的良く用いられるオープンソースのフレームワークの1つですが、制約やできないことも多く存在します。実際に単独でテストコードを記述しているケースは少なく、多くの場合Seleniumを組み込んだ別のフレームワーク(WebdriverIO、CodeceptJSなど)を利用することが一般的となっています。

E2Eテスト自動化の課題に対する解決策として、高度なAIを搭載した探索的テスト自動化ツール「Eggplant」が有力な選択肢といえます。また、Eggplantにより高品質なE2Eテストのサイクルを構築するうえでは、ADOCのEggplant認定エンジニアによる同製品の設計から実装、運用まで支援するテスト自動化プラットフォーム構築サービス「ADOC Testing Service (ATS) for Eggplant」も用意されています。

次回は、E2Eテストを自動化するこれらの解決策や適用ケースをご紹介します。

E2Eテストの自動化で加速する品質保証 の記事一覧

E2Eテストの自動化で加速する品質保証

  • 2023.2.9
  • 【第3回】:自動化の解決策と適用ケース

BLOG シリーズ 一覧