さくらVPS上でSeleniumとphp-webdriverを利用する


前回、さくらのVPSにSeleniumとphp-webdriverを実行するための環境を設けた。


あとはJenkinsを入れるだけだ。


環境

さくらVPS 512

Ubuntu 16.04

Java 1.8.0_151

Jenkins 2.76

Selenium 3.7.1

Xvfb バージョンの調べ方わからず

Chromeドライバ 2.33.506092

Chromium 62.0.3202.94

Apache 2.4.29

PHP 7.1.11


Jenkinsのインストールは下記のコマンドで実行

wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

Jenkinsのインストール後、標準設定だとポートが8080なのでブラウザでhttp://IPアドレス:8080を開いてみると



Unlock Jenkinsの画面が表示され、解除するための方法が画面に記載されている。

記載に従って、

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

でパスワードを取得し、Administrator passwordのフォームに入力して、Continueをクリックする。

あとは画面の指示に従いインストールの処理を続ける。


インストール後、



このような画面が表示されるので、

左側にあるJenkinsの管理のリンクをクリックして、システム管理を選び



画面下の方にあるE-mail通知の項目でSMTPサーバとメールアドレスの設定を行う。





続いて、こちらの画面で新しいジョブを作成する。



item nameでジョブ名を入力する。

この時、ジョブ名が実際にテストを行うディレクトリ名になってしまうので、

スペースなしの半角英数字の方が何かと都合が良かったです。


今回はGitでバージョン管理をしているSOY CMS / Shopがテスト対象なので、

フリースタイル・プロジェクトのビルドを選択して作成。


作成後、

標準設定であれば、

/var/lib/jenkins/workspace/以下にsoycmstestというフォルダが生成され、

/var/lib/jenkins/workspace/soycmstest/以下にGitのリポジトリがクローンされます。




続いて、作成したジョブの設定に移ります。



画面左側にある設定のリンクをクリックして設定画面を表示します。

設定画面で設定する項目は、



ソースコード管理でGitにチェックを入れ、

リポジトリURLに普段開発で使用しているリポジトリを入力し、

入力したリポジトリを操作できる認証情報を登録します。



ビルド・トリガでSCMをポーリングを選択し、

スケジュールはヘルプに記載されている内容を参考にして、どれくらいの感覚でポーリングを行うか決めます。


ちなみにビルドというのは、テストを行いたい時に決めたひとまとめの処理の事をビルドといい、

SCMにポーリングは、GitはSVNといったバージョン管理をひとまとめにSCMと呼び、

ポーリングは定期的にSCMに更新がないか確認するための通信方法です。

今回はGitサーバに15分に一度の感覚で更新を調べる設定にしました。


今回はJenkinsのみ動作させるためにVPSを借りていますが、

アプリの裏側でJenkinsを動かす場合は、ポーリングはリソース食いの設定になるので、

夜間のアクセスの少ない時間帯にビルドを実行するように設定すると良いみたいです。



ビルドで一回のテストでどのような処理を行って欲しいか設定をします。

今回はphp-webdriver用のphpファイルを作成しているので、

シェルスクリプトでphpファイルを実行するコマンドのみ登録しました。



ビルド後の処理では、ビルド失敗の時のみ通知メールがほしかったので、

E-mail通知の項目を増やし、自身のメールアドレスを登録しました。


これで最低限の設定は終了。




これからテスト環境でPHPファイルが動作するための設定を行います。

ジョブの作成時に生成されたworkspace内でPHPが動作するようにApacheの設定の変更を行います。

今回はJenkinsのみ動作させるためのVPSサーバなので設定方法は雑です。


テストを実行させるためのディレクトリは

/var/lib/jenkins/workspace/soycmstest/

になります。


このディレクトリにApacheのドキュメントルートを当てます。

sudo emacs /etc/apache2/sites-available/000-default.conf

で設定ファイルを開き、下記のように変更

DocumentRoot /var/www/html

DocumentRoot /var/lib/jenkins/workspace/soycmstest


#<Directory /var/lib/jenkins/workspace/soycmstest/>
#        Options Indexes FollowSymLinks
#        AllowOverride All
#        Require all granted
#</Directory>

のコメントを外し、下記のように修正

<Directory /var/lib/jenkins/workspace/soycmstest/>
        Options Indexes FollowSymLinks
        AllowOverride All
       DirectoryIndex index.html index.php index.htm
       Require all granted
#</Directory>

ファイルの修正後、

sudo /etc/init.d/apache2 restart

でApache2を再起動して、設定は終了。



Jenkinsのジョブの詳細を開き、画面左側にあるビルド実行を押して、テストが開始されるか確認します。

Seleniumとphp-webdriverでUIテストの自動化


これで小さな変更が入る度に、大事な機能が潰れていないか勝手に調べてくれるようになる。

これは小さなことのようで、定期的にリリースしているものであれば非常に大きい。


月700円(VPSサーバの費用)でテスターを一人雇ったようなものだ。