2009年9月9日水曜日

Firefox add-on Selenium IDEでWebテスト再び

だいぶ前にブログでも書いた気がしますが、
ちょっと前から「Seleniumスゲー」「っていうかやるべき」「なんかGroovyで書き出せるらしい」と、盛り上がってまして、
使用前、使用後で自分自身どう変わったかというと、Grailsで何か作るときに、
・コントローラーの中に、初期データ取り込みのアクションを書いていた自分
・新規登録ボタンをクリックして、各フィールドにテストデータを入れていた自分
そんな自分が、なんと、
・Seleniumでテストを書いている
そうなんです、いちいちブラウザでテストデータとかを登録しなくなった。

これは快適です。生産性が上がってます、確実に。

使ってみたい人は、ここに詳細があります。

で、今日たまたま山本さんもおらんので、開発メンバーのテーブルでちょっかい出しながら、何かやっていたのですが、何やら対面の部長から、Kムーに指示が。
「このサイトで、こうやるとこうなるかチェックして欲しいんだけど…」
とリストが渡されました。
「これはキタ」と思ったので、Seleniumでやるといいよ、と助言したんですが、
とりあえず急ぎらしく舐めるようにやってました。
そして、次の指示…
「じゃ、こうなったときも」と追加指示。
「ホントにキタ」と思うや「だからSelenium使えばいいのにっていったのにー」
と椅子を何度か叩いてみました。
最初から使っていれば、ちょっと追加、変更するだけで使い回せるんですよね。
Webテストだと見た目でのテスト、ユーザの立場としてブラウザのテストなだけに、
絶対何度もやるハメになります。

でも、テストのテスト的にしか使ってなかったので、実際「業務」としてやるとどうなんだろうと、一緒にやってみました。
そこで今回使ったのは、以下のコマンド。
多分これらを使いこなせば大抵のことはできそうです。
※コマンドを全部見てるとくらくらするぐらい沢山あります。

・ページを開く(遷移する)
コマンド:open
対象:ベースURL以降に行きたいページを入れる

・文字を入力する
コマンド:type
対象:エレメントID
値:入力する文字

・ボタンをクリック
コマンド:clickAndWait
対象://input[@value='ログイン'] 
「//」は、XPathの始まり。この場合、inputタグでvalueがログインになっているところをターゲットにしている。firebugで対象を調べると楽ちん。

・そのページの中に指定した文字があるかどうか
コマンド:assertText
対象://h1
値:ログインしてください。

・そのページのURLが指定したものを一致しているか
コマンド:verifyLocation
対象:そのURL

・今いるページの画面キャプチャをとる
コマンド:captureEntirePageScreenshot
対象:保存するパスとファイル名
例えば、/work/project/webtest/shot01.pngとか。

完璧です。テストが通るとガスター10なみにスッキリします。
テスト結果をとっておくなら、とりあえずログをコピペなんだろうか、、、

最初、Seleniumの存在は知っていても、「仕様変わるから、今テスト作っても無駄になるもん」と思ってました。
でもこれは大きな間違い。そういってたらいつまでたっても書けない。
面倒か、無駄か、と言われると、絶対にそうじゃないと言えます。
変わるからこそテストを書く必要がある。

仕様が変わったら、コードの中身を変えたら、テストも合わせて変えればいいんです。
だって、コードを書き換えたら、ブラウザでのチェックって絶対やりますよね。
そういうとき、絶対「あああ」とか「test」とか沢山うってるはずです。
そして確認作業は、コンディションによってとっても左右されます。
だから機械的にやるべき。Don't Repeat yourself!ですよ。

2009年9月3日木曜日

InDesignCS3か4で表をエクセルとリンクさせる

マニュアルとか読んでないので、間違ってたらごめんなさい。

「InDesign上の表と、エクセルで作った表をリンクさせる」という結構、夢広がる機能ですが、
ちょっと触ってみた感想です。

方法としては、「InDesignの勉強部屋」の「表スタイル・セルスタイル 」にあります。

データ更新は、エクセルの更新日とInDesignに配置したときの日付で差分をみてるようです。

これの使いどころは、以下
・表の形がだいたいパターン化できそう
  ※全部ばらばらなら、最初の取り込みの時だけ楽しいです。

・結構たくさんあるとき
  ※1、2個なら何も考えずに作った方がいいです。

・セル内の文字に対して、文字スタイルを付ける必要がない
  ※正規表現スタイルとかでいけてしまうならOKかと。
  ※リンク更新すると、単純につけた文字スタイルはとれてしまいます。

・結構データ更新が多い(多そう)

なので、
 表・セルスタイルでばっちり作れるなら、是非やるべき。
 これはお客さんにも校正や制作速度においてメリットがあるので、ちゃんと出来ること、出来ないこと、やっていいこと、やっちゃいけないことを説明してお客さんを巻き込んでやらなければいけないです。

しかし、以下とっても大事なこと
 アプリを信用しないこと。
 何かあってもアプリのせいにはできません。
 ちゃんと確認することは変わらず大事です。
 ただそれがちょっと楽になるというところです。

DTPって
 なかなか手順というのが揃えにくいものですが、こういう良い機能があるなら、
せめて表のところだけでも仕様を決めてやると、楽しくなりそうですね。