だいぶ前にブログでも書いた気がしますが、
ちょっと前から「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!ですよ。
0 件のコメント:
コメントを投稿