支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • UIテスト自動化とは?詳しく解説しま

概要

ここでは、UIテスト自動化について解説させていただきます。
UIテストは、ソフトウェアアプリケーションまたはWebサイトのユーザーインターフェイスを評価するプロセスです。これはソフトウェアテストの最も重要な部分であり、時間もかかる工程と言えるでしょう。UIテストの自動化は、手動で行う必要がある多くの反復タスクを自動化することで、この時間を短縮するのに役立ちます。
このように自動化されたUIテストは、企業がテストプロセスの一環として行う最大の投資の1つです。ただし、さまざまなツールがプロセスを支援し、専門的なテクノロジーを利用することができるため、大きなリターンが期待できる投資と言えるでしょう。これらのタイプのテストでは、ユーザーインターフェイスを介して実際のユーザーエクスペリエンスをシミュレートし、さまざまな機能を検証します。

ところが、自動化されたUIテストの実装について前向きでない組織が多く存在するのも事実です。その理由の一つが、テストの数が増えるにつれて自動化されたUIテストは遅くなり、もろくなる傾向があるからです。テストスイートをより速く、無駄なく、より安定させるためにはいくつかのポイントが必要になります。
以上が概要の説明となります。さらに詳しく堅牢で信頼性が高く、高速な一連のUI自動テストを構築できるための方法についていくつか説明させていただきます。

待機

一点目が明示的な待機を使用することです。
Webアプリケーションでは、多くのAjax、JavaScript、およびその他のサーバー側呼び出しがリアルタイムで行われます。要素が異なる時間間隔で表示されるため、これはページの読み込み時間に影響します。この種の状況を処理する一般的な方法は、waitステートメントを使用することです。
UIテストが特定の要素を待機するようにするには暗黙的、明示的、流暢な待機など、さまざまな方法があります。待機を最適化するための良い方法は、特定の条件の発生に基づいてテストを明示的に待機させるため、可能な限り明示的な待機を使用することです。無期限に待機しないため、これによりテストが高速化されます。 明示的な待機のような条件付きの待機は、テストをより賢く、はるかに高速にするのに役立ちます。

並列

二点目がテストを並行して実行することです。
組織は、テスト対象のアプリケーションがリリースされる前に、そのアプリケーションに関する迅速なフィードバックを求めています。従来は、チームは1台のサーバーマシンを持ち、この1台のサーバーですべてのテストを実行していました。現在のソフトウェアテストにおいては、より多くのテストを高速かつ並行して実行するためのさまざまなオプションが利用可能になりました。 具体的には、Selenium Gridなどのオープンソースソリューションと、SauceLabs、BrowserStack、Ranorexなどのサードパーティツールです。複数のテストを並行してクラウドで実行できます。そのため従来のように物理的なマシンに依存することなく並列でテストを実行することが可能となります。

詳細なテスト作成

三点目が詳細なテストを作成することです。
作成するすべてのテストには、単一の責任を保有し、それだけでなく単一の機能をテストする必要があります。これは、安定したテストを作成するためのベストプラクティスの1つです。1つのテスト内で複数の機能を検証しようとするのは、テストデザインとしては不適切です。その理由はテストが膨大になり、長期的にはトラブルシューティングとメンテナンスが困難になるからです。そのため、オブジェクト定義と実装が分離されるようにテストを構成します。たとえば、ページオブジェクトモデルを使用して要素のIDを実際のテストから分離し、実行時にIDを呼び出すことができます。これにより、テストの再利用性と保守性が向上します。

ロケーション戦略

四点目が最適なロケーション戦略に焦点を当てることです。
UIテストが脆弱な最大の理由の1つは、チームがページ上の要素を見つけるために使用する配置戦略に注意を払っていないことです。要素を見つける最も簡単な方法はXPathを使用することですが、DOM構造に基づいて変化し続けるため、最悪の戦略の1つでもあります。そのため、信頼性が低くなる傾向があり、他に選択肢がない場合にのみ使用する必要があります。

柔軟な理解

五点目がすべてがUIを通過するケースでなくため、柔軟な理解が必要となる点です。
UIを開いてさまざまなテストシナリオを実行する回数が増えるほど、テストを完了してアプリケーションに関するフィードバックを取得するのに時間がかかります。すべてがUIを通過する必要はありません。Webページを開かなくても、内部でページを操作できます。 ヘッドレスChrome、PhantomJS、Zombie.js、HtmlUnit、Watir-webdriverなどのツールがあり、Webブラウザーを視覚的に起動する必要なく、DOMを介してページ要素を検証できます。これにより、Web UIテストの実行時間が大幅に短縮されます。全体的な UIテスト戦略では、UIテストとヘッドレス テストを組み合わせるようにしてください。 上記の戦略に従うことで、UIテストをより速く、無駄なく、より安定させることができます。

まとめ

いかがでしたでしょうか? UIテスト自動化について解説させていただきましたので、参考にしていただけましたら幸いです。