SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
© 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部への参画者募集してます!

Weitere ähnliche Inhalte

Was ist angesagt?

幅広なテスト分析ができるようになろう
幅広なテスト分析ができるようになろう幅広なテスト分析ができるようになろう
幅広なテスト分析ができるようになろう
scarletplover
 
5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキ5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキ
Takao Oyobe
 

Was ist angesagt? (20)

DeNAの品質を支えるQAの取り組み 〜標準化から実践まで〜
DeNAの品質を支えるQAの取り組み 〜標準化から実践まで〜DeNAの品質を支えるQAの取り組み 〜標準化から実践まで〜
DeNAの品質を支えるQAの取り組み 〜標準化から実践まで〜
 
テスコン優勝事例におけるテスト分析公開用
テスコン優勝事例におけるテスト分析公開用テスコン優勝事例におけるテスト分析公開用
テスコン優勝事例におけるテスト分析公開用
 
ぼんやりした要件とテストケースから出てくる地獄のようなゲームテスト自動化導入
ぼんやりした要件とテストケースから出てくる地獄のようなゲームテスト自動化導入ぼんやりした要件とテストケースから出てくる地獄のようなゲームテスト自動化導入
ぼんやりした要件とテストケースから出てくる地獄のようなゲームテスト自動化導入
 
「PdMと考えるQAとプロダクトマネジメント」
「PdMと考えるQAとプロダクトマネジメント」「PdMと考えるQAとプロダクトマネジメント」
「PdMと考えるQAとプロダクトマネジメント」
 
幅広なテスト分析ができるようになろう
幅広なテスト分析ができるようになろう幅広なテスト分析ができるようになろう
幅広なテスト分析ができるようになろう
 
テスト分析についての説明資料公開用
テスト分析についての説明資料公開用テスト分析についての説明資料公開用
テスト分析についての説明資料公開用
 
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
 
What is quality culture? Is it something tasty?
What is quality culture? Is it something tasty?What is quality culture? Is it something tasty?
What is quality culture? Is it something tasty?
 
5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキ5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキ
 
アジャイル開発とメトリクス
アジャイル開発とメトリクスアジャイル開発とメトリクス
アジャイル開発とメトリクス
 
STAC2023 テストケースの自動生成に生成AI導入を検討してみた STAC2023
STAC2023 テストケースの自動生成に生成AI導入を検討してみた STAC2023STAC2023 テストケースの自動生成に生成AI導入を検討してみた STAC2023
STAC2023 テストケースの自動生成に生成AI導入を検討してみた STAC2023
 
Is No More QA Idealist Practical and Something Tasty?
Is No More QA Idealist Practical and Something Tasty?Is No More QA Idealist Practical and Something Tasty?
Is No More QA Idealist Practical and Something Tasty?
 
Laravel×DevOps -インフラ構築の自動化から運用ログの監視まで-
Laravel×DevOps -インフラ構築の自動化から運用ログの監視まで-Laravel×DevOps -インフラ構築の自動化から運用ログの監視まで-
Laravel×DevOps -インフラ構築の自動化から運用ログの監視まで-
 
modern software qa - draft 1
modern software qa - draft 1modern software qa - draft 1
modern software qa - draft 1
 
FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話
 
LINE Developer Meetup in Tokyo #39 Presentation
LINE Developer Meetup in Tokyo #39 PresentationLINE Developer Meetup in Tokyo #39 Presentation
LINE Developer Meetup in Tokyo #39 Presentation
 
キーワード駆動によるシステムテストの自動化について 2015
キーワード駆動によるシステムテストの自動化について 2015キーワード駆動によるシステムテストの自動化について 2015
キーワード駆動によるシステムテストの自動化について 2015
 
社内スタートアップによる組織の成長に伴い発生する痛みとその解決策について(Rebuild) #devlove
社内スタートアップによる組織の成長に伴い発生する痛みとその解決策について(Rebuild) #devlove 社内スタートアップによる組織の成長に伴い発生する痛みとその解決策について(Rebuild) #devlove
社内スタートアップによる組織の成長に伴い発生する痛みとその解決策について(Rebuild) #devlove
 
ソフトウェアテストの歴史と近年の動向
ソフトウェアテストの歴史と近年の動向ソフトウェアテストの歴史と近年の動向
ソフトウェアテストの歴史と近年の動向
 
パターン QA to AQ: 伝統的品質保証(Quality Assurance)からアジャイル品質(Agile Quality)へ
パターン QA to AQ: 伝統的品質保証(Quality Assurance)からアジャイル品質(Agile Quality)へパターン QA to AQ: 伝統的品質保証(Quality Assurance)からアジャイル品質(Agile Quality)へ
パターン QA to AQ: 伝統的品質保証(Quality Assurance)からアジャイル品質(Agile Quality)へ
 

Ähnlich wie DMMアカウントサービス フロントエンド改善支援のためのTestcafeを用いた自動e2eテストの刷新

Ähnlich wie DMMアカウントサービス フロントエンド改善支援のためのTestcafeを用いた自動e2eテストの刷新 (20)

分析可能なアジャイルQAでの取り組み
分析可能なアジャイルQAでの取り組み分析可能なアジャイルQAでの取り組み
分析可能なアジャイルQAでの取り組み
 
5minQues - SWET近況報告
5minQues - SWET近況報告5minQues - SWET近況報告
5minQues - SWET近況報告
 
