0
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.

ODCのBDD Frameworkを試してみる

Posted at

Forgeに、ODC用のBDD Frameworkが既に登録されていたので、試してみた。
まずは、簡単なテストケースを1つ実装してみて、O11の時との相違点を主にみていく。

環境情報

ODC Studio(Version 1.2.3)
BDD Framework (version 0.1.2)
Template_BDD Framework (version 0.1.3)

感想(まとめコメント)

  • テストの実装方法はO11と変わらず
  • Applicationが無くなったので、BDD Framework本体、テンプレート、API、API用ライブラリと4つのApp/Libraryに分離して別々のForgeコンポーネントとして登録されている
  • O11のBDDFramework Client Sideコンポーネントのドキュメントにあった、Server Actionをテストすると遅くなるという文言は無くなった
  • セキュリティ機能が追加されたので、Settingの設定と呼び出し時のInput Parameter設定が必要

アーキテクチャ変更

O11にはApplicationがあるため、1つのApplication内に本体、Screen Template、カスタムアプリケーションテンプレート、支援用Extensionが含まれていた。
ODCではApplicationが無くなったので、以下4つのApp/Libraryに分離されている。

  • BDD Framework: (Library) テスト用ツールの本体、テストシナリオ作成用BlockやAssert用Actionを含む
  • Template_BDD Framework: (App) BDD Framework用のテストアプリケーションのテンプレート。見た限りでは、O11のカスタムアプリケーションテンプレートに相当する機能はドキュメントには見つからない。が、このAppをインストールするとApp作成時のTemplateとしてこのAppが出てくるため、実装はされているようだ
  • BDD Framework API: (App) BDD Frameworkで作成したテストを起動するREST APIを提供する
  • BDDFrameworkTestRunLib: (Library) API用のLibrary

インストール

ODC Portalでサイドバーの下にあるForge > All assetsをクリック。
image.png
「BDD」などでフィルタし、少なくともBDD FrameworkとTemplate_BDD Frameworkをインストール。

テストAppを作成する

ODC Studioで作業する。

  1. Createをクリック
    image.png
  2. 表示されたダイアログで、Appを選択しContinueボタンをクリック
  3. ダイアログが切り替わり、Appのテンプレートを選択する状態になる。BDD Frameworkを選択しContinueボタンをクリック
    image.png
    4.NameとDescriptionは適当に埋めて「Create app」ボタンをクリック

ここまでで、必要な参照と、テンプレートScreen/Blockを含むテストAppの準備ができた。

テスト用Screen (Test Suite) とBlock (Test Scenario) を作成する

  1. 作成されたAppをODC Studioで開き、画面上部のプラグのアイコンをクリック
  2. 「Add public elements to」ダイアログでテスト対象Actionへの参照を追加
    image.png
  3. Test Suite/Test Scenario用にUI Flowを作成する(Test Scenarioが1つのテストケース、Test Suiteは複数のTest Scenarioをまとめたもの)
    image.png
    (Test Scenarioが増えてくると、ScenarioとSuiteが同じUI Flowにあるとみにくくなるので、それぞれに別のUI Flowを作成している。1つにまとめる案もある)
  4. ScreenTemplates UI FlowからTest Scenario用Blockをコピーして、↑で作ったTest Scenario用UI Flowに貼り付け。名前は適当に変更する
    image.png
    (ScreenTemplatesの下には、以下の3種類のテストケースに対応するTest Suite/Scenarioのテンプレートがある
  • 単独のテストケース:New_Suite/Scenario
  • DataDrivenテストケース(テストケースはStatic Entityで定義):DataDrivenDbScenario_Suite/Scenario
  • DataDrivenテストケース(テストケースはExcelで定義):DataDrivenXlsScenario_Suite/Scenario

5.. ScreenTemplates UI FlowからTest Suite用Screenをコピーして、↑で作ったTest Suite用UI Flowに貼り付け。名前は適当に変更する。Screen内にTest Scenario向けBlockが配置されているが、参照先がTemplateになっているため、↑の手順で作ったBlockに差し替える

AuthToken:追加されたセキュリティ

ここまでに作成したScreenを右クリックして、Open in Browserを選択すると、ブラウザ上で画面が開き、テストの実行結果が表示される。それはOutSystems 11の時と同じ。

まだテストそのものは実装していないため、ほぼ空で表示されるはず……だが、実は以下のエラーメッセージが表示される。
image.png

これは、ODC版のBDD Frameworkの新機能。Setting (O11のSite Propertyに相当)のAuthenticationSecretTokenの値を、ScreenのAuthToken Input Parameterに渡さないと発生する。

このAuthenticationSecretTokenというSettingは、BDD FrameworkがLibraryであることから、参照側のテストAppをODC Portalで開いて設定する。
なお、Is Secret=YesのSettingはデフォルト値がないため、何らかの設定を行う必要がある。

image.png

テスト実装

ここは、OutSystems11の時とあまり変わらない。
Static Entityを使ったData Drivenなテストを例に実装手順を示す。

  1. コピーしてきたScreenに初期設定されているAggregateにはOrderが指定されていないので、IdかOrder Attributeでソートされるように設定しておく
  2. Static Entityを利用するテストの場合、1レコードが1つのテストケースに該当する。テストケースに必要な値をAttributeとしてStatic Entityに追加しておく
    (例:黄色で塗ったAttributeを追加した。Whenで呼ぶActionに渡すものにInput_、ThenでAssertに使うものにOutput_のプレフィックスをつけている)
    image.png
  3. テストケース数分のレコードを定義しておく
    image.png
  4. Test Scenarioに対応するBlockの実装を行う
    1. ScenarioIdentifier PlaceholderにはTestData Input ParameterのId Attribute、ScenarioDescription PlaceohlderにはTestData Input ParameterのScenarioNameを配置。その他のPlaceholderには必要に応じて配置する
      image.png
    2. Screen配下の5つのClient Actionにテストを実装する。詳細は、OutSystems 11のBDDFramework向けの記事を参照してほしいが、少なくとも、c_When (テスト対象Actionを実行する)とd_Then (テスト結果に対してAssertする)は実装することになる
      (c_When内でのテスト対象Action呼び出し例。Input ParameterにStatic Entityのレコードから受け取った値を渡している)
      image.png

(d_Then内でのAssert例。Static Entityから来た値とc_Whenの実行結果を突き合わせている)
image.png

0
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
0
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?