最終回の今回は、便利な使い方を紹介します。
4.6開発言語を使うメリット
テストコードを記述するときに、javaなどの開発言語を用いると、HTMLでは書けなかったような複雑なテスト項目にも、柔軟に対応したテストコードを書くことができます。
例1.繰り返し
20行あるはずのtable要素が、本当に20行表示されているかをチェックする場合、HTMLでテストコードを書くとなると、
・・・
と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文字で表示されているかをテストしています。
4.7デバッグ
テストコードを書く人ならば、エラーや失敗が出て、seleniumが中断されてしまった場合、
その原因が本当にテストしているWebページのエラーなのか、または、書いたテストコードが間違っているのかを確認しなければなりません。
4.7.1失敗とエラー
seleniumRCではテストがうまくいかなかったときは、二種類の表示があります。エラーと失敗です。
大まかな違いは、
- エラー:テストコードに書いてあるとおりのテストをしようとしましたが、”何らかの問題”により、テストそのものを実行できませんでした。
- 失敗:テストコードに書いてあるとおりのテストをしましたが、テストをした結果、期待した結果が得られませんでした。
です。
”何らかの問題”というのは例えば、locator名が間違っていて、seleniumRCがどこのテストをすればいいのかわからなくなっていることや、コマンドのつづり間違いで、何のテストをしたらいいのかわからないとうことがありえます。
4.7.2エラーor失敗が出てしまったら?
テストを行って、エラーor失敗が出てしまったら、赤枠の障害トレースを確認します。
そこにエラーor失敗の内容が出力され、ダブルクリックをすると、問題のあったテストコード部分に飛んでくれます。
テストコードが間違っているのか、Webアプリケーションの間違いなのかをここで確認しましょう。
図7を見てください。障害トレースの一番下の行をダブルクリックすると、エラーが起きたコマンドをフォーカスしてくれます。
しかし、これではエラーが起こっていることがわかるだけで、どうして、エラーになっているかがわかりません。エラーの原因は一番上の行に書いてあります。図9参照。
今回の場合、「コメント削除ログ」というリンクが見つからないというエラーが起きています。
0 件のコメント:
コメントを投稿