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
370
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
590
O11?ODC?一体何が違うのさ?_v1.0.2.pdf
kata_junn
0
1.6k
[OutSystems] O11 ユーザーに贈る ODC 移行に備えておくと良さそうなコト
kata_junn
0
660
ODC を乗りこなすために理解しておくと良いかもしれないいくつかのこと~Case:External Logic~
kata_junn
0
500
[OutSystems] シン・とりあえず Reactive なプロジェクトにはこれ導入しておくと良い規約
kata_junn
0
320
[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
【CEDEC2026】専門性の高いデフォルメチームが挑んだ人材育成戦略 〜Cygames Academiaの企画から実施まで〜
cygames
PRO
0
610
Webアクセシビリティ入門 2026
recruitengineers
PRO
3
570
FPGAが実現する遠方宇宙の高空間分解能天体撮影 -大型地上望遠鏡の視力を補正する「補償光学」とは?-
komei_mt
0
250
グローバル基準のSREは、運用現場でどう機能したか:成熟度アセスメントの実践 / SRE NEXT 2026
sorawatanabe
0
230
Genie Codeハンズオン基礎編
taka_aki
1
120
モバイルアプリ開発概論2026
recruitengineers
PRO
5
590
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
事業価値と Engineering 2026年度版
recruitengineers
PRO
49
23k
【CEDEC2026】『ウマ娘 プリティーダービー』 英語版のキャラクターの方言や口調をローカライズするための創造的アプローチ
cygames
PRO
2
930
Data Hubグループ 紹介資料
sansan33
PRO
0
3.2k
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
390
【Google Cloud Next Tokyo'26】Gemini Enterprise と Oracle AI Database で実現する、業務データ活用を実現する AI エージェント実装
shisyu_gaku
0
250
Featured
See All Featured
The untapped power of vector embeddings
frankvandijk
2
1.8k
Making the Leap to Tech Lead
cromwellryan
135
10k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
250
Done Done
chrislema
186
16k
Why Our Code Smells
bkeepers
PRO
340
58k
Visualization
eitanlees
152
17k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
490
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
650
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
WCS-LA-2024
lcolladotor
0
790
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