© DMM.comc
自動テストにおける
コードベース戦略とローコード戦略
のすみ分け
合同会社 DMM.com テクノロジー本部 QA部
高山英介 大段智広
2021/12/11
© DMM.comc
名前:高山 英介(たかやま えいすけ)
所属:テクノロジー本部 QA部
2020年3月入社
• 動画配信事業部向けのQAチームとりまとめを行
っています。
• 前職は、組み込み機器の検証業務を10数年経験。
2
自己紹介
© DMM.comc
名前:大段 智広(おおだん ともひろ)
所属:テクノロジー本部 QA部
2021年4月入社
• プラットフォーム事業本部向けのQAチームとり
まとめを行っています。
会社以外では、こんなところで活動しています。
NPO法人 ソフトウェアテスト技術振興協会 ASTER
• JSTQB(Japan Software Testing Qualifications Board)技術委員
• 試験問題を作る人
• テスト設計コンテスト実行委員&U-30クラス審査委員
3
自己紹介
© DMM.comc
目次
1. 背景・課題
2. 自動E2Eテスト開発戦略
3. 自動E2Eテスト事例(ローコードベース戦略)
4. 自動E2Eテスト事例(コードベース戦略)
5. 開発戦略のすみ分けのために必要なこと
6. 今後の取り組み
4
© DMM.comc
1. 背景・課題
• DMM.com QA部の役割
• DMM.com QA部が目指すもの
• 当たり前品質を徹底できるカルチャーを根付かせる
5
© DMM.comc
© DMM.comc
© DMM.comc
8
8
© DMM.comc
DMM.com QA部の役割
QAが挑戦を支える
アジリティ高く挑戦
高品質で効率的な
アウトプット
※アジリティ
• 誰もが素早く挑戦し、失敗が許容できる技術的基盤がある。
• 見つけた最適解を全体に広める仕組みがある 9
© DMM.comc 10
DMM.com QA部が目指すもの
● 開発チームに入り、品質に
関わる基準やプロセス整備
● 横断的なナレッジや環境整
備と展開
品質保証体制の整備
● ツール/内製環境を利用し、
仕組み化やシステム化を目
指す
● 多様な事業をカバーするた
めにも人手に頼らない環境
を作る
テクノロジーの活用
● チーム自身が品質に対する
意識を持つ
● 開発者自身がテスト自動化
品質に対する文化形成
これらを目指してアジリティの高い挑戦を支える
© DMM.comc
当たり前品質を徹底できる文化を根付かせる
• 課題
• 様々なプロダクトのリリースが頻繁に行われる状況で、欠陥流出を未然に
防ぎ、開発全体で品質に対する文化形成するためには、仕組み化やシステ
ム化が必要。
• QA部 施策
• E2Eレベルを対象に自動テストシステムを開発・構築して、継続的にテスト
することで、常に品質を見れる、維持できる状態にする。
• 特に「維持できる」自動テストシステムや体制を作り上げることを重視。
11
© DMM.comc
2.自動E2Eテスト開発戦略
• 自動E2Eテスト開発プロジェクトの流れ
• 自動E2Eテスト開発戦略
• ローコードベース vs コードベース
• 自動E2Eテスト開発のためのすみわけ方針
12
© DMM.comc
要求収集・分析フェーズ 実現性検討フェーズ 計画フェーズ 開発フェーズ
運用
フェーズ
(略)
自動E2Eテスト開発プロジェクトの流れ
13
自動化要件の
洗い出し
ツール
の評価と選定
自動テスト
開発計画
策定と合意
自動テスト開発
自動テスト
開発方針・
運用ルール決め
テストシナリオ
洗い出し
• 自動E2Eテスト目的の識別
• 自動E2Eテスト要件・制約の識別
• 自動E2Eテスト要件化
• 開発/テストプロセスの把握
• ツール制約の把握
• サンプルの開発
• 自動化アプローチの決定
(自動E2Eテスト開発戦略の決定)
• 自動化範囲の合意
• スケジュールの合意
• 要員調整
• テスト対象の把握
• スクリプトの開発
• スクリプトのテスト
• テストの実行
• 設計、実装方針
• 運用ルール
• 欠陥マネジメント
© DMM.comc
自動E2Eテスト開発戦略
下記のいずれが妥当かを検討し、テスト開発を進めていく必要がある
14
項目 ノーコードベース ローコードベース コードベース
テスト
成果物
• テストモデル • テストモデル or 一部コード • コード
説明 • 主にユーザーの操作を記録・
定義のみでテストを開発する
• ユーザーの操作を記録・定義
+コードでテストを開発する
• テストを効率的に開発するた
めのDSLを利用してテストを
開発する
• プロダクト開発と同様にコード
を用いてテストを開発する
ツール • Autify
• MagicPod など
• mabl
• Eggplant
• Airtest
• Gauge
• Autify
• MagicPod など
• Selenium
• Appium
• TestCafe
• Cypress
• Playwright など
and
© DMM.comc
ローコードベース vs コードベース
• ツール適用範囲を超えてテストを改善していくことを考え、ノーコード
は採用せず、残りの二つの戦略の特性を比較した。
15
特性 項目 ローコードベース コードベース
SUTとの親和性 Webシステムに加えて、
アプリ全般に対応しやすい
(特に画像、動画に対応できる)
主にWebシステム
テスト対応の柔軟性 ツールの仕様により、
制約が掛かってしまうことがある
制約はほとんど受けない
(ただし、作りこみが必要)
開発・運用体制 QAメンバ中心
(開発メンバも含む)
開発メンバ中心
必要なスキル ツール固有開発知識 コーディング
スキル習得コスト コーディングと比較して、
習得コストはかからない
ローコードに比べて、
習得コストが掛かる
設備コスト 無償~コスト大 無償~コスト小
運用・保守コスト プロダクトの作りによる プロダクト/自動テストの作りによる
※SUT:System under testの略。テスト対象システム。
© DMM.comc
自動E2Eテスト開発のためのすみわけ方針
戦略の特性に合わせて、どちらの方針でもQA部として支援を行った。
• すみ分けの検討項目
① SUTと相性が良いか
A) Webシステム以外も対象とするか
B) Webシステムで完結するか
② 誰主体で運用するか
A) QAメンバ主体
B) 開発メンバ主体(QAメンバ含む)
③ 導入時期に余裕があるか
A) すぐに導入したい
B) 少しずつ作り上げていきたい
⇒明確な境界線はないため、最終的には関係者(開発、QA)で合意する。
16
※SUT:System under testの略。テスト対象システム。
ローコードベース コードベース
A B
A B
A B
© DMM.comc
3.自動E2Eテスト事例
(ローコードベース)
17
• テスト対象
• 背景、課題
• 自動E2Eテスト開発戦略の決定
• 開発/運用体制
• 構築した自動E2Eテスト
© DMM.comc
テスト対象
DMM動画サービス
動画の購入、再生を担当するアプリケーション
18
×
説明文、説明文、説明文、説明文、説明文、説明文、説明文、説明文、説明文、
説明文、説明文、説明文、説明文、説明文、説明文、説明文、説明文、説明文、
説明文、説明文、説明文、説明文、説明文、説明文、説明文、説明文、説明文、
説明文、説明文、説明文、説明文、説明文、説明文、説明文、説明文、説明文
★ お気に入り登録数 0 購入はこちらから
今すぐ購入
バスケットに入れる
サムネイル
商品タイトル
対応デバイス : パソコン、iPhone/iPad、Android、Chromecast
配信開始日 : XXXX/XX/XX
商品発売日 : XXXX/XX/XX
収録時間 : XXXX
出演者 : XXXX
ジャンル : XXXX
品番 : XXXX
平均評価 : ★★★★★
イメージを拡大
▶ お気に入りリストに登録
クレジットカード決済なら: 30pt獲得
2,450円
無期限
HD版ダウンロード+
HD版ストリーミング
1,980円
無期限
ダウンロード+
ストリーミング
980円
7日間
HD版ストリーミング
PC
モバイル
再生アプリ
© DMM.comc
背景、課題
• 致命的なインシデントを未然に防ぎたい。
• 手動でやるとコストが掛かる全社メンテナンス明けテストを定期的に実施したい。
• 開発のDeliveryを現状から落としたくない。
19
開発メンバ
QA部メンバ
自動テストシステム
© DMM.comc
自動E2Eテスト開発戦略の決定
⇒「ローコードベース」を選択。
20
• すみ分けの検討項目
① SUTと相性が良いか
A) Webシステム以外も対象とするか
B) Webシステムで完結するか
② 誰主体で運用するか
A) QAメンバ主体
B) 開発メンバ主体(QAメンバ含む)
③ 導入時期に余裕があるか
A) すぐに導入したい
B) 少しずつ作り上げていきたい
ローコードベース コードベース
A B
A B
A B
© DMM.comc
開発/運用体制
21
• QA部メンバが自動E2Eテストの実装・レビューを実施。(開発期間:約3カ月)
• テストの追加があれば都度開発する。
• 開発完了した自動E2Eテストは、ステージング/本番環境で日次定期実行を実施。
QA部メンバ
3名⇒現状5名
テストモデル作成
スクリプト作成
テストモデル、スクリプト
レビュー/検証
日次定期実行
を確認
テスト環境
構築
© DMM.comc
構築した自動E2Eテスト(1)
• テスト内容
• 致命的なインシデントにつながるユーザーシナリオが動作するか
• 購入、再生のシナリオ
• 商品カテゴリ、アプリ、端末の組み合わせで動作保証ができているか
• 商品購入パターン(100以上)
• 採用したツール
• ツール名:Eggplant
• 開発言語:状態遷移モデル+ツール独自言語
• 利用技術:画像処理ベース
• 選定理由:
• PC/スマートフォン以外のデバイスがテスト可能
• テスト自動化の経験者が少ない中からスケールしやすい
• テストケースの作りがわかりやすい&テストコードが長くならない
22
参考:Eggplant
https://www.eggplantsoftware.com/
© DMM.comc
改善③
・どこでも実機でテスト開発可能
構築した自動E2Eテスト(2)
23
日次定期実行、手動実行トリガー
テスト実行環境
Github
開発リポジトリ
テスト実行
(on stg)
テスト対象の
アプリケーション環境
QA部メンバ
Eggplant
DAI
テスト実行
テスト結果通知
Windows
テストモデル
Upload
&
結果確認
テストモデル
成果物管理
Eggplant
Functional
テスト開発
Eggplant
Functional
Android
iOS
Mac mini
ChromeCast
Slack
手動実行
改善②
・他デバイスでテスト可能
改善①
・いつでも実行可能
(on 本番)
© DMM.comc
4.自動E2Eテスト事例
(コードベース)
• テスト対象
• 背景、課題
• 自動E2Eテスト開発戦略の決定
• 開発/運用体制
• 構築した自動E2Eテスト
24
© DMM.comc
テスト対象
DMMアカウントサービス
認証認可を担当するアプリケーション
会員登録&退会、アカウント情報管理
25
モバイルブラウザ
PCブラウザ
認証メールを送信する
新規登録
メールアドレスで登録
メールアドレス
パスワード
他のアカウントで登録
Googleで登録
Twitterで登録
Facebookで登録
×
認証メールを送信する
新規登録
メールアドレスで登録
メールアドレス
パスワード
他のアカウントで登録
Googleで登録
Twitterで登録
Facebookで登録
© DMM.comc
背景、課題(1)
• DMMアカウントサービスのフロントエンドを改善する
26
目的
• 既存の機能を担保しながら、高速&安心なUI開発に変えてゆく
課題
• 自動E2Eテストが壊れやすく、メンテナンスもされていない
施策:自動E2Eテスト刷新
• メンテナンスされていないE2Eを保守しやすくするwith QA部
参考: 2021/06/18(金) DMM meetup #29 〜DMMのプラットフォーム基盤における認証認可に関する改善〜
DMMアカウントサービスのフロントエンド改善
https://speakerdeck.com/okmttdhr/dmmakauntosabisufalsehurontoendogai-shan
© DMM.comc
背景、課題(2)
27
開発メンバ
課題①
壊れやすい
&
メンテナンス
されていないテスト
課題②
PCブラウザ環境として
Chromeも想定していたが、
Firefoxでの動作確認のみ
日次定期実行
テスト環境
構築
テスト実行環境
Github
開発リポジトリ
開発リポジトリ
成果物利用
(on stg)
テスト対象の
アプリケーション環境
テスト実行
CircleCI
Selenium
Slack
テスト結果通知
© DMM.comc
自動E2Eテスト開発戦略の決定
28
• すみ分けの検討項目
① SUTと相性が良いか
A) Webシステム以外も対象とするか
B) Webシステムで完結するか
② 誰主体で運用するか
A) QAメンバ主体
B) 開発メンバ主体(QAメンバ含む)
③ 導入時期に余裕があるか
A) すぐに導入したい
B) 少しずつ作り上げていきたい
ローコードベース コードベース
A B
A B
A B
⇒「コードベース」を選択。
© DMM.comc
開発/運用体制
29
• 2週間スプリントで自動E2Eテストを開発。(開発期間:約5カ月)
• QA部メンバが開発し、開発メンバも含めてレビューを実施。
• 開発完了した自動E2Eテストは、ステージング環境で日次定期実行を実施。
テストシナリオA
Firefoxをテスト
モバイルをテスト
テストシナリオB
テストシナリオC
・・・
テストシナリオA
テストシナリオB
CIツールによる
日次定期実行
を確認
2週間スプリント
日次夕会
QA部メンバ
開発メンバ
※開発イメージ
スプリントバックログ
自動E2Eテストバックログ
2名~ 3名
© DMM.comc
構築した自動E2Eテスト(1)
• テスト内容
• ユーザーが利用できないと困る、基本的なユーザーシナリオが動作するか
• 会員登録、ログイン/ログアウト、2段階認証、メールアドレス/パスワード再設定 など
• ページ、ブラウザ、端末の組み合わせで動作保証ができているか
• 採用したツール
• ツール名:TestCafe
• 開発言語:TypeScript
• 利用技術:ブラウザベース
• 選定理由:
• Webドライバが要らないため、Seleniumなどに比べて環境構築がしやすい。
• プロダクトと同じ開発言語(TypeScript)で開発できる。
• QA部メンバにコーディングスキルが求められるが、開発メンバもレビューや開発がしやすい。
• コード品質を保つためのツールもテストコードに適用できる。
30
参考:TestCafe
https://testcafe.io/
© DMM.comc
構築した自動E2Eテスト(2)
31
日次定期実行、onPushトリガー
テスト実行環境
Github
開発リポジトリ
成果物利用
テスト実行
CircleCI
Github
Actions
(on stg)
テスト対象の
アプリケーション環境
Slack
OR
開発&QA部メンバ
Test Cafe
テスト環境
構築
Edge
改善②
・PCブラウザ、モバイルのテストを実行
・クロスブラウザのテストを実行
改善①
・メンテナンスを考慮したテスト実装方針
・運用ルール・体制
テスト結果通知
© DMM.comc
5.開発戦略のすみ分け
のために必要なこと
• 自動テストを開発して得られたこと
• 課題として見えてきたこと
• 開発戦略のすみ分けのために必要なこと
32
© DMM.comc
自動テストを開発して得られたこと
• 共通
• 継続的にテストした結果からプロダクトの品質情報を常に知ることができる。
• また、テストし続けると開発の動きを知るきっかけにもなる。
• 不安定なところ、テストされていないところが明確になった。
• ローコードベースの場合
• コーディングスキルが高くないQAメンバも開発することができる。
• 要員が入れ替わっても学習コストは変わらない(2week程度)
• コードベースの場合
• 開発目線でテスト開発をどのように行えばよいかの共通認識が得られる
• 開発との距離も近いので常に相談することができる
33
© DMM.comc
課題として見えてきたこと
• 共通
• 方針に沿って開発・運用できるように開発環境を整備&改善する必要がある。
• ローコードベースの場合
• ツール活用方針の策定やツール教育を行う。
• ツールを習熟するコストをあらかじめ見込んでおかないと、ツール本来のやれるべきことでき
ずに限定的な活用になってしまう。
• コードベースの場合
• コーディング、 CI/CDパイプライン構築スキルのあるメンバの教育&参画させる。
• コーディングできる&QAやテストに興味があるメンバはとても貴重。
• CI/CDパイプラインを構築したことがある人ももっと貴重。
• 継続的にテストするためには、CI/CDに組み込むことが必須。
• テスト設計スキルの教育もしくは持っているメンバの参画させる。
• コーディングスキルが重視されるため、全体のテスト設計をどのようにすればよいかを考える
メンバが不足しがち。
34
© DMM.comc
開発戦略のすみ分けのために
• 導入時は、プロダクト、プロジェクト、チームの状況に応じて、
やりやすいものを選択する。
• ただし、テストすべき領域を増やしていく場合は、現状では、ハイブリ
ットで適用する必要が出てきている。
• QAメンバであっても対応できるように、エンジニアリングスキルが求められる。
35
ローコードベース
テストシステム
コードベース
テストシステム
ローコードベース
テストシステム
コードベース
テストシステム
導入初期①
導入初期②
最終的な運用イメージ
テ
ス
ト
環
境
構
成
管
理
対応領域
自動テストシステムアーキテクチャ例
コード
ローコード
特殊デバイス
自動テスト
サブシステム
テスト適合
テスト実行
テスト定義
テスト生成
Web
自動テスト
サブシステム
テスト適合
テスト実行
テスト定義
テスト生成
テスト結果の統合
・・・
テ
ス
ト
環
境
欠陥管理
CI/CD
© DMM.comc
6. 今後の取り組み
• テスト可能な範囲を広げる
36
© DMM.comc
テスト可能な範囲を広げる(1)
適用範囲部分が限定的であるため、より広範囲にテストすることで日々の変化を
検知しやすくする。
例えば…
①単一のユースケースからユーザー体験へ
一部のサービスのユースケース(動画購入、再生)
↓
特定のユーザー体験(会員登録⇒動画購入⇒再生⇒退会)
②特殊なデバイス
PC/スマートフォン + TV、ゲーム機、VR
37
© DMM.comc
テスト可能な範囲を広げる(2)
そのためには…
自動化ニーズに対応できるチーム体制を
構築・強化する
プロセス
• ツールを適切に活用できるようにル
ールや手順を洗練させる
技術
• 良いツールがでたらどんどん試して
取り組む
人
• テスト自動化スキルがあるor意欲の
ある良い人を採用する
38
ローコードベース
自動テスト開発チーム
コードベース
自動テスト開発チーム
プロセス
人
技術
ローコードベース
自動テスト開発チーム
ハイブリッドな
自動テスト開発チーム
© DMM.comc
宣伝
39
採用強化中です!!事業と協同で品質を作り上げていくことや
ゼロから品質保証の仕組み構築から関わりたい人は是非ご応募ください!!
ただ話すだけの場も
あります!
QA部 採用 ちょっと聞く場
https://dmm-corp.com/recruit/ https://meety.net/matches/ZYgEWqhBfRIs
© DMM.comc
ご清聴ありがとうございました。
© DMM.comc
参考
• テスト自動化に関連
• Advanced Level Specialist シラバス テスト自動化エンジニア
• AutomationTest.SSF Ver1.0
• DMM Meetup資料
• DMM meetup #23 〜DMMのQAとマーケティング領域での取り組み紹介〜
• DMM meetup #29 〜DMMのプラットフォーム基盤における認証認可に関する改善〜
• DMM meetup #34 〜アジャイルQA&テスト自動化の取り組み紹介〜
41

自動テストにおけるコードベース戦略とローコード戦略のすみ分け