2014年12月11日木曜日

seleniumを使う①

Webの自動テストをやろうと思う。要件としては以下のとおりだ。

  • ターゲットはWebのUI系のテストの自動化
  • テスト内容は同一だが各種ブラウザでのテストがある。
  • 開発者の個別環境で実施するのではなく、サーバー上でテストを自動実施したい
  • jenkinsと連携させてリポジトリが更新されたらテスト実行を行う
途中はすっとばすがseleniumというWebのUI系の自動テストツールが使えるかもしれないということで調査することにした。
こいつはFireFoxのプラグインとして動作してSelenium IDEというツールでユーザー操作を記録し、それをテストコードとして自動実行させることができるらしい。

というわけでまずはダウンロードしてみた。

FireFoxで上記リンクを叩くと、自動的にselenium IDEがインストールされる。


←インストールされると、このようなアイコンがFireFoxのアドレスバーあたりに追加される。

テストスクリプトの作成

FireFoxのツールバー上にselenium ideのアイコンが表示されるのでそれをクリック。
表示された画面の赤丸ボタン(記録ボタン?)をクリックした後、ブラウザを操作
→テストスクリプトが自動生成される。

必要に応じてファイルに保存する。
※ここで一旦テストが通るかどうかの確認を行う。

VisualStudio.Netのテストプロジェクトで実行する

作ったテストスクリプトを今度はVisualStudio.Netのテストプロジェクトから実行させるという話。

テストケースのエクスポート

作成したテストケースをselenium IDEでオープンした状態でselenium IDEの以下のメニューを選択

ファイル > テストケースをエクスポート > C# / NUnit WebDriver

保存先を指定してテストケースを保存する。

VS.NETで単体テストプログラムの作成

VS.NETの新規プロジェクトを作成する。
→ Visual C# > 単体テスト プロジェクト

Nugetのパッケージマネージャコンソールを起動
→VS.NETのツール > NuGetパッケージマネージャ > パッケージマネージャコンソール

※ VS.NETのバージョンによっては拡張パッケージマネージャというタイトルかも知れないです。

でコンソールウインドウが表示。そこに

Install-Package Selenium.WebDriverBackedSelenium -Version 2.43.1

を入力する。

VS.NETのテスト用に書き換えする。

selenium IDEで吐き出したテストコードはNUnit用なのでVS.NETで使うには幾つか書き換えが必要。
基本的にはテストクラス/メソッドの属性を以下のように書き換えを行う。

TestFixture → TestClass
SetUp → TestInitialize
TearDown → TestCleanup
Test → TestMethod

参照設定を追加しておく。

https://code.google.com/p/selenium/downloads/detail?name=selenium-dotnet-2.39.0.zip&can=1&q=

上記の「selenium-dotnet-2.39.0.zip」をダウンロードして展開しておく。
↑で作ったプロジェクトに展開して生成されたアセンブリを参照設定に加えておく

※ for_dotnet\selenium-dotnet-2.4.1 を使っても良いです。

jenkinsで実行させる

次はjenkinsで動かすための設定だ。
jenkinsから直接ブラウザを起動するのは難しいので、NodeとなるクライアントPC(仮想でも可)を用意して、実際のテストはそっちでやらせるようにする。
WebDriver RCが必要になると思う。続きはまた今度





2014年12月4日木曜日

SQLサーバーでアカウントロックされてしまったケースの対応

マネージメントスタジオがインストールされておらず、saアカウントしかなかったため復旧に手こずったのでメモ
コマンドプロンプトでの対応方法


  1. サービスを終了させる
    net stop mssqlserver
  2. サービスをシングルユーザーモードで起動させる
    net start mssqlserver /f /m
  3. osqlを起動
    osql -E
  4. saアカウントを有効にする
    ALTER LOGIN sa ENABLE
  5. sqlサーバーを再起動
    net stop mssqlserver
    net start mssqlserver

これで、外部のPCからマネージメントスタジオでログインすることができるようになった!!
ちなみに、Windows2003だったので2008以降は管理者権限でコマンドプロンプトを起動させる必要があると思います。

2014年11月22日土曜日

Windowsサーバーのタスクスケジューラーで嵌った件

あるシステムで嵌った話。
(Windows)サーバー上で常駐起動するプログラムがあって、その起動をタスクスケジューラーで
ログオン時に起動する設定にしていた。
→普通のウインドウを持つプログラム。EUDC外字を使う関係上セッション0では正しく動作しない。
→詳しくはこちらが詳しい。

