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?

【OutSystems】TestingFrameworkを試してみた

Posted at

はじめに

OutSystemsのForgeにある「Testing Framework」を試してみました。
非公開アクションのテストやモックの作成など、開発で役立つ機能が色々あるので、ざっくり紹介します。

動作環境

  • OutSystems(バージョン11)
  • Testing Framework(バージョン4.1.1)

Testing Frameworkとは

Testing FrameworkはForgeで提供されているOutSystemsの自動テストツールで、サーバーアクションのユニットテストを作成できます。
また、モック機能や非公開アクションに対応しているため、柔軟かつ簡単にテストを行えます。

BDD Frameworkとの違い

OutSystemsでは、単体テスト用としてBDD Frameworkの利用が推奨されていますが、Testing Frameworkとは以下のような違いがあります。

  • シナリオ内で変更したデータは 自動ロールバック
  • アクション/サイトプロパティ/クエリ結果のモック化 が可能
  • 非公開(Public = No)アクション に対してもテスト作成が可能

導入手順

実際に使うにはまずセットアップが必要です。以下に導入手順を簡単にまとめます。

  1. Testing FrameworkのForgeページからインストールします
  2. 新規モジュール作成時に TestSuite を選択して作成します
    テストを作成するモジュールと、テスト対象のモジュールは分けて作成します。
    また、モジュールがテスト用であると認識されるよう、モジュール名は「TestSuite」で始まるか、あるいは終わる形式にしておく必要があります。

モジュールはテスト対象単位で作成するのが適切です。

基本的なテストの作り方

ここからは実際にTesting Frameworkを使って、基本的なテストシナリオを作成する方法を見ていきます。

1. TestSuiteの作成

  1. Logicタブから「Integrations」フォルダを開きます
  2. REST要素を右クリックして 「Expose REST API」を選択します
  3. 生成された REST API 要素を右クリックし、「Add REST API Method」を選択します
    生成された REST API Method にテストシナリオのロジックを実装します

2. BeginTestCase の呼び出し

シナリオの最初に BeginTestCase を追加します。
Documentationにテスト要件(目的、前提、期待値の概要など)を書いておくと、将来の保守で役立ちます。

3. テスト対象アクションを実行

テスト対象となるサーバーアクションを呼び出します。

4. 実行結果と期待値が一致するか確認

Assertions(AssertTrue、AssertText など)を使って、実行結果が期待どおりかを検証します。
Server Actions > TestingFramework > Assertions から適切なものを選択して使用します。

以上で基本的なテストシナリオを作成できます。

例外処理のテスト作成方法

次に、例外が発生するケースを想定したテストシナリオの作成方法を紹介します。例として、特定の条件で例外を投げるアクションをテストするシナリオを作成します。

  1. BeginTestCase を配置し、テスト要件を記載します
  2. 例外が発生する入力値を設定して対象アクションを実行します
  3. (任意ですが)例外が発生しなかった場合、想定外の挙動に備えてAssertFail を配置します
  4. 例外発生を検知するため、AllExceptionsHandler を配置します
  5. 例外メッセージ等が期待どおりか、Assertions で検証します

以上の手順で例外処理のテストシナリオを作成できます。

非公開アクションのテスト作成方法

非公開アクションをテストする方法を紹介します。
公開アクションをテストする場合は Manage Dependencies で参照を追加すれば呼び出せますが、非公開(Public = No)アクションは他モジュールから直接参照できません。Testing Framework ではプロキシアクションを作成して間接的に呼び出すことで、通常は参照できない非公開アクションもテスト可能です。

1. 対象モジュール名を取得するアクションの作成(任意)

  1. Server Actions に Refs フォルダを作成します
  2. Refsフォルダーを右クリックし、「Add Server Action」を選択してアクションを追加します
  3. 作成したアクションを右クリックし、「Add Output Parameter」を選択して戻り値を追加します
    • NameModuleName
    • Text
  4. Assignでテスト対象アクションを含むモジュール名を戻り値として設定します

直接モジュール名を文字列で指定しても問題はありませんが、アクション化しておくと再利用できて便利です。

2. プロキシアクションを作成

  1. Server Actions に Proxies フォルダを作成します
  2. Proxiesフォルダーを右クリックし、「Add Server Action」を選択してアクションを追加します
  3. 作成したアクション名は、テスト対象の非公開アクション名の先頭に「ProxyTo」を付けた命名にします
    • 例:テスト対象アクション名がGetTaskStatusの場合、ProxyToGetTaskStatusとなる
  4. 引数と戻り値のシグネチャは、テスト対象の非公開アクションと一致させます
    image.png

3. テストシナリオを作成

  1. BeginTestCase を配置してテスト要件を記載します
  2. ProxyToActionを呼び出し、TargetActionにActionRef({テスト対象モジュール名}, {テスト対象アクション名})と設定します
  3. 作成したプロキシアクションを呼び出して実行します
  4. Assertions で期待値を検証します

これにより、通常は直接呼び出せないアクションに対してもテストシナリオを作成できます。

テスト実行方法

Testing Frameworkの実行方法は「REST APIをコールして実行する方法」と「TestConsoleを利用する方法」の2通りがあります。

REST APIをコールして実行する方法

各テストはREST APIとして公開されるため、ブラウザやPostmanから直接URLをコールして実行できます。

TestConsoleを利用する方法

Testing Framework には TestConsole モジュールが含まれており、テストの実行と管理がブラウザ上から行えます。
実行結果の一覧や個別実行、Suite 単位/全件実行などが可能です。視覚的にわかりやすくテストを管理できます。
image.png

おわりに

この記事では、OutSystemsでのTesting Frameworkを使用したテスト作成の基本について紹介しました。
基本的な使い方をおさえたところで、次はモックを活用したテストの作成方法等も別の記事で紹介する予定です。

参考文献

  • Testing FrameworkのForgeページ
    ※Testing Framework アプリ内の「Template_TestSuite」モジュールに含まれる 2 つの テストスイート に実装サンプルがあります。
    • TestSuite01_GettingStarted
    • TestSuite02_DataDrivenTests
1
0
0

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?