OutSystemsで単体テスト向けに勧められているテストツール、BDDFrameworkの使い方を確認してみます。
BDDとは
Behavior Driven Developmentの頭語。
OutSystemsのオリジナルの用語でなく、TDD(Test Driven Development)からの流れで作られた概念のようです。
テスト駆動開発(オーム社)の付録C 訳者開発にこのあたりの流れの解説がありました。
テストという用語が与える先入観が誤解を与えるとして、
テスト や アサーション といった 語彙 を( 構造 は 変え ず に) 別 の 言葉 に 置き換える こと で、 先入観 による 誤解 を 避け、 TDD 改め BDD の 強み を 最大限 に 引き出す こと を 狙っ た の です。
KentBeck. テスト駆動開発 (Kindle の位置No.5097-5098). Kindle 版.
と再定義されたとのこと。
インストール
Forgeからインストールします。
2018/12/24現在Ver10まで対応ですが、バージョン違いの警告こそ出るものの、Ver11のPersonal Environmentにインストールできました。
ここで書いていくようなことは、ODCのセッションでも説明されたようです。
英語です。YouTubeなので字幕は出せますが。
テストの流れ
- テスト対象モジュールとは別のアプリケーションにテストモジュールを作成します(同じアプリケーションにするとLifeTimeで環境移行するときに一緒に上がってしまうため)
- テストモジュールでBDDFrameworkを参照します
- テストケースの1まとまりごとにScreen(画面)を作成
- 作成した画面にテストケースを作成していきます
- 1ケースに対応するのがBDDScenario Block。これを画面にドロップ
- Givenを用意します
- Givenでは、そのテストケースの前提条件の成立を確認します
- テストケースの前提条件を確認する(また、後で検証に使うデータを保存する)Actionを作ります(名前はケース名_Givenのようにするとわかりやすい)
- BDDScenarioのGiven PlaceholderにBDDStep Blockを配置
- BDDStepのDestinationに用意したActionを設定
- Whenを用意します
- Whenはテストケースの操作部分(○○したら、××する。の○○の部分です)
- 後はGivenの場合と同じ
- Thenを用意します
- Thenは実行結果の検証をする場所です(NUnitならAssertする場所)
- 後はGivenの場合と同じ
- 必要ならSetup, Teardownを用意(同じようにPlaceholderがあります。配置するBlockはSetupOrTeardownStepです
- テストケースの作成ができたら、1-Click Publishしてブラウザで画面を開くとテストケースが実行されます
BDDScenarioにGivenだけ配置した画面
BDDFrameworkを試してみる(2)で1ステップずつ手順を確認してみます。