自動テストに向くテストと向かないテスト

自動テストは強力なツールですが万能ではなく、テスト内容によっては手動テストを含め他の手法により行った方が有効なテストもあります。

自動テストに適したテスト

機能テスト

Webページと背後のシステムが問題なく期待通りに機能するかどうかを判断するために行われます。 Seleniumによるテストの自動化に最も適しているテストです。

受け入れテスト

機能テストの一つですが、開発したシステムの納品に際して、顧客側の目線から期待通りに機能することを判断するために行われます。

回帰テスト

機能テストの一つですが、システムの修正・変更や機能追加・削除において、変更を受けない既存の機能が従来通り機能することを確認するために行われ、いわゆるデグレやリグレッションを発見することを目的としています。

自動テストに適さないテスト

性能テスト・負荷テスト

システムの処理時間を計測することで期待する時間内に処理を完了できるか、あるいは想定する上限の負荷をシステムに与えても機能が損なわれないか、システムがどの程度の負荷に耐えられるかなどを判断するために行われます。
GHOST Operatorによる自動テストでは、HTTP通信をGHOST Operator WebDriverサーバがすべて中継するため、本来の通信経路とは異なりオーバーヘッドが発生し、正しい性能を計測することはできません。

UI操作を必要としないテスト

自動テストはWebブラウザの操作を自動化するため、UIを伴わないテストには向きません。
例えば、JavaScriptで作成された関数の機能テストやサーバサイドのAPIテストなどは、別の方法によりテストを行った方が適切で効果的です。

仕様変更頻度が高いページ

自動テストの実行にはテストシナリオを用意する必要があり、テストシナリオの作成にも時間とコストが発生します。当然ながら、仕様変更のあるページのテストシナリオは新しい仕様に合わせて変更する必要があります。
仕様変更の頻度が非常に高いページの場合、手動テストによる時間とコストよりもテストシナリオの維持に要する時間とコストが上回ってしまう可能性があり、自動テストによるメリットの多くが失われます。 しかし、自動テストには時間とコストの削減以外に、シナリオ通りの操作を正確に行えるというメリットは依然として残ります。
仕様変更頻度の高いページでは、自動テストを適用するのかどうか慎重に検討する必要があります。

CAPTCHAを含むWebページ操作

CAPTCHAはWebブラウザを操作しているのが、人間なのかコンピュータなのかを判断するために用いられます。
CAPTCHAを含むWebページは、コンピュータが操作する自動テストには本質的に適しません。
自動テストを用いる際には、CAPTCHAページを迂回するような仕組みを用意しておく必要があります。

二要素認証

自動テストは単一のWebブラウザを自動操作するため、二要素認証を含むWebページのテストには適しません。
自動テストを用いる際には、二要素認証ページを迂回するような仕組みを用意しておく必要があります。

GHOST Operatorの利用で可能になるテスト

キーボード操作を再現するテスト

一般的なWebDriverは、キーボード操作を正確には再現できませんが、GHOST OperatorはBluetoothキーボード互換のハードウェアを使用するため、厳密なキーストロークを再現します。
従って、onKeydownやoninputなどのイベントハンドラも正確に動作確認することができます。

IME変換をともなうテスト

前記のキーボード操作の再現と同じ理由により、一般的なWebDriverでは再現できないIME変換時の挙動も正確に再現することができます。
例えば、氏名入力における読み仮名の自動入力など、IME入力伴うイベントハンドラにより実現される機能でも自動テストが可能です。

セキュアブラウザを利用するテスト

GHOST Operatorは、iPadにBluetooth接続されるHID Emulator(マウスおよびキーボード互換ハードウェア)をWebDriverで制御することで画面操作を行い、ヘルパーJavaScriptによりページ情報との連携を実現してるため、iPadへの関連ソフトウェアのインストールは一切不要であり原理的に操作対象とするWebブラウザに制限はありません。
従って、Webブラウザの標準仕様を満たしMobile Safariと同等に動作するセキュアブラウザであれば、自動テストを実行することが可能です。
但し、セキュアブラウザ製品の性格上、個々の製品ごとに機能的な制限・制約がありますので、すべての操作・機能がGHOST Operatorで実行できるわけではないことにご留意ください。

GHOST Operatorによる自動テストに対応しないテスト

複数のシステム(ホスト)間にまたがるテスト

GHOST Operatorはただ一つのサーバによりホストされるアプリケーションのみテストすることができます。
例えば、サブシステムごとに異なるサーバでホストされるアプリケーションであれば、サブシステム単位でのテストは可能ですが、サブシステム間をまたがるようなテストは実行できません。
このようなシステムの場合、テスト環境にリバースプロキシを用意して中継するような方法により、見かけ上は単一のサーバでホストされるように構成する必要があります。

システムダイアログ

自動テストはWebブラウザの操作を自動化しますが、ファイルのダウンロード先の選択やアップロードするファイルの選択などで表示されるシステムダイアログの操作を自動化することができません。
GHOST OperatorはOSレベルのマウス操作・キーボード操作を行うため、システムダイアログの操作も不可能ではありませんが、WebDriverの仕様外の操作となり容易には正しい操作を指示できません。

セキュリティ保護されたネットワーク経由のテスト

GHOST Operatorは、ブラウザとWebサーバ間の通信をGHOST Operator WebDriver Serverが中継しますが、GHOST Operator WebDriver ServerはユーザIDとパスワードによるユーザ認証やクライアント証明書などによる認証機能を持っていません。
そのために、Webサーバへの接続にセキュリティ保護されたプロキシサーバなどを経由する環境では利用できません。

スクリーンタッチ操作

GHOST OperatorはBluetoothマウスにより操作を実行します。ほとんどの場合はタッチ操作とマウス操作で差異はないため問題となりませんが、タッチ操作固有の処理を行うようなアプリをテストすることはできません。
具体的には、スクリーンのピンチアウト・ピンチイン、ジェスチャやマルチタッチ操作などが該当します。