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
DMMアカウントサービス フロントエンド改善支援のためのTestcafeを用いた自動e2eテス...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
odan tomohiro
November 17, 2021
Technology
2
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DMMアカウントサービス フロントエンド改善支援のためのTestcafeを用いた自動e2eテストの刷新
DMMアカウントサービス フロントエンド改善支援のためのTestcafeを用いた自動e2eテストの刷新
odan tomohiro
November 17, 2021
More Decks by odan tomohiro
See All by odan tomohiro
『AIに負けない』より『AIと遊ぶ』」〜ワクワクが最強のテスト・QA学習戦略_公開用
odan611
1
110
テスト設計コンテストで出てくるテスト技術について話すの。
odan611
0
45
DMMプロダクト群へのmabl活用
odan611
0
2
自動テストにおけるコードベース戦略とローコード戦略のすみ分け
odan611
0
2
良いテストを作るためのテスト設計チュートリアルを考える
odan611
0
4
テストスイートアーキテクチャへのアーキテクチャ検証手法ATAMの 適用
odan611
0
3
softec asia2019_report
odan611
0
2
naite_samplequestion
odan611
0
3
Jasst'18 kansai テスコンからの納得できるテスト設計への挑戦
odan611
0
2
Other Decks in Technology
See All in Technology
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
7.7k
作る力から、見極める力へ — AI時代に広がるエンジニアの価値と役割
rince
0
370
ご挨拶「10周年を迎える共創ラボのこれまでとこれから」
iotcomjpadmin
0
150
BPaaSで進むAIオペレーションの現在地 AI実装が効く領域とスケーラビリティの選定と実装
kentarofujii
0
220
初めてのDatabricks勉強会
taka_aki
2
200
AI時代における最適なQA組織の作り方
ymty
3
190
【FinOps】データドリブンな意思決定を目指して
z63d
2
500
データレイクの「見えない問題」を可視化する
sansantech
PRO
1
240
AWS Summit 2026で見えたSIerにとっての Amazon Quickの位置づけ
maf_0521
0
120
デジタル・デザイン:次の50年を描く「進化する青写真」
y150saya
0
150
WebGIS AI Agentの紹介
_shimizu
0
600
テスト設計の本質を改めて考えてみる~生成AIを活用する時代だからこそ、作ったテストの説明性を高めよう~
yamasaki696
1
160
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Being A Developer After 40
akosma
91
590k
Design in an AI World
tapps
1
250
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.8k
Un-Boring Meetings
codingconduct
0
330
Unsuck your backbone
ammeep
672
58k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Building Adaptive Systems
keathley
44
3.1k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
610
The browser strikes back
jonoalderson
0
1.3k
Transcript
© DMM.comc DMMアカウントサービス フロントエンド改善支援のための TestCafeを用いた自動E2Eテストの刷新 テクノロジー本部 QA部 大段智広 2021/10/28
© DMM.comc 名前:大段 智広(おおだん ともひろ) 所属:テクノロジー本部 QA部 2021年4月入社 場所:六本木(普段は、神奈川自宅でフルリモート) 会社以外では、こんなところで活動しています。
NPO法人 ソフトウェアテスト技術振興協会 ASTER • JSTQB(Japan Software Testing Qualifications Board)技術委員 • 試験問題を作る人 • テスト設計コンテスト実行委員&U-30クラス審査委員 2 自己紹介
© DMM.comc QA部内での役割 • プラットフォーム事業本部(PF)を対象とし たQA支援チームのリーダー • 自動E2Eテスト開発、運用 • 要望があれば、スポットのテスト支援
など 3 自己紹介 QA部 動画チーム 電書チーム PFチーム ・・・ PF事業本部の皆さんと一緒に取り組んだ内容を発表させていただいています。 いつもありがとうございます!! もちろん、QA部チームメンバの皆さんもいつもありがとうございます!! PFの方と毎日夕会に参加して、 自動E2Eテストの開発、運用をメ インに業務を行っています。 チーム体制:2名~3名
© DMM.comc 目次 1. 背景・課題 2. 取り組み概要 3. 開発した自動E2Eテスト 4.
支援結果 5. 今後の取り組み 4
© DMM.comc 1. 背景・課題 • DMMアカウントサービス • DMMアカウントサービスのフロントエンド改善 • 刷新前の自動E2Eテスト
5
© DMM.comc DMMアカウントサービス 認証認可を担当するアプリケーション 会員登録&退会、アカウント情報管理 6 モバイルブラウザ PCブラウザ 認証メールを送信する 新規登録
メールアドレスで登録 メールアドレス パスワード 他のアカウントで登録 Googleで登録 Twitterで登録 Facebookで登録 × 認証メールを送信する 新規登録 メールアドレスで登録 メールアドレス パスワード 他のアカウントで登録 Googleで登録 Twitterで登録 Facebookで登録
© DMM.comc DMMアカウントサービスのフロントエンド改善 目的 • 既存の機能を担保しながら、高速&安心なUI開発に変えてゆく 課題 • 自動E2Eテストが壊れやすく、メンテナンスもされていない 施策:自動E2Eテスト刷新
• メンテナンスされていないE2Eを保守しやすくするwith QA部 7 参考: 2021/06/18(金) DMM meetup #29 〜DMMのプラットフォーム基盤における認証認可に関する改善〜 DMMアカウントサービスのフロントエンド改善 https://speakerdeck.com/okmttdhr/dmmakauntosabisufalsehurontoendogai-shan
© DMM.comc 刷新前の自動E2Eテスト 8 開発メンバ 課題① 壊れやすい & メンテナンス されていないテスト
課題② PCブラウザ環境として Chromeも想定していたが、 Firefoxでの動作確認のみ 日次定期実行 テスト環境 構築 テスト実行環境 Github 開発リポジトリ 開発リポジトリ 成果物利用 (on stg) テスト対象の アプリケーション環境 テスト実行 CircleCI Selenium Slack テスト結果通知
© DMM.comc 2. 取り組み概要 • 刷新した自動E2Eテスト • 活動スケジュール • 開発体制
9
© DMM.comc 刷新した自動E2Eテスト 10 日次定期実行、onPushトリガー テスト実行環境 Github 開発リポジトリ 成果物利用 テスト実行
CircleCI Github Actions (on stg) テスト対象の アプリケーション環境 Slack OR 開発&QA部メンバ Test Cafe テスト環境 構築 Edge 改善② ・PCブラウザ、モバイルのテストを実行 ・クロスブラウザのテストを実行 改善① ・メンテナンスを考慮したテスト実装方針 ・運用ルール・体制 テスト結果通知
© DMM.comc 活動スケジュール 11 2020年 2021年 12月 1月 2月 3月
4月 5月 6月 7月 8月 9月 導入検討 ツール 選定 サンプル 開発 自動E2Eテスト 開発 計画策定 自動E2Eテスト開発 自動E2Eテスト 実装方針・ 運用ルール決め CI連携、クロスブラウザ対応 テストシナリオ 洗い出し 自動E2Eテスト 開発完了 対応期間:2020年12月~2021年9月(約10ケ月) 現在は運用中…
© DMM.comc 開発体制 • 2週間スプリントで自動E2Eテストを開発。 • QA部メンバが開発し、開発メンバも含めてレビューを実施。 • 開発完了した自動E2Eテストは、ステージング環境で日次定期実行を実施。 12
テストシナリオA Firefoxをテスト モバイルをテスト テストシナリオB テストシナリオC ・・・ テストシナリオA テストシナリオB CIツールによる 日次定期実行 を確認 2週間スプリント 日次夕会 QA部メンバ 開発メンバ ※開発イメージ スプリントバックログ 自動E2Eテストバックログ 2名~ 3名
© DMM.comc 3. 開発した自動E2Eテスト • テスト内容 • 自動E2EテストCIパイプライン • 採用したテストフレームワーク
• テストコードの実装方針 13
© DMM.comc テスト内容 ユーザーが利用できないと困る、基本的なユーザーシナリオが対象 テストケース構成 下記のテスト環境/テスト対象の組み合わせでテストを実施する。 ブラウザ種別 :Chrome、Firefox、Safari、Edge サイト種別 :DMM、FANZA
デバイス種別 :PC、モバイル 14 基本はChromeテストの構成と同じ。 Firefox、Safari、Edgeで実行。 ただし、 より重要なユーザーシナリオのみ実施。
© DMM.comc 自動E2EテストCIパイプライン リポジトリへのonPush、日次でCIパイプラインを実行。 15 Chrome SNS Firefox SNS Edge
SNS Chrome SNS以外 Firefox SNS以外 Edge SNS以外 Safari SNS以外 Safar SNS CircleCI Github Actions 約60分~70分 1ジョブあたり 約6分~約20分 凡例) PCブラウザのテスト モバイルのテスト
© DMM.comc 採用したテストフレームワーク TestCafe ブラウザテストを自動化するためのテストフレームワーク 選定理由:メンテナンスしやすい Webドライバが要らないため、Seleniumなどに比べて環境構築がしやすい。 プロダクトと同じ開発言語(TypeScript)で開発できる。 QA部メンバにプログラミングスキルが求められるが、開発メンバもレビューや開発が しやすい。
コード品質を保つためのツールもテストコードに適用できる。 16 参考:TestCafe https://testcafe.io/
© DMM.comc テストコードの実装方針 UI変更時にメンテナンスしやすいテストコードするために、大きく下記の 実装方針を3つ立てました。 17 参考①:ページオブジェクトモデル https://www.selenium.dev/ja/documentation/guidelines/page_object_models/ 参考②:なぜE2Eテストでidを使うべきではないのか https://blog.autify.com/ja/why-id-should-not-be-used
① ページオブジェクトデザインパターンを利用する。 刷新前はテスト手順とロケータがテストケース内で区別されていな かったため、UI変更時のメンテナンスコストが高い状態になってい たことへの対処する。 ② ロケータにはIDなどではなく、「文言」(ログインなど)を利 用する。 UI変更時にすぐにどのUI要素が変わったかわかりやすくする。 ③ 「文言」が利用しにくい場合は、プロダクトにdata属性を 埋め込む。 フロントエンド改善の取り組みで、ページ毎にバラバラになってい る「文言」がいきなり統一されることもある。 そのため、開発メンバと相談しながら検討する。 「文言」がないものもある(表示されるメールアドレス、テキスト、ラベル) テストシナリオ ページオブジェクト Test(‘ログインする’) { ログインページ() .open() .login(loginId,password); isLoggedIn=~ expect(isLoggedIn).ok; } ログインページクラス { loginId: Selector = Selector(‘a’).withText(‘ログイン’); xxxlabel: Selector = Selector(`[data-e2e=«tags»]`); ・・・ public async login(loginId: string, password: string): Promise<void> { await t .typeText(this.loginId, loginId) .typeText(this.password, password) .click(this.loginButton); } } ※イメージ ① ② ③
© DMM.comc 4. 取り組み結果 • 得られたこと • 課題として見えてきたこと 18
© DMM.comc 得られたこと 自動E2Eテストの開発 開発メンバにUIを仕様確認しながらテストを開発することで、プロダクト 修正のインプットへ。 継続的なテストの実践 自動E2Eテストを回し続けることで、想定外のUI、機能変更を検知し、欠陥 も少しずつ発見している。 同じテストを異なるデバイス、ブラウザ、サイトで実行するだけで
も、UI上の外部仕様の違いに気付いたり、埋め込まれた欠陥を見つ けることができる。 19
© DMM.comc 課題として見えてきたこと 時間が掛かる/不安定なテストを無くす。 時間が掛かる不安定な原因に一つずつ対処する。 自動E2Eテストシステム(CI,テスト環境)を統一する。 社内で用意できるシステム、環境だけでなく、SaaSを積極的に利用する。 システム全体として保守しやすくする。 テストが失敗したらすぐに調査→修正→テスト合格できる体制 プラットフォーム事業本部の「高速&安心なUI開発」に貢献する。
これからが本番!! 20
© DMM.comc 5. 今後の取り組み • もっと広範囲にテストして、もっと早く欠陥を見つける 21
© DMM.comc もっと広範囲にテストして、もっと早く欠陥を見つける スピード 日次定期ではなく、環境に反映された直後にテストする 1回のテストの高速化(不安定なテストへの対処含む) スコープ デバイス拡張 PC、モバイル→テレビ、ゲーム機なども… 他サービスへの適用
アカウントサービス後のサービスへ(決済サービスなど) 設備 SaaS、デバイス、外部連携(SNS)アカウント テスト結果を見やすく、分析しやすい仕組み 22
© DMM.comc ご清聴ありがとうございました。 QA部への参画者募集してます!