テストケースの作成(1/2)
それでは、実際の記述例をみながらテストケースを作成してみましょう。今回のテスト対象はMyAppというアプリケーションであると仮定します。
ログインのテストケース
上述のログインテストをhtmlで作成してみます。使用するコマンドは次のとおりです。
- URLを開く ……
openコマンド - テキスト入力をする ……
typeコマンド - ボタンをクリックする ……
clickAndWaitコマンド - タイトルを検証する ……
assertTitleコマンド
各コマンドの書式は次のとおりです。
| コマンド | ターゲット | バリュー |
| open | url | なし |
| type | 入力するフィールドのelementLocator | 入力する値 |
| clickAndWait | クリックする要素のelementLocator | なし |
| assertTitle | タイトル文字列 | なし |
以上を用いると、tableは次のようになります。
| Login_test_001 | ||
| open | /MyApp/login.jsp | |
| type | id | 123456 |
| type | password | testpass |
| clickAndWait | button=ログイン | |
| assertTitle | MyAppホーム | |
テストケースのhtmlは次のようになります。
<html> <head><title>Login_Test_001</title></head> <body> <table cellpadding="1" cellspacing="1" border="1"> <tr><td rowspan="1" colspan="3">Login_Test_001</td></tr> <tr> <td>open</td> <td>/MyApp/login.jsp</td> <td></td> </tr> <tr> <td>type</td> <td>id</td> <td>123456</td> </tr> <tr> <td>type</td> <td>password</td> <td>testpass</td> </tr> <tr> <td>clickAndWait</td> <td>button=ログイン</td> <td></td> </tr> <tr> <td>assertTitle</td> <td>MyAppホーム</td> <td></td> </tr> </table> </body> </html>
<head><title>Login_Test_001</title></head> <body> <table cellpadding="1" cellspacing="1" border="1"> <tr><td rowspan="1" colspan="3">Login_Test_001</td></tr>
2行目と7行目でLogin_Test_001と同じ名前をセットしています。テストケース名は必ずしもファイル名とイコールである必要はありませんが、同じ方が分かりやすいです。
7行目の<td rowspan="1" colspan="3">の記述により、tableの「タイトル行=テストケース名」をセル結合しています。
<td>/MyApp/login.jsp</td>
11行目。openコマンドで指定するURLは、アプリケーション名から始まる相対パスを指定します(http://から始まる絶対パス指定も可能です)。
<tr> <td>type</td> <td>id</td> <td>123456</td> </tr> <tr> <td>type</td> <td>password</td> <td>testpass</td> </tr>
16行目と21行目に、htmlのinput要素のname属性、Strutsではhtml:textタグのproperty属性を指定します。
<tr> <td>clickAndWait</td> <td>button=ログイン</td> <td></td> </tr> <tr> <td>assertTitle</td> <td>MyAppホーム</td> <td></td> </tr>
26行目。拡張書式「button=ボタン名」に即して、button=ログインでクリックするボタンを指定します。31行目。ログインして正常に遷移できたか、遷移先画面のタイトルであるMyAppホームを検証します。
画面表示の検証
続いて、画面表示の検証の例に移りましょう。以下の画面を見てください。書籍登録でISBNを入力する画面で、以下の仕様になっているものとします。
- ISBNは半角の数字、またはXのみ入力可能。
- ISBNは10桁入力、または空欄。
- 上記に当てはまらない場合は「error!」表示と共に各エラーメッセージを表示する。
ここでは図のように、上述した条件のうち、2番目の条件(入力桁数)のみ当てはまらない場合のテストケースを作成してみましょう。
テストケースの内容は以下のようになります。
- ISBNを入力する
- [OK]ボタンを押す
- エラー表示を確認する
ISBNを入力し[OK]ボタンを押すところは「ログインのテストケース」と同様です。その後、エラー表示を確認する際に以下のコマンドを使用します。
- 画面に表示されていることを確認 ……
assertTextPresentコマンド - 画面に表示されていないことを確認 ……
assertTextNotPresentコマンド
各コマンドの書式は次のとおりです。assert~はverify~と記述することも可能です。
| コマンド | ターゲット | バリュー |
assertTextPresentverifyTextPresent | 検証する文字列 (表示される文字列) | なし |
assertTextNotPresentverifyTextNotPresent | 検証する文字列 (表示されない文字列) | なし |
2番目の条件のみ当てはまらないということは、以下の入力、および確認をすればよいことになります。
- 入力
- ISBNに数字およびXで9桁入力
- 表示されることを確認
- 「error!」
- 「ISBNは書籍の場合10桁、雑誌の場合空の入力をしてください。」
- 表示されないことを確認
- 「ISBNは半角の数値およびXのみ入力してください。」
テストケースのtableは次のようになります。
| Isbn_test_001 | ||
| open | /MyApp/login.jsp | |
| ……(中略)…… | ||
| assertTitle | MyApp -書籍登録- | |
| type | isbn | 12345678X |
| clickAndWait | button=OK | |
| assertTitle | MyApp -書籍登録- | |
| assertTextPresent | error! | |
| assertTextPresent | ISBNは書籍の場合10桁、雑誌の場合空の入力をしてください。 | |
| assertTextNotPresent | ISBNは半角の数値およびXのみ入力してください。 | |
テストケースのhtmlは次のようになります。
<html> <head><title>Isbn_Test_001</title></head> <body> <table cellpadding="1" cellspacing="1" border="1"> <tr><td rowspan="1" colspan="3">Isbn_Test_001</td></tr> <tr> <td>open</td> <td>/MyApp/login.jsp</td> <td></td> </tr> ……(中略)…… <tr> <td>assertTitle</td> <td>MyApp -書籍登録-</td> <td></td> </tr> <tr> <td>type</td> <td>isbn</td> <td>12345678X</td> </tr> <tr> <td>clickAndWait</td> <td>button=OK</td> <td></td> </tr> <tr> <td>assertTitle</td> <td>MyApp -書籍登録-</td> <td></td> </tr> <tr> <td>assertTextPresent</td> <td>error!</td> <td></td> </tr> <tr> <td>assertTextPresent</td> <td>ISBNは書籍の場合10桁、雑誌の場合空の入力をしてください。</td> <td></td> </tr> <tr> <td>assertTextNotPresent </td> <td>ISBNは半角の数値およびXのみ入力してください。</td> <td></td> </tr> </table> </body> </html>
ソースコードを切り分けて、処理の内容を見ていきましょう。
<html> <head><title>Isbn_Test_001</title></head> <body> <table cellpadding="1" cellspacing="1" border="1"> <tr><td rowspan="1" colspan="3">Isbn_Test_001</td></tr> <tr> <td>open</td> <td>/MyApp/login.jsp</td> <td></td> </tr> ……(中略)……
15行目。……(中略)……の箇所には、ログイン画面からISBN入力画面に遷移するまでの操作を記述します。
<tr> <td>assertTitle</td> <td>MyApp -書籍登録-</td> <td></td> </tr>
17行目~21行目。続いて、ISBN入力画面が開いていることを確認します。
<tr> <td>type</td> <td>isbn</td> <td>12345678X</td> </tr>
22行目~26行目。ISBNを入力します。このテストケースでは数字とXのみで9桁入力します。
<tr> <td>clickAndWait</td> <td>button=OK</td> <td></td> </tr>
拡張書式「button=ボタン名」に即して、button=OKと記述してクリックするボタンを指定します。
<tr> <td>assertTitle</td> <td>MyApp -書籍登録-</td> <td></td> </tr>
32行目~36行目。エラーが発生して入力画面のままであることを確認します。
<tr> <td>assertTextPresent</td> <td>error!</td> <td></td> </tr> <tr> <td>assertTextPresent</td> <td>ISBNは書籍の場合10桁、雑誌の場合空の入力をしてください。</td> <td></td> </tr>
37行目~46行目。表示される内容の検証をしています。
<tr> <td>assertTextNotPresent </td> <td>ISBNは半角の数値およびXのみ入力してください。</td> <td></td> </tr> </table> </body> </html>
47~51行目。表示されない内容の検証をしています。