Q te cc2
Q te cc2Q te cc2
Q te cc2
 
STAC2022 ローコード開発におけるテストピラミッド考察
STAC2022 ローコード開発におけるテストピラミッド考察STAC2022 ローコード開発におけるテストピラミッド考察
STAC2022 ローコード開発におけるテストピラミッド考察
 
DMM TVでの自動テスト構築と QA部でのSaaS型の テスト自動化プラットフォームの活用_slideshare用.pptx
DMM TVでの自動テスト構築と QA部でのSaaS型の テスト自動化プラットフォームの活用_slideshare用.pptxDMM TVでの自動テスト構築と QA部でのSaaS型の テスト自動化プラットフォームの活用_slideshare用.pptx
DMM TVでの自動テスト構築と QA部でのSaaS型の テスト自動化プラットフォームの活用_slideshare用.pptx
 
事例からわかる!テスト自動化導入パターン
事例からわかる!テスト自動化導入パターン事例からわかる!テスト自動化導入パターン
事例からわかる!テスト自動化導入パターン
 
Stac2021 [初学者向け]ローコード開発におけるテストの考え方
Stac2021 [初学者向け]ローコード開発におけるテストの考え方Stac2021 [初学者向け]ローコード開発におけるテストの考え方
Stac2021 [初学者向け]ローコード開発におけるテストの考え方
 
大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開
 
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
 
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しようテスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
 
Xcodeの管理を楽に - Jenkins編 -
Xcodeの管理を楽に - Jenkins編 -Xcodeの管理を楽に - Jenkins編 -
Xcodeの管理を楽に - Jenkins編 -
 
QA組織とiOSのテスト
QA組織とiOSのテストQA組織とiOSのテスト
QA組織とiOSのテスト
 
20190424 q ameetup-m -publish
20190424 q ameetup-m -publish20190424 q ameetup-m -publish
20190424 q ameetup-m -publish
 
Automation test.ssf alpha
Automation test.ssf alphaAutomation test.ssf alpha
Automation test.ssf alpha
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境
 
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
 
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
 
アジャイル開発に最適なQA『アジャイルQA』の導入
アジャイル開発に最適なQA『アジャイルQA』の導入アジャイル開発に最適なQA『アジャイルQA』の導入
アジャイル開発に最適なQA『アジャイルQA』の導入
 
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
 
ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略
 

Mehr von tomohiro odan

Mehr von tomohiro odan (10)

20211023 良いテストを作るためのテスト設計チュートリアルを考える
20211023 良いテストを作るためのテスト設計チュートリアルを考える20211023 良いテストを作るためのテスト設計チュートリアルを考える
20211023 良いテストを作るためのテスト設計チュートリアルを考える
 
テストスイートアーキテクチャへのアーキテクチャ検証手法ATAMの 適用
テストスイートアーキテクチャへのアーキテクチャ検証手法ATAMの 適用テストスイートアーキテクチャへのアーキテクチャ検証手法ATAMの 適用
テストスイートアーキテクチャへのアーキテクチャ検証手法ATAMの 適用
 
20191122 softec asia2019_report_for_d3 _r04
20191122 softec asia2019_report_for_d3 _r0420191122 softec asia2019_report_for_d3 _r04
20191122 softec asia2019_report_for_d3 _r04
 
20191104 na te_samplequestion_r03
20191104 na te_samplequestion_r0320191104 na te_samplequestion_r03
20191104 na te_samplequestion_r03
 
0181013 warai CI(継続的インテグレーション)と実例紹介_公開用
0181013 warai CI(継続的インテグレーション)と実例紹介_公開用0181013 warai CI(継続的インテグレーション)と実例紹介_公開用
0181013 warai CI(継続的インテグレーション)と実例紹介_公開用
 
Jasst'18 kansai_challenge_to_convincing_test_design_by_test_design_contest
Jasst'18 kansai_challenge_to_convincing_test_design_by_test_design_contestJasst'18 kansai_challenge_to_convincing_test_design_by_test_design_contest
Jasst'18 kansai_challenge_to_convincing_test_design_by_test_design_contest
 
Warai test design_contest_18_open_class_kansai_toukai_report
Warai test design_contest_18_open_class_kansai_toukai_reportWarai test design_contest_18_open_class_kansai_toukai_report
Warai test design_contest_18_open_class_kansai_toukai_report
 
Bugreport anti pattern-language_ver.draft
Bugreport anti pattern-language_ver.draftBugreport anti pattern-language_ver.draft
Bugreport anti pattern-language_ver.draft
 
Warai マインドマップとpict masterで テストケースを作っちゃおう_r01(公開用)
Warai マインドマップとpict masterで テストケースを作っちゃおう_r01(公開用)Warai マインドマップとpict masterで テストケースを作っちゃおう_r01(公開用)
Warai マインドマップとpict masterで テストケースを作っちゃおう_r01(公開用)
 
バグ票見つめて気づきませんか?〜立場いろいろ、悩みいろいろ〜
バグ票見つめて気づきませんか?〜立場いろいろ、悩みいろいろ〜バグ票見つめて気づきませんか?〜立場いろいろ、悩みいろいろ〜
バグ票見つめて気づきませんか?〜立場いろいろ、悩みいろいろ〜
 

DMMアカウントサービス フロントエンド改善支援のためのTestcafeを用いた自動e2eテストの刷新