システム更新作業があって、再起動を実施。実施後正しく起動していることを確認した。

その3日後、客先から急に連絡が入ってきて、プログラムが動作していないとのこと。
よくよく調べてみると誰かが勝手にプログラムを終了していた。
→しかも異常終了ではなく普通にウインドウを閉じたような終了だった。

原因を調査してみるとどうやらタスクスケジューラーの仕様で、デフォルトの設定では
3日以上連続稼働しているプログラムは強制終了させる設定になっていることが原因だった。



  • 「タスクを停止するまでの時間」の設定があると勝手に終了する。


これからは気をつけよう。というかデフォルトの設定がおかしい気がする。


2014年10月23日木曜日

ubuntuの自分環境を作るための覚書

ubuntuの環境を作るための覚書

ubuntu 14.04で自分用環境を作る覚書
一応、ソース管理兼、実験用兼、メールサーバーを兼ねているようなサーバーです。

開発ツールの設定


sudo apt-get install build-essensial
ubuntu14.04の場合、gcc 4.8.2がインストールされる。

apacheの導入

sudo apt-get install apache2
でひと通りインストールされる。

ssl(オレオレ証明書)の設定

開発テストでとりあえず、httpsが必要なのでオレオレ証明書を作っておく。
以下の手順でインストールする。
  1. OpenSSLを入れる
    sudo apt-get install openssl
    でインストールする。
  2. apacheを設定する
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    を行なう。
    a2ensiteで443のバーチャルホストの設定ファイルのシンボリックファイルが/etc/apache2/sites-enabled/ssl-defaultに生成される。
    a2enmodで、sslモジュールが使用できるようになる。
  3. 証明書の作成
  4. Virtual Hostの設定

メールサーバーの設定

postfixを入れる

sudo apt-get install postfix
でメールサーバーがインストールされる。
main.cfを編集し、

dovecotを入れる

メールをクライアントから受診するためにdovecotを使う。
これも

sudo apt-get install dovecot-core dovecot-pop3d

でインストールする。
今回はpop3を使うので上記の通り。imapを使う場合は「dovecot-imapd」も一緒にインストールすること。
色々いじったような気がするけど忘れてしまった。。。。

monoの導入

sudo apt-get install mono-complete

でインストール。→無駄に全部はいるけど無視
asp.netを使うためにmod_monoも入れる。

sudo apt-get install libapache2-mod-mono

でインストールされる。
自分でソースを落としてきてmake installしてもいいけど、apache2の設定が面倒なのでapt-getしちゃった方が楽。
但し、monoのバージョンは3.2.8(2014/10/23現在)になる。

gitの導入

リポジトリの作成

sudo mkdir /srv/git
sudo cd /srv/git
sudo git init --init --bare [リポジトリ名]

で新規にリポジトリを作成する。

apacheから公開するために

chmod -R 0777 [リポジトリ名]

でapacheからアクセス出来るようにしておく。
作成したgitリポジトリのディレクトリ直下に「git-daemon-export-ok」というファイルを置いておかないとリモートからpushできなくなるので注意!!

リポジトリの公開

作成したリポジトリをapacheで公開する。

sudo vim /etc/apache2/sites-enabled/git.conf

SetEnv GIT_PROJECT_ROOT "/srv/git"
SetEnv GIT_HTTP_EXPORT_ALL

ScriptAlias /git/ "/usr/lib/git-core/git-http-backend/"
SetEnv REMOTE_USER $REDIRECT_REMOTE_USER
<Directory "/usr/lib/git-core">
  Options +ExecCGI
  Require all granted
</Directory>
<LocationMatch "^/git/.*/git-receive-pack$">
  Options +ExecCGI
  Require all granted
</LocationMatch>
<LocationMatch "^/git/.*/git-upload-pack$">
  Options +ExecCGI
  Require all granted
</LocationMatch>

を作っておくと、/git/以下はgitのリポジトリとして処理してくれる。

postgresの導入

sudo apt-get install postgresql
でインストールされる。

pg_hba.confの編集

ローカルのアプリケーションから使うために、pg_hba.confの設定を行なう。

sudo vim /etc/postgresql/9.3/main/pg_hba.conf

でpg_hba.confファイルをオープンする。

local   all   all    127.0.0.1/32  trust

に変更する。変更元はtrustの部分がmd5になっているところ。