Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[OutSystems] Testing Framework がいい。とてもいい。
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
kata_junn
July 20, 2022
Programming
1.9k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
[OutSystems] Testing Framework がいい。とてもいい。
BDD Framework のやりづらさを黒魔術で解決しよう!
kata_junn
July 20, 2022
More Decks by kata_junn
See All by kata_junn
[OutSystems] ユニットテスト in OutSystems
kata_junn
0
610
O11?ODC?一体何が違うのさ?_v1.0.2.pdf
kata_junn
0
1.6k
[OutSystems] O11 ユーザーに贈る ODC 移行に備えておくと良さそうなコト
kata_junn
0
680
ODC を乗りこなすために理解しておくと良いかもしれないいくつかのこと~Case:External Logic~
kata_junn
0
510
[OutSystems] シン・とりあえず Reactive なプロジェクトにはこれ導入しておくと良い規約
kata_junn
0
320
[OutSystems] OutSystems が誘う Null がない世界の罠
kata_junn
0
1.1k
[OutSystems] CodeceptJS で快適な E2E ライフを送ろう!
kata_junn
0
380
[OutSystems] とりあえず Reactive なプロジェクトにはこれ導入しておくと良いって規約
kata_junn
1
1.8k
[Agile][Scrum] 転リファ
kata_junn
3
11k
Other Decks in Programming
See All in Programming
ソフトウェアラスタライザ
fadis
1
790
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
150
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
210
Foundry Localでエージェント開発
seosoft
0
130
「AI時代、配布するPythonコードをどう守るか: 難読化の実験と判断軸」 #PyconJP2026
pkshadeck
PRO
2
160
Deep dive into the select statement (GopherCon UK)
jespino
0
170
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
260
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
53
35k
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
810
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
3
1k
Building an Out-of-Order CPU
latte72
0
680
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
120
Featured
See All Featured
Embracing the Ebb and Flow
colly
88
5.2k
Deep Space Network (abreviated)
tonyrice
0
290
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
470
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
510
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
230
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
230
Transcript
片野 潤一 アジャイル営業推進部 伊藤忠テクノソリューションズ株式会社 Testing Framework がいい。 とてもいい。
片野 潤一
[email protected]
Java Struts/Spring/MyBATIS 2005 2014 OutSystems Developer@3人(6か月) Developer
&& TL@約10人(24か月) OutSystems 推進 2019 2020 Scrum on AWS Role:Developer TypeScript Serverless Dynamo, Lambda, S3, SQS, Kinesis, Athena Angular 認定スクラムマスター(CSM) AWS Certified DevOps Engineer - Professional OutSystems 資格 8 個(Expert Traditional Web Developer 含む) 好き:リアル脱出ゲーム、低温調理、肉、ゴルフ、スパイス、オクトラ OutSystems OutSystems 推進 Expert Service now!! 2
BDD Framework
None
BDD Framework
BDD Framework Testing Framework
BDD Framework の Developer Experience はどうでしたか?
先端開発者にとっての働きやすい環境と高速な開発を実現するための文化・組織・シ ステムが実現されているかを意味する開発者体験(Developer eXperience)です。 https://cto-a.github.io/dxcriteria/about.html “ Developer eXperience? ある特定のシステムを開発・保守する開発者をユーザーと捉え、彼ら・彼女らの開発 に伴う体験 https://buildersbox.corp-sansan.com/entry/2019/03/11/121417
“
テスト対象を Public にせざるを得ない問題 テスト用 eSpace eSpace テスト用 アプリケーション w/ BDD
Framework 業務用 アプリケーション 参照 業務ロジック アサーション 前処理/後処理 さぁ 実装だ!
テスト用 eSpace eSpace 業務用 アプリケーション 参照 業務ロジック アサーション 前処理/後処理 業務ロジックを実装する
Pub った! 1 テスト対象を Public にせざるを得ない問題 テスト用 アプリケーション w/ BDD Framework
よしテスト するぞ テスト用アプリケーションから業務ロジックを探す 2 テスト対象を Public にせざるを得ない問題 テスト用 eSpace eSpace
業務用 アプリケーション 参照 業務ロジック アサーション 前処理/後処理 Pub った! テスト用 アプリケーション w/ BDD Framework 業務ロジックを実装する 1
あれ? ないぞ? テスト対象を Public にせざるを得ない問題 テスト用アプリケーションから業務ロジックを探す 2 テスト用 eSpace eSpace
業務用 アプリケーション 参照 業務ロジック アサーション 前処理/後処理 Pub った! テスト用 アプリケーション w/ BDD Framework 業務ロジックを実装する 1 気付く 3
ああ! Public か! テスト対象を Public にせざるを得ない問題 テスト用アプリケーションから業務ロジックを探す 2 テスト用 eSpace
eSpace 業務用 アプリケーション 参照 業務ロジック アサーション 前処理/後処理 Pub った! テスト用 アプリケーション w/ BDD Framework 業務ロジックを実装する 1 気付く 3
テスト対象を Public にせざるを得ない問題 テスト用アプリケーションから業務ロジックを探す 2 テスト用 eSpace eSpace 業務用 アプリケーション
参照 業務ロジック アサーション 前処理/後処理 Pub った! テスト用 アプリケーション w/ BDD Framework 業務ロジックを実装する 1 気付く 3 悩む 4 え、でもそれってテストのた めにプロダクションコードの 実装に手を加えるってこと? そもそも可視性が2通りしか ないし公開したい Producer を指定するような仕組みがな いときついっていうかテスト 対象 Public にしていったら 関係ないのに使われる可能性 を否定できないし Public で あるべきでない Action も Public にしないとテストが できないの?まじかーそっか ー(超早口)
テスト対象を Public にせざるを得ない問題まとめ BDD は OutSystems の仕組みに則った正規の手段で Action を実行する想定 OutSystems
の可視性バリエーションは Private / Public の2種類のみ よって以下のような Private Action をテストしたい場合 Public にせざるを得ない - 1か所でしか使われていない完全 Private な Action - eSpace 内 Public な Action Public プロパティは実装の意図を伝えるための側面が強い(個人差があります) そのため、テスティングフレームワークの影響で強制されるのは違和感がある
Testing Framework
テスト対象を Public にせざるを得ない問題 テスト用 eSpace eSpace テスト用 アプリケーション w/ Testing
Framework 業務用 アプリケーション 参照 業務ロジック アサーション 前処理/後処理 さぁ 実装だ!
テスト用 eSpace eSpace 業務用 アプリケーション 参照 業務ロジック アサーション 前処理/後処理 業務ロジックを実装する
Pub った! 1 テスト対象を Public にせざるを得ない問題 テスト用 アプリケーション w/ Testing Framework
よしテスト するぞ テスト用アプリケーションの何か一つを参照する 2 テスト対象を Public にせざるを得ない問題 テスト用 eSpace eSpace
業務用 アプリケーション 参照 業務ロジック アサーション 前処理/後処理 Pub った! 業務ロジックを実装する 1 テスト用 アプリケーション w/ Testing Framework
楽だなー テスト対象を Public にせざるを得ない問題 テスト用アプリケーションの何か一つを参照する 2 テスト用 eSpace eSpace 業務用
アプリケーション 参照 業務ロジック アサーション 前処理/後処理 Pub った! 業務ロジックを実装する 1 Private だろうが Public だろうが呼び出し放題!! 3 テスト用 アプリケーション w/ Testing Framework
Testing Framework でのテスト実装 テスト対象:GetNextProductNumber Public:No 処理:Aggregate の結果 に +1 して返す
Testing Framework でのテスト実装 テスト対象:GetNextProductNumber Public:No 処理:Aggregate の結果 に +1 して返す
まずは Public にする! そして SetUp で GetLastProduct がデ ータを取得できるデータを作成して、あ、 あとは意図しないデータがあったらエラ ーにするなり削除するなりしないとなー 副作用に注意しなくちゃな!
Testing Framework でのテスト実装 Public 化 不要!
Testing Framework でのテスト実装 (今回は) データセットアップ 不要! Public 化 不要! 簡単に
Mocking 化 !!!
Testing Framework でのテスト実装 テスト開始を宣言 1 テスト対象の Proxy を宣言 2 Mock
クエリの結果を宣言 3 Mock クエリの結果をセット 4 Proxy 経由で Private Action を実行 5 アサーション 6
Testing Framework でのテスト実装 テスト開始を宣言 1 テスト対象の Proxy を宣言 2 Mock
クエリの結果を宣言 3 Mock クエリの結果をセット 4 Proxy 経由で Private Action を実行 5 アサーション 6
OutSystems のテスティングフレームワーク特徴ざっくり Testing Framework テスト対象強制 Public やるしかない 黒魔術で解決 プロダクションコードに 入り混じる
黒魔術で解決 Mocking 実装 プロダクトバージョン アップへの追従性 原理的に心配なし 破綻するかも Client Action 対応 あり なし BDD Framework
今日のまとめ BDD Framework は盤石な OutSystems 公式のテスティングフレームワーク 公式がサポートし、OutSystems でのテスティングの中心的存在であるが、 仕組み上「できないこと」や「できるけれどもやりづらい」ことが多々ある そんな中
Testing Framework という選択肢が彗星のごとく現れた 「BDD でやりづらいことを C# を駆使した黒魔術で解決」している 公式サポートはゼロだが、ユニットテストの生産性向上に役に立つかも
https://www.outsystems.com/forge/component- overview/12754/testing-framework Server Action にオススメ! 皆さんも使ってみましょう!!
ご清聴ありがとうございました