UI テストは、特に異なるプラットフォーム間でテストを行う場合、脆弱で時間がかかるという評判があります。ブラウザ、デバイス、エミュレータの必要性を回避することはできませんが、より堅牢なテストを作成し、プロセスを高速化するために使用できる戦略がいくつかあります。アジャイル開発のプロセスに UI テストを組み込むことは可能です。
並列テスト (パラレル テスト) がプロセスを高速化することで UI テストから真の価値を引き出すのにどのように役立つか、また他のツールがどのように UI テストをより堅牢にすることができるかを見てみましょう。
並列テストとは?
ほとんどの UI テストは、マージやデプロイの前に継続的統合サーバで順次実行されます。例えば、翌日に予定されているデプロイメントの前に、何も壊れていないことを確認するために、一晩中 UI テストスイートを実行することがあります。これらのテストには、ブラウザやデバイスをエミュレートするためにそれぞれ独自の環境を必要とする複数のプラットフォームが含まれることがあります。
並列テストでは、複数のテストを同時に実行することで、UI テストにかかる時間を短縮します。例えば、Apple 社の Xcode 9 では、異なるデバイス上で異なるテストを同時に実行できるようになり、テスト時間が桁違いに改善されました。このような同じ機能は、時間の経過とともに他のプラットフォームでも利用できるようになってきました。
分散テストとは異なり、並列テストでは必ずしも相互に作用する部分をテストする必要はありません。複数のアプリケーションや、1 つのアプリケーションのサブコンポーネントを同時にテストすることで、全体のテスト時間を短縮することができます。その結果、UI テストが高速化され、アジャイル開発プロセスでより効果的に使用できるようになり、潜在的な問題に対する早期の洞察を得ることができます。
並列テストのベストプラクティス
並列テストは、非同期 Web 開発と似ていますが、いくつかの重要な違いがありますので注意が必要です。特に、テストが特定の順番で実行されていると仮定することはもはやできません。つまり、環境に影響がなく、共有リソースが特定のテストに制限されていないことを確認することが重要です。
留意すべきベストプラクティスとしては、次のようなものがあります。
- 自律的に行う。 並行して行われるテストは必ずしも特定の順序で行われるわけではないので、テストは他のテストの結果に依存して実行されるべきではありません。
- 一度に 1 つの機能をテストする。 テストは一度に 1 つの機能だけをテストするべきです。多くの機能を使ったテストは、並列テストの目的を達成できません。
- 静的なオブジェクトを使用しない。 テストでは、静的なオブジェクトを使用してはいけません。静的オブジェクトを使用すると、並行して実行される他のテストからアクセスできなくなる可能性があります。
- テストデータのリセット。 テストでは、システムをテスト前の状態にしておく必要があります。データの相互汚染を避けるため、テストごとにテストデータを作成、使用、破棄してください。
これらのベストプラクティスを遵守するためには、自動的に組み込まれたプラットフォームを使用するのが最善の方法です。結局のところ、テストの設計におけるたった 1 つのミスが、テストの並列性を考慮すると、診断が困難なエラーの原因となるはずです。TestComplete のようなプラットフォームを使用すると、これらのベストプラクティスを遵守し、UI テストプロセスを簡単に自動化することができます。
TestComplete がプロセスを簡素化
TestComplete は、ハイブリッドなオブジェクトおよび視覚認識エンジンを備えた自動 UI テストプラットフォームであり、すべてのデスクトップ、Web、モバイル アプリケーションをテストします。使いやすいインターフェイスにより、スクリプトを書いても書かなくてもテストを作成でき、テストを継続的インテグレーションおよびデプロイメントプロセスに簡単に組み込んで、アジャイルワークフローを改善することができます。
このプラットフォームは、.NET、AngularJS、Java、WPF、Oracle、HTML5、iOS、Android など、さまざまなテクノロジーを使用したデスクトップ、Web、モバイルのテストをサポートしています。これらのテストは、Jenkins や Azure DevOps などの継続的インテグレーション (CI) プラットフォームを介して、あるいはコマンドラインインターフェース (CLI) や REST API を使用して、リモートで簡単に並行して実行できるように設定できます。
使い方
TestComplete を使用すると、UI テストの並行実行が容易になり、オープンソースツールで並行テストを手動で設定する際の課題の多くが解決されます。
いくつかの簡単なステップをご紹介します。
- アプリケーションのさまざまな部分や機能をテストする個々のプロジェクトを作成する。
- テストを実行するコンピュータにプロジェクトをコピーする。
- プロジェクトの実行を一度に、または時間をおいて開始する。
注意: TestComplete または TestExecute を使用して、これらのテストを実行することができます。TestExecute は、TestComplete がインストールされていなくてもテスト プロジェクトを実行できるように設計された、リソース フレンドリーなユーティリティです。
TestComplete が生成するレポートは、Unit、HTML、または MHT で提供され、他の関係者と共有できます。テスト実行中にキャプチャしたスクリーンショットは、記録および実行段階での UI の不整合のトラブルシューティングに役立ちます。また、異なる物理マシンや仮想マシンで実行されたすべてのアクションの詳細なログにもアクセスできます。
結論
UI テストは遅くて脆いという評判がありますが、その両方の欠点を改善できるツールがあります。並列テストとは、テストを同時に実行することで、テスト時間を大幅に短縮する簡単な方法です。並列テストの環境を整えるのは大変ですが、プラットフォームによっては自動化されているものもあります。
TestCompete は、AI によるハイブリッドオブジェクト認識を活用してテスト脆弱性を軽減する UI テスト自動化プラットフォームと、テストの実行時間を短縮する並列テストを提供します。レポートを 1 箇所に集約することで、関係者が同じ見解を持ち、発生した問題を迅速にトラブルシューティングすることが容易になります。
今すぐ無料評価版を開始して、いかに簡単に UI テストを改善できるかをご確認ください。
GUI テスト自動化製品 TestComplete の詳細はこちら。
この資料は、SmartBear の Blog で公開されている「Best Practices for Parallel Testing Across Desktop, Web, and Mobile」の日本語参考訳です。