Canoo WebTest
概要
Web のテスト用ツールで、Ant のタスクとして提供されています。
タスク定義は http://webtest.canoo.com/webtest/manual/manualOverview.html を参照のこと。
情報
- ホームページ
- izu さんのページ
- 私が Canoo WebTest を最初に知ったのは izu さんのページでした。JSF 関連でもお世話になってます。
- http://izu.shinzui.org/
webtestsRunner.xml
概要
Canoo WebTestディストリビューションは、標準で webtestsRunner.xml という、テストをキックするための ant のビルドファイルを提供しています。
オプションパラメータ
- webtest.config.skipCleanup
- テスト前に既存の出力データを消さない。
- webtest.home
- webtestディストリビューションの絶対パス(xsltのためのリソースを検索するために必要)。デフォルトは ${basedir}/.. となる。
ターゲット
- testSuite
- デフォルトターゲット
- init
- 必須パラメータチェック
- cleanUp
- 結果格納用フォルダのクリーンナップ
- runTest
- テストの実行
- formatResult
- xml ファイルとして生成されたテスト結果の html への変換
testSuiteターゲット実行シーケンス
- プロパティ設定
- ${webtest.home}/lib/taskdef.xml をインポートすることによりタスクを宣言。
- ${webtest.home} が設定されていなければ、${basedir}/.. に設定。
- init
- 必須プロパティのチェック。${webtest.testfile}、${webtest.testdir} の両方が指定されていなければ失敗処理を行う。
- cleanUp ( ${webtest.config.skipCleanup} が設定されている場合は実行されない)
- ${webtest.testdir}/webtest-results/**/*.*ml に該当する全ファイルが削除される。
- runTest
- formatResult
環境構築
ダウンロード
ホームページから、build.zip をダウンロードする。
環境構築
配布されたファイル群から、必要なファイルのみ抜き出して環境を構築する。説明上、ディストリビューションのルートを {orig} 、これから作成する環境のルートを {new}とする。
- build.zip を展開
- {orig}/lib フォルダを {new} にコピー
- {orig}/resources フォルダを {new} にコピー
今後は、上記で {new} として扱ったフォルダを {root} と表記する。
サンプルテストの実行
サンプル内容
日経新聞のトップページにアクセスできるかどうかを確認するテスト。
テスト定義
- テスト用フォルダの作成
- {root}/webtests フォルダを作成
- テストファイルの配置
- {root}/webtests/testSuite.xml
<?xml version="1.0" encoding="Windows-31J" ?> <project name="testSuite" default="testSuite" basedir="."> <target name="testSuite"> <webtest name="日経新聞トップページアクセステスト"> <config host="www.nikkei.co.jp" port="80" protocol="http" basepath="" summary="true"/> <steps> <invoke description="トップページアクセス" url="/" /> </steps> </webtest> </target> </project>
- Ant実行用バッチファイルの作成
- {root}/testSuite.bat
rem ### javaコマンドの設定 ### set JAVA_HOME=C:\tools\jdk\1.4 set JAVA_CMD="%JAVA_HOME%\bin\java.exe" rem ### javaコマンドオプションの設定 ### set JAVA_OPTS=-Xms64M -Xmx256M set RT_LIB=lib\runtime rem ### オプションの設定 ### set WEBTEST_HOME=%cd% set WEBTEST_TESTDIR=%WEBTEST_HOME%\webtests set WEBTEST_TESTFILE=testSuite.xml set WEBTEST_RUNNER="%WEBTEST_HOME%\resources\webtestsRunner.xml" %JAVA_CMD% %JAVA_OPTS% -cp "%RT_LIB%\ant-launcher.jar" -Dant.library.dir="%RT_LIB%" -Dwebtest.testdir=%WEBTEST_TESTDIR% -Dwebtest.testfile=%WEBTEST_TESTFILE% -Dwebtest.home=%WEBTEST_HOME% org.apache.tools.ant.launch.Launcher -f %WEBTEST_RUNNER%
実行
- {root} フォルダに移動
- testSuite.bat を実行
- {root}/webtests/webtest-results/results.html ファイルを参照し、テスト結果を確認する。
DTDの適用
テスト定義 XML ファイルに DTD を適用することによって、XML エディタの保管機能や、バリデーション等のメリットを得られます。
完璧なDTD作成は不可能
テスト定義ファイルは、将来的にどのようなビルドファイルに発展するか予想できません。そのため、完璧なDTDを作成することは不可能です。この件については、以下を参照してください。
DTDの作成
将来に渡って完璧なDTDを作成することはできませんが、現時点で使用するタスクに限定した DTD は、ant の antstructure タスクによって生成が可能です。
以下に、DTD 作成用のバッチファイルと xml ファイルのサンプルを示します。
- {root}/generateDtd.bat
rem ### javaコマンドの設定 ### set JAVA_HOME=C:\tools\jdk\1.4 set JAVA_CMD="%JAVA_HOME%\bin\java.exe" rem ### javaコマンドオプションの設定 ### set JAVA_OPTS=-Xms64M -Xmx256M set RT_LIB=lib\runtime set WEBTEST_HOME=%cd% set DTD_GENERATOR="%WEBTEST_HOME%\resources\generateDtd.xml" set DTD_ABSOLUTEPATH=%WEBTEST_HOME%\webtests\dtd\WebTest.dtd echo %DTD_ABSOLUTEPATH% %JAVA_CMD% %JAVA_OPTS% -cp "%RT_LIB%\ant-launcher.jar" -Dant.library.dir="%RT_LIB%" -Dwebtest.home=%WEBTEST_HOME% -Ddtd.absolutepath=%DTD_ABSOLUTEPATH% org.apache.tools.ant.launch.Launcher -f %DTD_GENERATOR%
- {root}/resources/generateDtd.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <project name="generateDtd" default="generateDtd" basedir="."> <!-- taskdef definitions. please define taskdefs for the dtd to be generated. --> <import file="${webtest.home}/lib/taskdef.xml"/> <target name="init" description="Checks that needed properties are defined"> <fail message="dtd.absolutepath should be set" unless="dtd.absolutepath"/> </target> <target name="generateDtd" depends="init" description="generates DTD"> <antstructure output="${dtd.absolutepath}"/> </target> </project>
上記のファイルを作成し、以下のように DTD を生成します。
DTDの加工
作成された DTD は、target 要素が2回定義されているため、2回目の target 関連の記述を削除します。(以下例)
<!ELEMENT target EMPTY> <!ATTLIST target id ID #IMPLIED name CDATA #IMPLIED>
テストファイルに DTD を適用
以下のように、テストファイルに DTD を適用し、DTD対応のXMLエディタで参照してみてください。
(手元の環境では、Eclipse上のXMLBuddyプラグインで正常動作を確認しました)
-
- {root}/webtests/testSuite.xml
<?xml version="1.0" encoding="Windows-31J" ?> <!DOCTYPE project SYSTEM "dtd/WebTest.dtd"> <project name="testSuite" default="testSuite" basedir="."> <target name="testSuite"> <webtest name="日経新聞トップページアクセステスト"> <config host="www.nikkei.co.jp" port="80" protocol="http" basepath="" summary="true"/> <steps> <invoke description="トップページアクセス" url="/" /> </steps> </webtest> </target> </project>