Visual StudioでKDTは実現できるのか(2)

「Visual Studio×Excel、できたらいいな。他にも何かできないかな。」と、調べてみました。Visual Studioでもキャプチャ&リプレイの機能があるんですね。対応しているバージョン等の情報はこちらから。職場で使用しているのはVisual Studio 2012 Premiumですが、自宅にあるのは無償のExpress版。残念ながら対応していませんでした。うまくいかなくて困っていたので、家から画像つきでUPしようと思っていましたが、できないので、記憶を頼りに書きたいと思います。

Visual Studioのキャプチャ&リプレイ機能「Coded UI Test(CUIT)」。日本語では「コード化されたテスト」と呼ぶようですが、名詞っぽくないのでCUITと呼ぶことにします。記録できるのはwebだけでなくWindowsアプリケーションももちろん操作可能。おそらくそちらの方が相性がいいかもしれません。webの場合、上に貼ったMSDNのドキュメントには、サポートはIE系のみとありますが、MSエバンジェリストの長沢さんの記事によると、VS2012のUpdate 1でchromeでの実行も可能になったようです。

クロスブラウザでの自動UIテスト~Visual Studio 2012 Update 1

私が担当しているものはブラウザ間のテストは不要なので、ひとまず動作を確認していきます。上の記事に、記録と実行の手順がありましたので、真似てやっていきました。
「コード化された UI テスト ビルダー」がとってもシンプルです。記録するとビルダーの上部に「ボタン1クリック」などの情報が出ますので、操作が記録されている感があります。よくあるキャプチャ&リプレイの罠に「操作が速すぎて記録できない」という問題(現在はもう、大丈夫なのかな?CUITは怪しそうな感じがありました)がありますので、ゆっくり操作するのが吉かと思います。おまじない程度で。ビルダーの表示方法を変えれば、取得したコントローラー情報と、記録一覧が表示されます。アサーションの入れ方もビルダーで楽々のようですが、まずは実行できなければ確認もなにもできないので、コード化して実行してみます。

コードの生成ボタンを押すと、C#のコードがばーーっとできあがります。ビルダーを消すとVSが立ち上がり、できあがったテストコードをビルド、テスト実行すれば、ブラウザが立ち上がり記録した操作を実行してくれる…という手順です。(Visual Studioに不慣れ、開発経験、単体テスト経験のない私にはこれがかなりハードルが高かった…orz)

テスト実行ポチっ。待つこと暫し…エラーになってしまいました。。

記録したのは、ログイン画面での以下の操作です。

  1. ID入力
  2. パスワード入力
  3. ログインボタン押下

1の時点で、Editが操作できない、というエラーをはいているようでした。記録させたのを実行しただけなのに。。
おそらく、オブジェクトのマッピングがうまくいっていないのだろうと予測を立て、できあがったソースコードをひっくり返しました。UIMAPでオブジェクトマッピングが管理されており、エディターで編集ができました。

コード化された UI テスト エディターを使用したコード化された UI テストの編集

こちらのドキュメントにもあるのですが、「UI コントロールの検索」というボタンがあり、それを押すと保持されている情報をもとに、コントロールを特定し赤枠で囲って表示してくれます。エラーを返したEditを検索してみたところ、案の定、おかしなところを指し示しました。そして、パスワード入力用のEditerも同一のものと認識している…階層もおかしいし、編集や追加をしなければ…。

Seleniumだと位置の特定はid属性、name属性、Xpathなどでできますが、Visual Studioでは何で特定しているのかわかりませんでした。とりあえずnameを引っ張って指定してみましたが、「ないよ!」と怒られてしまいました。では、改めてオブジェクトを認識させてはどうでしょう。QTPではエディターから直接オブジェクトを認識させるボタンがあるのですが、見当たりませんでした。ネットで検索してみたところ、以下のリンクが見つかりました。

方法: コード化された UI テスト ビルダーを使用して UI コントロールと検証コードを追加する

アサーションを入れるときの操作ですね。これでオブジェクトの追加ができるようです。ビルダーの方向キーで親子関係にあるコントローラーも取得できるようなので、あっちこっち操作をして認識させてみました。
しかし、結果は変わらず。ボタンの認識はうまくいっていそうなので、ボタンクリックのみの操作を記録し実行したところ、これは成功。しかし、Editだけでなく、同じ画像が使われたボタンも、同一オブジェクトとして認識されてしまいました。階層の編集はいくら調べても見つからずでした(英語が読めないので日本語サイトしか検索していませんが…)
サンプルでwebが紹介されているくらいだし、そんなに梃子摺るところじゃないと思うんだけどな…と思いながらも、すっかりはまってしまったので、諦めて帰宅したのでした。

で、書いていて気が付いたのです。完全サポートしているのはIEだということに。ついSelenium感覚でFirefoxで記録させていました…。月曜日朝一で、IEで確認してみます 。。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中