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] CodeceptJS で快適な E2E ライフを送ろう!
Search
kata_junn
October 20, 2021
Technology
360
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
[OutSystems] CodeceptJS で快適な E2E ライフを送ろう!
CodeceptJS is god
kata_junn
October 20, 2021
More Decks by kata_junn
See All by kata_junn
[OutSystems] ユニットテスト in OutSystems
kata_junn
0
560
O11?ODC?一体何が違うのさ?_v1.0.2.pdf
kata_junn
0
1.5k
[OutSystems] O11 ユーザーに贈る ODC 移行に備えておくと良さそうなコト
kata_junn
0
640
ODC を乗りこなすために理解しておくと良いかもしれないいくつかのこと~Case:External Logic~
kata_junn
0
480
[OutSystems] シン・とりあえず Reactive なプロジェクトにはこれ導入しておくと良い規約
kata_junn
0
310
[OutSystems] Testing Framework がいい。とてもいい。
kata_junn
0
1.9k
[OutSystems] OutSystems が誘う Null がない世界の罠
kata_junn
0
1.1k
[OutSystems] とりあえず Reactive なプロジェクトにはこれ導入しておくと良いって規約
kata_junn
1
1.8k
[Agile][Scrum] 転リファ
kata_junn
3
11k
Other Decks in Technology
See All in Technology
運用を見据えたAIエージェント設計実践
amacbee
1
3.4k
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
120
タクシーアプリ『GO』の実践的データ活用
mot_techtalk
3
180
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
2
210
10倍の生産性を実現するAI駆動並列エージェントのすべて
kumaiu
4
1.2k
生成 AI × MCP で切り拓く次世代 SRE!自律型運用への挑戦と開発者体験の進化
_awache
0
170
SIer20年! 培ったスキルがスタートアップで輝く時
shucho0103
0
800
Dario Amodi『Policy on the AI Exponential』を理解する
nagatsu
0
210
Chart.js が簡単に使えるようになっていたので OGP 画像生成に使った話
kamekyame
0
170
ブロックチェーン / Blockchain
ks91
PRO
0
110
protovalidate-es を導入してみた
bengo4com
0
160
なぜ Platform Engineering の土台に Kubernetes を選ぶのか
r4ynode
1
350
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
430
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
380
Amusing Abliteration
ianozsvald
1
200
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
250
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
200
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.6k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
540
Deep Space Network (abreviated)
tonyrice
0
170
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
KATA
mclloyd
PRO
35
15k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Transcript
CodeceptJS を使って 快適な E2E テストライフを送ろう! 片野 潤一 伊藤忠テクノソリューションズ株式会社 アジャイル営業推進部 OutSystems
Developer Conference 2021
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 Expert Traditional Web Developer OutSystems Architecture Specialist 好き:リアル脱出ゲーム、低温調理、スパイス、モブプロ、DQW、ゼルダ 20% OutSystems OutSystems 推進 Expert Service BootCamp 講師 PoC 提案+実施 now!! 2 片野 潤一(かたじゅん) Twitter:@kata_junn
書いてるよ!!! OutSystems プロジェクトで E2E テストを… 書いてないよ!!! E2E しらんよ!!! Zoom の
↓ の機能で枠内に✓とかつけてね!
今日の話が響きそうな人 ⚫ E2E テストってなんだよ、な人 ⚫ E2E テストにこれから取り組むぞ!な人 ⚫ E2E テストの実装やメンテに大変な思いをしている人
4
CodeceptJS こーどせぷとじぇいえす
CodeceptJS https://codecept.io/ Node.js で実装された E2E フレームワーク ヘルパーとして Webdriver や Puppeteer
などが選択でき、本体はそれらの Wrapper API を提供 https://codecept.io/basics/
E2E テスト いーつーいー/えんどつーえんど
E2E テスト “ エンドツーエンドテスト(E2Eテスト)とは、アプリケーションのワークフロー を最初から最後までテストすることを含むソフトウェアテスト方法を指します。こ の方法は基本的に、実際のユーザーシナリオを複製して、システムの統合とデータ の整合性を検証できるようにすることを目的としています。 https://www.browserstack.com/guide/end-to-end-testing
E2E テスト “ エンドツーエンドテスト(E2Eテスト)とは、アプリケーションのワークフロー を最初から最後までテストすることを含むソフトウェアテスト方法を指します。こ の方法は基本的に、実際のユーザーシナリオを複製して、システムの統合とデータ の整合性を検証できるようにすることを目的としています。 https://www.browserstack.com/guide/end-to-end-testing ブラウザや実機でぽちぽちするテスト
積み重なった機能群 (インクリメント)を 継続的にデリバリーするために 事実上必須だから なぜ人類は E2E テストをプログラムで実装するのか
E2E が快適でなかった時代 あるいは OutSystems での E2E 実装の思い出
OutSystems での E2E 実装の思い出 ⚫ [Traditional] ID が自動生成されるので後方一致検索する ⚫ Input_Hoge,
Select_Hoge を “Hoge” で検索すると混ざるので注意 ⚫ XPath やら CSS セレクタで特定する ⚫ HTML に独自属性(data-*)を付けて頑張って一意にする 12 参考: https://success.outsystems.com/Documentation/How-to_Guides/DevOps/How_to_do_UI_testing_with_Selenium
テストページに飛んでボタンを押してテキストを入力する with Puppeteer
テストページに飛んで テストページに飛んでボタンを押してテキストを入力する with Puppeteer
テストページに飛んで ボタンを押して テストページに飛んでボタンを押してテキストを入力する with Puppeteer
テストページに飛んで テキストを入力する ボタンを押して テストページに飛んでボタンを押してテキストを入力する with Puppeteer
OutSystems での E2E 実装の思い出 ⚫ [Traditional] ID が自動生成されるので後方一致検索する ⚫ Input_Hoge,
Select_Hoge を “Hoge” で検索すると混ざるので注意 ⚫ XPath やら CSS セレクタで特定する ⚫ HTML に独自属性(data-*)を付けて頑張って一意にする ⚫ 上記の事情から、画面実装を変更すると大体のテストは死ぬ ※ OutSystems に限らない話であり、OutSystems でもこういった問題は避けられないよ、という意味 17 参考: https://success.outsystems.com/Documentation/How-to_Guides/DevOps/How_to_do_UI_testing_with_Selenium
E2E テストの突然死に対するアプローチ ⚫ 死ぬたびにメンテ ⚫ やがて実装者の精神も死ぬ諸刃の剣 ⚫ Page Object Pattern
で影響範囲を狭める ⚫ E2E テスト実装の保守性を高める方法論 ⚫ DOM 検索をいい感じにする ⚫ CodeceptJS の Semantic Locator がいい感じに適合 18
Semantic Locator せまんてぃっく ろけーたー
Semantic Locator
Semantic Locator
Semantic Locator (速度はちょっぴり犠牲になるけど) Label とか文言でマッチすれば探し当ててくれる
Traditional Reactive
Traditional Reactive Semantic Locator 結果は等価
テストページに飛んでボタンを押してテキストを入力する with CodeceptJS
テストページに飛んでボタンを押してテキストを入力する with CodeceptJS テキスト(等)を入力する ボタンを押して テストページに飛んで
Semantic Locator でコードの可読性を高くできる(もちろんセレクタ指定も可能) 失敗時のスクショを自動的に保存 アクションごとにスクショを保存して簡易なレポートを作成(Allure と連携もできる) Translator でログがわかりやすい CodeceptJS の良いところ
「画面に対してテストを行う」文脈で E2E テストが書ける CodeceptJS と OutSystems の相性の良いところ Semantic Locator の恩恵
Traditional と Reactive を区別することなくテストコードが書ける プロダクト実装と E2E 実装の密さを軽減できる ServiceStudio での UI 実装の一覧性があまり快適でないことへの対策
書いてみたので Demo します! ひゃくぶんはいっけんにしかず
None
URL 以外コードは同じ
まとめ ⚫ プロダクトのリリースサイクルを早めるためにはテスト自動化が必須 ⁻ ユニットテストは言わずもがな ⁻ E2E テストも例外ではない ⚫ E2E
テスト実装はガラス細工のように脆く壊れやすい繊細さを持つ ⁻ 画面実装を変えると大体突然死 ⚫ 突然死の対抗手段の一つが Semantic Locator ⁻ CodeceptJS の実装が OutSystems と良相性 ⁻ 可読性やポータビリティが得られる代わりに速度は犠牲になる ⚫ CodeceptJS で快適な E2E テストライフを手に入れよう!!
CodeceptJS 使いたくなった? なった!!! いや… Zoom の ↓ の機能で枠内に✓とかつけてね!
ご清聴ありがとうございました ご質問があれば お願いします!
参考になる CodeceptJS 関連の記事たち CodeceptJSで、非エンジニアでも読みやすいテストコードを書く https://qiita.com/tsuemura/items/70b156baecfbcffb03fb E2Eテストの面倒くさいことはCodeceptJSにお願いしよう https://qiita.com/Kesin11/items/11da1b4cf9d58e4dd9af エンジニア視点で見たCodeceptJSのよさ https://qiita.com/tsuemura/items/fc0c74884cb3c6760a75 我が名は神龍……どんなテストもひとつだけ自動化してやろう
https://qiita.com/tsuemura/items/56ba9942565963858d8f CodeceptJSのfuzzy locatorは若干遅いことがある https://qiita.com/jyunji_watanabe/items/c4c9d31397c7e0f4372d