2008-12-25

4.seleniumを使ってみよう その③

短期集中seleniumシリーズの第6回目です。
最終回の今回は、便利な使い方を紹介します。

4.6開発言語を使うメリット

テストコードを記述するときに、javaなどの開発言語を用いると、HTMLでは書けなかったような複雑なテスト項目にも、柔軟に対応したテストコードを書くことができます。

例1.繰り返し
20行あるはずのtable要素が、本当に20行表示されているかをチェックする場合、HTMLでテストコードを書くとなると、

assertElementPresent
//table[@id='test']//tr[1]



assertElementPresent
//table[@id='test']//tr[2]



・・・

と20行分書かなければなりませんが、開発言語を用いると、

for(int i=0;i<20;i++)
{
assertTrue(selenium.isElementPresent(“//table[@id='test']//tr[”+Integer.toString(i)+”]”));
}

とコンパクトにテストコードをまとめることができます。


例2.条件分岐
例えば、selenium.isTextPresent(“○×○×”)の戻り値はbooleanです。それなので、
if(selenium.isTextPresent(“○×○×”))
{
assertFalse(selenium.isElementPresent(“××××”));
}
のように、テストの条件分岐も書けます。

例3.変数の活用
テストに変数を取り入れることで動的なテストコードを書くことができます。
ページ遷移後のデータと遷移前のページのデータを比較したいときや、データの表示件数のような仕様が変わりそうな数値など、変数を用いると、テストコードを書きやすくなります。

例4.共通処理
あるページへログインするために、メールアドレスとパスワードの入力が必要だったとします。当然、ログインするユーザーによってメールアドレスとパスワードは違いますが、そのほかの処理、(ログインページを開く→メールアドレスとパスワードの入力をする→ログインボタンを押す)は共通処理になります。
同じ操作をしているのに、そのつど、IDEで操作し記録したものをコピー&ペーストするのは非効率です。
開発言語を使っているのならば、ログイン関数を用意してもっとすっきり書くことができます。

これら例1~4で説明したことを具体的に使って書いたテストコードが下です。
これはとあるソーシャルネットワーキングサービスの日記へのコメント一覧表示機能のテストです。コメント一覧に表示されるコメントの数は50 件、一覧に表示されるコメントの長さは20文字までという仕様のものを、リストで本当に50件、20文字で表示されているかをテストしています。

図7.テストする新着コメント一覧の画面



4.7デバッグ
テストコードを書く人ならば、エラーや失敗が出て、seleniumが中断されてしまった場合、
その原因が本当にテストしているWebページのエラーなのか、または、書いたテストコードが間違っているのかを確認しなければなりません。

4.7.1失敗とエラー
seleniumRCではテストがうまくいかなかったときは、二種類の表示があります。エラーと失敗です。
大まかな違いは、

  • エラー:テストコードに書いてあるとおりのテストをしようとしましたが、”何らかの問題”により、テストそのものを実行できませんでした。
  • 失敗:テストコードに書いてあるとおりのテストをしましたが、テストをした結果、期待した結果が得られませんでした。

です。

”何らかの問題”というのは例えば、locator名が間違っていて、seleniumRCがどこのテストをすればいいのかわからなくなっていることや、コマンドのつづり間違いで、何のテストをしたらいいのかわからないとうことがありえます。


4.7.2エラーor失敗が出てしまったら?

テストを行って、エラーor失敗が出てしまったら、赤枠の障害トレースを確認します。
そこにエラーor失敗の内容が出力され、ダブルクリックをすると、問題のあったテストコード部分に飛んでくれます。
テストコードが間違っているのか、Webアプリケーションの間違いなのかをここで確認しましょう。

図7を見てください。障害トレースの一番下の行をダブルクリックすると、エラーが起きたコマンドをフォーカスしてくれます。


図8.どこでエラーが起こっているのか



しかし、これではエラーが起こっていることがわかるだけで、どうして、エラーになっているかがわかりません。エラーの原因は一番上の行に書いてあります。図9参照。

今回の場合、「コメント削除ログ」というリンクが見つからないというエラーが起きています。



図9.エラーの原因

0 件のコメント:

コメントを投稿