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以降は管理者権限でコマンドプロンプトを起動させる必要があると思います。