1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Outsystems】BDDFrameworkを使用したテストの概要

Last updated at Posted at 2023-06-13

はじめに

OutsystemsではBDDFrameworkと呼ばれるテスト用のモジュールが公開されている。

テストを行う際はこのBDDモジュールとテスト対象となるモジュールを読み込んだテスト用のアプリケーションを作成する必要がある。
image.png

ローコードのロジックとテスト対象からインポートしたロジックを組み合わせてテストロジックを作成し結果の整合性を検証してテストを行う。

以下のチュートリアルを実施してみたのでポイントをまとめる
参考:OutSystemsローコードプラットフォームでのBDDテストの完全ガイド

BDDアプリケーションの作成

BDDをForgeからインストールする
Forge:BDDFramework
image.png

New ApplicationからBDD Frameworkを選択しアプリケーションを作成する
image.png

作成したアプリケーションの中では、BDD Frameworkのモジュールタイプが選択できる
このモジュールに組み込まれたテストロジックや検証結果のScreenを使用してテストを実装していく。
image.png

今回のチュートリアルでは既に公開されているECサイトアプリを読み込みテストを実装している
テスト対象のモジュール:eCommerce

BDDアプリケーションに対象のモジュールを読み込む際、ロジックやエンティティの公開範囲がPublicになっていないとインポートできないため注意
image.png

最終的にBDDモジュールとテスト対象を含む構成のテスト用アプリケーションが作成されれば準備が完了
image.png

BDDが準備してくれるUI、ロジック

BDDの機能は

  • 検証結果を表示するためのUI、画面(Screen)
  • 検証を実行するための組み込みロジック

に大別できると感じた。
既存のテストと違いコンソールを使用せず検証結果を画面で確認する

以下はチュートリアルのテスト作成後の確認画面
どこかでエラーや例外が発生すれば設定した詳細情報と共に画面に表示される
image.png

またBDDモジュールに準備されたロジックで予期されれる結果と実際の結果の整合性を検証し画面に出力する
以下はAssertロジックなど
image.png

テストケースを作成する

テストケースは

  1. GIVEN:前提条件
  2. WHEN:ユーザー操作などのトリガー
  3. THEN:期待される結果に
  4. AND:補足して確認する事
    に段階分けして定義する(Gherkin言語と呼ばれているらしい)

例として、
GIVEN:登録データの「顧客名」と「住所」に同じデータがすでに登録されている
WHEN:ユーザーが登録ボタンを押下する
THEN:エラーメッセージ「既に登録済みのデータです。」が表示されることを確認する
AND:データベースにデータが登録されていないことを確認する

参考:OutSystemsでテスト自動化ツール(BDD Framework)を利用してみた

実際テスト用のブロックを使用してスクリーンを作成すると上記の段階ごとにロジックを紐づけるUIが作成される
image.png

ロジックによる検証結果はこれらの画面に紐づき出力される

下記はGivenの段階の「指定した名前の商品がエンティティに存在する」という前提段階を検証するロジックと、結果を出力するためのAsertメソッド
image.png

これを各段階に沿って行う事で1つのシナリオについてのテストを作成する

途中で検証結果に例外が発生した時はこのようにRedが出力され、その後の処理はスキップされる
image.png

疑問に感じた点

  • 実際のモジュールを使用してテストするためエンティティ操作も本当に実行される
    チュートリアルではリールバックのロジックを作成しテスト後に実行していたが、結果としてテストによるDB操作、ロールバックによるDB操作が発生しており、テスト対象のクローンを用意しないとエンティティを壊してしまう恐れがあると感じた。

まとめ

今回はテストを実行するためのツールとしてBDDFrameworkを触りだけ調査した。

BDDFrameworkには、出力を検証するためのロジックと結果を表示するUIが準備されており、テストを作成する際は特定のシナリオをGIVEN、WHEN、THEN、ANDの段階に落とし込み、対応するシナリオを実現するロジックと、検証ロジックを組み合わせる事によって可能になる。

今回調査したBDDFrameworkが実行するテストは、特定のシナリオを実現する複数のロジックを検証する複合テストの内容であったが、使い方によってはロジック単体をテストする事も可能であると感じた。
参考:単体テストおよびAPIテストの自動化

また、これらテストを効果的に実行するためにはシステムをどのような構成でモジュールに分化させるかの設計が重要になるとのことである。
参考:テストを容易にするための開発

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?