サポート > Wagby Developer Network(R7) > E2Eテスト > Wagby Testing Framework とは

Wagby Testing Framework (WTF) とは、Wagby で E2E (End to End) テストを作成するためのフレームワークです。 R7.12.1

E2E (End to End) テストとは、システム全体が正しく動作することを確認するものです。具体的には「利用者による画面操作(Web ブラウザの操作)により、想定通りの動作となっていることを確認する」ことを指します。

E2E テストは「総合テスト」フェーズで実施されます。(*1)

多くの開発現場で E2E テストはテスト仕様書を元に、人手でテストを行っています。そのためテスト工数の削減は大きな課題となっていました。さらにプログラム(Wagbyではモデル定義)の修正や、環境のバージョンアップ時にも都度、行う必要があるため、手間がかかっていました。

Wagby Testing Framework (WTF) は、この E2E テストのための「テストプログラム」を開発する枠組みを提供するものです。これによって回帰テストとしても利用することができ、保守コストを削減できます。

Wagby では「単体テスト」は必要ありませんが、仕様どおりに動作するかをチェックするための「総合テスト」は必要です。(*2)
本ドキュメントでは、これを E2E テストと呼びます。
1. 「統合テスト」や「システムテスト」と呼ぶこともあります。
2. カスタマイズコード部分の単体テストは必要です。
  1. Elipse に Wagby を設定します。Eclipse から wagbyapp (Tomcat) の起動と停止が行えるようにしてください。
  2. WTFはGoogle Chrome専用です。https://sites.google.com/a/chromium.org/chromedriver/downloads より Google Chrome 用の chromedriver を取得します。(*1)
  3. (Windows用の) chromedriver_win32.zip をダウンロードしたあと、これを展開し、chromedriver.exe を Wagby インストールフォルダの customize フォルダ直下に保存します。
    図1 chromedriver の配置
1. WebDriverはテストを実行するブラウザのバージョンに合わせたものを取得するようにしてください。
また、ブラウザのバージョンが上がった場合は、必要に応じてWebDriverのアップデートも行って下さい。

複数の開発環境でテストを実行する場合

WebDriverはブラウザのバーンジョンに合わせたものを利用する必要があります。

異なる複数の開発環境でテストを実行する場合はWebDriverはバージョン管理システムの対象外とするほうが好ましい場合があります。 その場合は、WebDriverファイルの配置場所を(customizeフォルダ内ではなく)Wagbyインストールフォルダの直下等に変更し、開発環境に合わせて個別に取得するようにして下さい。

CustomerTestクラスの作成

ここでは「顧客 (customer)」モデルへのテストとして、CustomerTestクラスを用意する例を示します。

Eclipse にて次の設定を行います。

  • 「ファイル > 新規 > その他 > Java > Junit > JUnitテスト・ケース」を開く。
  • ソース・フォルダーを "Wagby-7.12.1/customize/test/java" とする。
  • パッケージを "jp.jasminesoft.wagby.tests.customer" とする。
  • 名前を "CustomerTest" とする。
  • setUpBeforeClass(), tearDownAfterClass() にチェックをつける。
図2 CustomerTest クラスを作成する

空の CustomerTest クラスが用意されます。

図3 空の CustomerTest クラス

最初のテストコードを作成してみましょう。

package jp.jasminesoft.wagby.test.customer;

import static org.junit.Assert.*;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import com.codeborne.selenide.Configuration;
import static com.codeborne.selenide.Condition.*;
import static com.codeborne.selenide.Selenide.*;
import static jp.jasminesoft.jfc.test.support.selenide.Operations.*;
import static org.hamcrest.CoreMatchers.*;

public class CustomerTest {
    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        Configuration.baseUrl = "http://localhost:8921/wagby";
        Configuration.browser = "chrome";// 利用するブラウザ
        // Selenium(WebDriver) 用ドライバファイル
        System.setProperty("webdriver.chrome.driver","customize/chromedriver.exe");
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
    }

    @Test
    public void test() {
        // ログオン
        logon("admin", "admin");
        // メニュー画面が表示されていることを確認
        pageTitle().shouldHave(exactText("メニュー"));

        // ログオフ
        logoff();
        // ログオン画面が表示されていることを確認
        assertThat(title(), is("Wagby アプリケーション ログオン"));
    }
}
図4 最初のテストコード
  • chromedriver.exe を customize フォルダ内に配置したとしています。
  • setUpBeforeClass() メソッドに、開発環境用の設定を実装します。
  • test() メソッドにテスト内容を記述します。

実行

はじめに WagbyDesigner のビルドタブから Wagby アプリケーションを起動します。

図5 アプリケーション(Tomcat)を起動する

起動後、メニューから「実行 > 実行(S) > JUnitテスト」を行います。
ブラウザ (Google Chrome) が起動し、自動テストが行われます。

テスト結果の確認

Eclipse の Junit ビューで結果を確認して下さい。

図6 結果を確認する
Wagby Developer Day 2017