準備と実行

最終更新日: 2021年11月22日
R8 | R9

customizeフォルダの準備

Chrome Driverを配置する

  1. はじめに、テストを動作させるため、Chrome Driver (WebDriver for Chrome) ファイルを取得してください。次の URL からダウンロードできます。
    https://sites.google.com/a/chromium.org/chromedriver/downloads
  2. ダウンロードしたファイルを展開します。Windows OS の場合、chromedriver.exe になります。
  3. 展開したファイルを Wagby インストールフォルダの customize フォルダ直下に保存します。

tsmフォルダの作成

インストールフォルダ直下の customize/test フォルダに "tsm" フォルダを作成します。

環境設定ファイル

customize/test/tsm フォルダに "env.def" という名前のファイルを用意します。

内容は次のようにします。

:baseUrl: "http://localhost:8921/wagby"
:headless: "false"
:fastSetValue: "false"
:outputStatus: "false"
:webdriver.chrome: "customize/chromedriver.exe"
命令 説明
:baseUrl: :baseUrl: "http://localhost:8921/wagby" 起動しているサーバのURLを指定します。省略時は "http://localhost:8921/wagby" です。
:headless: :headless: "false" ヘッドレスモードで実行します。省略時は false です。
:fastSetValue: :fastSetValue: "false" 入力時、文字を一括入力します。パフォーマンス向上につながります。省略時は false です。
:outputStatus: :outputStatus: "false" コンソールからテストを実行したとき、今実行している命令をコンソールに出力します。どの命令によって画面操作されているかをコンソールで把握します。
:webdriver: :webdriver.chrome: "customize/chromedriver.exe" WebDriverを指定します。省略時は customize/chromedriver.exe です。
:timeout: :timeout: 8000 ブラウザからの反応がないかどうかを判断するタイムアウト値を指定します。単位はミリ秒です。省略時は 4000 (msec) です。

env.def ファイルが存在しない場合、すべて上記のデフォルト値が使われます。

プロパティファイル

misc/build.propertiesに記述できる設定は次の通りです。標準値でよい場合、修正する必要はありません。

設定できること デフォルト値
wagbyapp (Tomcat) の起動待ち時間(秒) tomcat.start.sleep.seconds=120 180
junitテストクラス suiteClasses=jp/jasminesoft/wagby/**/*Test*.java jp/jasminesoft/wagby/tests/AllTests.java
junitレポートファイルの出力フォルダ junit.output.dir=c:/tmp/report work/target/junit

サンプルのテストシナリオ

同じく tsm フォルダに、拡張子 ".tsm" というファイルを一つ以上、用意します。

1つの tsm ファイルから、1つのテストクラス (javaファイル) が生成されます。ファイル名は任意です。複数のテストシナリオを用意する場合、tsm フォルダに複数のファイルを用意します。

tsm = Test Scenario Macro

ここでは、はじめてのテストシナリオとして、アプリケーションにログオンし、ログオフするだけの簡単なマクロを用意してみます。このファイルを LogonTest.tsm という名前で、tsm フォルダに保存してください。

= はじめてのテスト
:group: "t001"
:id: "LogonTest"
== ログオンのテスト
ログオン "admin" "wagby"
ページタイトル? "メニュー"
== ログオフのテスト
ログオフ
タイトル? "Wagby アプリケーション ログオン"
このテストシナリオには、記述するためのルール(文法)があります。文法の詳細は次ページで説明します。

注意

文字コードは UTF-8 で保存してください。(それ以外の文字コードで保存すると、ビルドエラーになります。)

テストを実行する

ここまでで、次のファイル構成となっています。

customize
 |
 |- chromedriver.exe
 |- test
     |
     |- tsm
         |
         |- env.def
         |- LogonTest.tsm

ダウンロード

env.def と LogonTest.tsm を含んだファイルをダウンロードできます。

ダウンロード後、customize/test/tsm フォルダに展開してください。

テストコードの生成

今回はログオンとログオフのテストのみのため、モデルは定義しなくてもよいです。まだフルビルドを行っていない場合は、フルビルドを行ってアプリケーション (wagbyapp) を用意してください。

コンソールを開きます。misc フォルダで、次のコマンドを実行します。

> lib/ant wtf.clean wtf.gentest wtf.build

tsmファイルが存在すると、テストプログラムの自動生成とコンパイルが自動的に行われます。

図1 コマンドの実行
図2 テストプログラムの自動生成が完了
生成されたテストプログラムは次の場所に生成されます。
wagbydesigner/webapps/wagbydesigner/WEB-INF/env/work/srcgen/test/jp/jasminesoft/wagby/tests/t001/LogonTest.java

実行

テストを実行します。misc フォルダで、次のコマンドを入力します。ビルドしたアプリケーションが起動され、テストが自動実行されます。テスト終了後、アプリケーションが停止します。

> lib/ant tomcat-start wtf.test wtf.junitreport tomcat-stop
図3 テストを実行する
図4 テストの実行中(ブラウザが自動で操作されている)
図5 テスト終了

テスト結果の確認

Wagbyインストールフォルダ直下に work/target/junit/index.html が用意されています。このファイルをブラウザで開きます。

図6 Junitによるレポート

macOSの場合

macOS Catalina で動作させる場合の手順は次の通りです。

  1. Mac版のChromeDriverを入手します。
  2. 展開した chromedriver を customize フォルダに保存します。
  3. env.def は次のように記述します。拡張子 ".exe" を含めません。
    :webdriver.chrome: "customize/chromedriver"
    
  4. customize/chromedriverを事前に起動します。コンソールで起動すると次のようなメッセージが表示され、待ち受け状態となります。
    Starting ChromeDriver 80.0.3987.106 (f68069574609230cf9b635cd784cfb1bf81bb53a-refs/branch-heads/3987@{#882}) on port 9515
    Only local connections are allowed.
    Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
    
  5. Wagbyアプリケーション (wagbyapp) を起動します。
  6. miscフォルダにて、コマンドを実行します。
    > ant wtf.test wtf.junitreport
    
  7. テスト終了後、Wagbyアプリケーション (wagbyapp) を停止します。

トラブルシューティング

テストの動作が不安定になる

テストシナリオが途中で失敗したとき、不安定になる場合があります。Windows OS の場合、タスクマネージャを確認してください。chromedriverというプロセスが大量に残っている場合、マシンを再起動することで問題が解決する場合があります。

モデル名に全角記号を使うと実行エラーになる

モデル名に全角記号を含めないようにして再度、実行してください。