2016-07-22 12 views
5

まず、何らかの調査をしてもわからない簡単な手順のように見えるので、私はあなたの時間を無駄にしています。Jenkinsを使用してWindowsスレーブでTestStack.White UIテストを自動化

ここで私が達成しようとしているのは、TestStack.Whiteを使っていくつかのUIテストを書いたのですが、Jenkins Slaveで別のユーザーとして実行したいと思います。 Active Directoryでそれらに割り当てられます。

googleで少しの検索を行った後、私は達成しようとしているものに関連する次のリンクを見つけました。

私はジェンキンススレーブにTightVNCにをインストールする必要がありますし、ジェンキンスマスターからスレーブに接続し、スレーブのテストを実行するべきであるように見えます。

私の最初の質問に私はどのように私は正確にジェンキンスの仕事からこれを達成するのですか?

異なるユーザーとしてログインしている場合、これを実現するために「autologon.exe」を使用することができます。だから、Jenkins MasterのWindowsスレーブでこれをどうやってやることができるのだろうか。私の会社はWindowsインスタンス(スレーブマシン)にSSHを許可していないので、Jenkins MasterからSSHをリモート実行することはできません。

私はこれを正しく見ていない可能性があることを理解していますので、どんな助けでも大歓迎です。

時間とアドバイスをありがとうございます。

+1

私は、サーバー上でUIテストを実行する際の主な問題は、インタラクティブセッションを実行する必要があることです。私。インタラクティブなセッションでログインしているユーザがいる必要があります。これは現在ロックされていないか、または「ヘッドレス」ではありません。そうでなければ、多くのことが機能しません。 VMを使用するのが適切なアプローチですが、さらに複雑になります。私たち自身の製品では、UIテストを全くしないことで問題を解決しましたが、代わりにコードの残りの部分を正しいものにするために、独自の抽象化された入力イベントを合成してセッション問題をサイドステッピングしました。 – Joey

答えて

1

すべてのコメントと回答していただきありがとうございますが、基本的にこれは私はそれが私のために働い取得する何をしたかで、

  1. はジェンキンススレーブ上のVNCクライアントとVNC接続を確立し、これはジェンキンスから手動ないで行われました。
  2. "カフェイン"と呼ばれるアプリケーションを使用してウィンドウがロックアウトされないようにするため、F15(xx秒ごと)のキーアップイベントをシミュレートして、プロジェクトのテストタスクに中断はありません。
  3. Windowsの一部としてJenkins Masterと "Caffeine"アプリへのJNLP接続を、VNC Connection経由でログオンします。
  4. VNC接続(ログオフされていない状態)を終了します。これはJenkins経由ではなく手動で行われました。
  5. スレーブでPSExecを使用してビルドを異なるユーザーとして実行します。

これまでのところうまくいきましたが、回答を投稿する前に仕事を数日間監視したいと思っていたので、私は早く返事をしませんでした。

1

私はこれに似たようなことをやっていますが、ビルドマシン(私たちの会社が独自のマシンをビルドした)が前後にTCPリクエストを送信できるように、UIオートメーションアプリケーションに通信レイヤーを構築しています。 UI Automationとビルドを共有に展開してから、仮想マシンを起動します。ビルドマシンテンプレートには、両方のアプリケーションを共有から起動する起動スクリプトがあります。仮想マシンを起動したら、UI Automationアプリケーションと通信して起動するように指示します。これが完了すると、仮想マシンを破棄できます。私は報告目的ですべてのテスト結果をシェアに保存します。

これはあなたの質問に直接答えるものではありませんが、このアプローチはさまざまなオートメーションフレームワークで働いている複数の人から聞いたことです。

私がJenkinsでこれを行うつもりなら、私はJenkinsのプラグインシステムを調べます。私が知る限り、プラグインシステムはJavaを使用しているため、ある種の通信レイヤーを作成して、ある種のVMとインターフェースできるはずです。 VMを起動および停止するオプションがない場合は、リモートマシン上でプロセスを開始および停止する際に、ユーザーとして偽装する必要があります。私はこれがC#で行うことができることを知っていますが、私はJavaでそれを調べていません。

関連する問題