CanooWebTestでのウェブテスト例

ここでは私が作成したCanoo WebTestでのテスト例を載せてみます。

ウェブテスト例

静的ページのテスト

私は最初のテストとして最低限、すべてのURLにアクセスしてタイトルだけ確認します。
これだけでも、サーバーエラーが起きる状態になっているのを知ることができます。

静的ページのテスト

<?xml version="1.0"?>
<!DOCTYPE project SYSTEM "../dtd/Project.dtd">
<project default="test">
<target name="test">
<webtest name="静的ページ">
<config browser="ff3"/> 

<invoke url="http://localhost:8080/menu.jsp" />
<verifyTitle text="メニュー" />
<invoke url="http://localhost:8080/input.jsp" />
<verifyTitle text="入力" />
<invoke url="http://localhost:8080/output.jsp" />
<verifyTitle text="出力" />

<invoke url="http://localhost:8080/search.jsp" />
<verifyTitle text="検索" />
<invoke url="http://localhost:8080/edit.jsp" />
<verifyTitle text="更新" />
<invoke url="http://localhost:8080/delate.jsp" />
<verifyTitle text="削除" />
</webtest>

</target>
</project>

入力から削除


まずは、storeRandom タスクで ランダムで名前を作成しています。
(この方法で作成したプロパティーは#{name} という形で指定します。

ランダムで値を作成するとユニークな値になり検索で拾いやすくなります。
同じ名前だとすでにデーターが登録されていたりしてテストを間違ってパスしてしまいます。

 まずは入力画面で必須項目を入れたら、サブミットします。
私の場合は、タイトルでなくhiddenのMODEの値で確認画面かどうか判別しています。
そしてサブミットして登録します。

 あとは検索画面で作成した名前で検索して、表示して更新した後に削除しています。
データーを残すと問題なので入力と削除は一つのテストにした方がいいでしょう。
また、検索や更新機能もあるならば、同時にテストすると楽です。


入力から削除まで

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE project SYSTEM "../dtd/Project.dtd">

<project default="test">

<target name="test">

<webtest name="入力 BasicA">
<config browser="ff3"></config>
<enableJavaScript enable="false"/>
<storeRandom property="myTitle" length="10"/>
<echo>#{myTitle}</echo>
<group description="input">
<invoke url="http://localhost:8080/regist/form" />
<sleep seconds="1"/>
<verifyTitle text="入力 - ユーザー登録" />
<setInputField name="username" value="#{myTitle}"/>
<setCheckbox name="sex" checked="true"/>
<setSelectField name="age" value="20"/>
<clickButton id="gwtsubmit"/>
<verifyInputField name="MODE" value="newexec"/>
<clickButton id="gwtsubmit"/>
<verifyTitle text="入力"/>
</group>
<group description="show">
<invoke url="http://localhost:8080/regist/search?_action=show"/>
<setInputField name="username" value="#{myTitle}"/>
<clickButton label="送信"/>
<verifyTitle text="検索 - ユーザー登録"/>
<clickButton label="表示"/>
<verifyTitle text="検索 - ユーザー登録"/>
</group>
<group description="edit">
<invoke url="http://localhost:8080/regist/search?_action=edit"/>
<setInputField name="username" value="#{myTitle}"/>
<clickButton label="送信"/>
<verifyTitle text="更新 - ユーザー登録"/>
<clickButton label="更新"/>
<verifyTitle text="更新 - ユーザー登録"/>
<setSelectField name="age" value="17"/>
<clickButton id="gwtsubmit"/>
<verifyInputField name="MODE" value="newexec"/>
<clickButton id="gwtsubmit"/>
<verifyTitle text="入力"/>
</group>
<group description="delate">
<invoke url="http://localhost:8080/regist/search?_action=delate"/>
<setInputField name="username" value="#{myTitle}"/>
<clickButton label="送信"/>
<verifyTitle text="削除 - ユーザー登録"/>
<setCheckbox name="del" checked="true"/>
<clickButton label="削除"/>
<verifyTitle text="メニュー"/>
</group>
</webtest>

</target>
</project>



Ant文法に付いて

Propertyタグ

ここではローカルのWebと実際のWebとの書き換えが楽なように、nameとvalueを使って値をしています。
ただし、ファイルからプロパティーを読み込むこともできますので、大量のテストの場合はファイル使う方法の方が楽でしょう。

Comments