Canoo WebTest

概要

Web のテスト用ツールで、Ant のタスクとして提供されています。
タスク定義は http://webtest.canoo.com/webtest/manual/manualOverview.html を参照のこと。

情報

webtestsRunner.xml

概要

Canoo WebTestディストリビューションは、標準で webtestsRunner.xml という、テストをキックするための ant のビルドファイルを提供しています。

必須パラメータ
  • webtest.testfile
    • 実行されるファイル
  • webtest.testdir
オプションパラメータ
  • webtest.config.skipCleanup
    • テスト前に既存の出力データを消さない。
  • webtest.home
ターゲット
  • testSuite
    • デフォルトターゲット
  • init
    • 必須パラメータチェック
  • cleanUp
    • 結果格納用フォルダのクリーンナップ
  • runTest
    • テストの実行
  • formatResult
    • xml ファイルとして生成されたテスト結果の html への変換
testSuiteターゲット実行シーケンス
  1. プロパティ設定
    • ${webtest.home}/lib/taskdef.xml をインポートすることによりタスクを宣言。
    • ${webtest.home} が設定されていなければ、${basedir}/.. に設定。
  2. init
    • 必須プロパティのチェック。${webtest.testfile}、${webtest.testdir} の両方が指定されていなければ失敗処理を行う。
  3. cleanUp ( ${webtest.config.skipCleanup} が設定されている場合は実行されない)
    • ${webtest.testdir}/webtest-results/**/*.*ml に該当する全ファイルが削除される。
  4. runTest
    • ${webtest.testdir} をベースディレクトリとして、${webtest.testfile} で指定されたテスト定義が呼び出される。
    • config要素の属性 summary が "true" である場合のみ、テスト結果の xml ファイルが生成される。
  5. formatResult
    • ${webtest.testdir}/webtest-results/results.xml ファイルを ${webtest.home}/resources/WebTestReport.xsl ファイルにより変換し、results.html を生成。
    • ${webtest.testdir}/webtest-results フォルダに、${webtest.home}/resources フォルダ以下の report.css、showHide.js、images/*.* をコピー。

環境構築

ダウンロード

ホームページから、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 を生成します。

  • カレントフォルダを {root} に移動
  • generateDtd.bat を実行
  • {root}/webtests/dtd/WebTest.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>

Eclipseからの実行

{root}/resources/webtestsRunner.xmlを、以下のプロパティーを設定して実行

  • webtest.home
    • ..
  • webtest.testdir
    • ../webtests
  • webtest.testfile
    • testSuite.xml