特殊な状況下での自動化 (周辺機器が無い)

製品の基本的な位置付け

Silk4J は GUI テスト製品で、自動化された状況下での有意なテスト結果を得るために、人間のように振舞います。Silk4J が実行したテストは、人間が実行するよりもすばやく実行しますが、同等の価値のあるものです。このことは、人間が同じテストを実行するために必要なテスト環境とできる限り同等なテスト環境を Silk4J が必要とすることを意味します。

物理的な周辺機器

実際のアプリケーション UI の手動テストでは、キーボード、マウス、ディスプレイなどの入出力デバイスが必要です。Silk4J では、テストの再生時に物理的な入力デバイスを必要としません。Silk4J に必要なものは、キーストロークやマウス クリックを実行するオペレーティング システムの機能です。大抵の場合、入力デバイスが接続されていなくても、Silk4J の再生は期待通り動作します。ただし、デバイス ドライバによっては、物理的な入力デバイスが利用可能でないと、Silk4J の再生機構をブロックする場合があります。

同じことが物理的な出力デバイスについても言えます。物理的なディスプレイが接続されている必要はありませんが、機能するビデオ デバイス ドライバがインストールされ、オペレーティング システムが画面にレンダリングできる状態になければなりません。たとえば、スクリーン セーバー モードやセッションがロックされている状況では、レンダリングできません。レンダリングできない場合、低レベルの再生は機能せず、高レベルの再生もテスト対象アプリケーション (AUT) で使用するテクノロジに依存しますが、期待通り機能しない可能性があります。

仮想マシン

Silk4J は仮想化ベンダーを直接サポートしませんが、仮想ゲスト マシンが物理マシンと同等に動作する限り、任意の仮想化手法のもとで動作可能です。標準的な周辺機器は、通常は仮想デバイスとして提供されており、仮想マシンを実行するマシンで使用されている物理デバイスとは無関係です。

クラウド インスタンス

自動化の観点からは、クラウド インスタンスは仮想マシンと変わりありません。ただし、クラウド インスタンスでは、ビデオ レンダリングに特殊な最適化が行われている場合があり、ハードウェア リソースの消費を抑えるために、画面のレンダリングが一時的にオフになる状況があります。これは、ディスプレイを表示しているアクティブなクライアントが無いと、クラウド インスタンスが検知した場合に発生する場合があります。このような場合、回避策として VNC ウィンドウを開くことができます。

特殊な状況

ウィンドウが無く起動されるアプリケーション (ヘッドレス)
このようなアプリケーションは、Silk4J を使ってテストできません。Silk4J は、対象のアプリケーション プロセスにフックして、対話操作する必要があります。ウィンドウが表示されないプロセスをフックすることはできません。このような場合は、システム コマンドの実行のみ可能です。
リモート デスクトップ、ターミナル サービス、リモート アプリケーション (すべてのベンダー)
Silk4J がリモート デスクトップ セッション側に存在し、操作する場合、完全に期待通りの操作が行われます。
注: フル ユーザー セッションが必要で、リモート表示ウィンドウは最大化されている必要があります。リモート表示ウィンドウが何らかの理由で表示されていない場合 (ネットワーク上の問題など)、Silk4J は再生を続けますが、使用されているリモート表示技術によっては予期しない結果を生じる可能性があります。たとえば、リモート デスクトップ セッションが失われると、ビデオ レンダリングに悪影響を与えますが、他のリモート表示手法では、一度表示されたウィンドウが失われても、問題なく表示されるものもあります。

Silk4J がリモート デスクトップ、リモート ビュー、リモート アプリ ウィンドウなどとの対話操作に使用される場合は、Silk4J が見ることができるのはリモート マシンのスクリーンショットだけであるため、低レベルな技術だけが使用できます。リモート表示技術によっては、セキュリティ上の制約により、低レベル操作でさえできないものもあります。たとえば、リモート アプリケーション ウィンドウにキーストロークを送信できない場合があります。

既知の自動化の障壁

Silk4J では、ログオンした対話的なフル ユーザー セッションが必要です。スクリーン セーバー、休止状態、スリープ モードなどのセッションをロックするものは無効化してください。組織の方針などで、これができない場合は、キープ アライブ 操作 (定期的にあるいは各テスト ケースの終わりにマウスを動かすなど) を追加することによって、このような問題を回避できます。

注: 実際のテスト環境の構成や AUT、仮想化、ターミナル サービスで使用される技術によっては、テストの自動化プロセスにおいて、さらなる問題や制約に直面する可能性があります。