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
DeNAの取り組むテストエンジニアリング
Search
Kunio Okita
February 10, 2017
Technology
5
13k
DeNAの取り組むテストエンジニアリング
DeNA TechCon 2017
https://techcon.dena.com/
Kunio Okita
February 10, 2017
Tweet
Share
More Decks by Kunio Okita
See All by Kunio Okita
DeNA品質管理部を支えるカルチャーと取り組み
okitan
0
920
VCRを更新するPRが自動で飛ぶ世界で気をつけたこと
okitan
1
430
microservicesにおけるAPI自動テストにまつわるエトセトラ
okitan
12
5.3k
SWETの現在とこれから
okitan
3
7.8k
Other Decks in Technology
See All in Technology
なぜテストマネージャの視点が 必要なのか? 〜 一歩先へ進むために 〜
moritamasami
0
220
【初心者向け】ローカルLLMの色々な動かし方まとめ
aratako
7
3.5k
La gouvernance territoriale des données grâce à la plateforme Terreze
bluehats
0
170
2つのフロントエンドと状態管理
mixi_engineers
PRO
3
110
「どこから読む?」コードとカルチャーに最速で馴染むための実践ガイド
zozotech
PRO
0
420
Django's GeneratedField by example - DjangoCon US 2025
pauloxnet
0
150
オブザーバビリティが広げる AIOps の世界 / The World of AIOps Expanded by Observability
aoto
PRO
0
380
下手な強制、ダメ!絶対! 「ガードレール」を「檻」にさせない"ガバナンス"の取り方とは?
tsukaman
2
440
バイブスに「型」を!Kent Beckに学ぶ、AI時代のテスト駆動開発
amixedcolor
2
550
ガチな登山用デバイスからこんにちは
halka
1
240
ハードウェアとソフトウェアをつなぐ全てを内製している企業の E2E テストの作り方 / How to create E2E tests for a company that builds everything connecting hardware and software in-house
bitkey
PRO
1
130
[ JAWS-UG 東京 CommunityBuilders Night #2 ]SlackとAmazon Q Developerで 運用効率化を模索する
sh_fk2
3
420
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Documentation Writing (for coders)
carmenintech
74
5k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
A designer walks into a library…
pauljervisheath
207
24k
Producing Creativity
orderedlist
PRO
347
40k
Faster Mobile Websites
deanohume
309
31k
How to Think Like a Performance Engineer
csswizardry
26
1.9k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Why Our Code Smells
bkeepers
PRO
339
57k
Transcript
Copyright © DeNA Co.,Ltd. All Rights Reserved. DeNAの取り組む テストエンジニアリング Feb
10, 2017 Kunio Okita (@okitan) SWET(So=ware Engineer in Test) Group DeNA Co., Ltd. DeNA TechCon 2017
Copyright © DeNA Co.,Ltd. All Rights Reserved. ⾃⼰紹介 ! 沖⽥
邦夫 ! @okitan ! Test Engineers Meetup 主催 ! 第2回開催予定(3/7) ! Developers Summitコンテンツ委員 ! ⽇本Seleniumユーザコミュニティ ! Selenium実践⼊⾨ ! ようやく増刷しました 2
Copyright © DeNA Co.,Ltd. All Rights Reserved. SWET 3
Copyright © DeNA Co.,Ltd. All Rights Reserved. SoftWare Engineer in
Test 4
Copyright © DeNA Co.,Ltd. All Rights Reserved. DeNA TechConf 2016
! DeNAが取り組む Software Engineer in Test ! http://www.slideshare.net/masaki/dena-software- engineer-in-test ! SWETとは ! SWETの過去・現在・そして未来 ! 組織とその取り組みがどう広がってきたかの話 5
Copyright © DeNA Co.,Ltd. All Rights Reserved. DeNA TechConf 2017
! DeNAの取り組むテストエンジニアリング ! SWETの技術・スキル ! それを活かす体制 ! を中⼼に話していきたい ! さらに、⼀歩先のテストエンジニアリングの取り組み 6
Copyright © DeNA Co.,Ltd. All Rights Reserved. Agenda ! SWETの技術・スキルそれを⽀える体制
! ⼀歩先のテストエンジニアリングへの取り組み 7
Copyright © DeNA Co.,Ltd. All Rights Reserved. SWETのスキル とそれを活かす体制 8
Copyright © DeNA Co.,Ltd. All Rights Reserved. まずはSWETのおさらいから 9
Copyright © DeNA Co.,Ltd. All Rights Reserved. SWETのミッション・ステートメント ! ソフトウェアテストを起点とした
1. プロダクト・サービスの品質向上 2. エンジニアの開発⽣産性向上 ! 価値のあるものを素早く提供できるように 10
Copyright © DeNA Co.,Ltd. All Rights Reserved. 現在のSWETグループの体制 11
Copyright © DeNA Co.,Ltd. All Rights Reserved. 現在のSWETグループの体制 ! 事業サポート系チーム
! ざっくりいうと深さ担当 ! テスト基盤チーム ! ざっくりいうと広さ担当 12
Copyright © DeNA Co.,Ltd. All Rights Reserved. 深さの事業サポート ! 深さとは
! 事業状況を踏まえた品質基準を決められること ! 事業リスク ! 技術的リスク ! だけでなく ! 事業部の品質的なコミットメントを引き出せること 13
Copyright © DeNA Co.,Ltd. All Rights Reserved. 事業部の品質的なコミットメントを引き出す ! 品質を⾃分ごととして捉えられるように
! よくありがちな検証はQAにおまかせにはさせない ! 継続的な改善活動の推進 ! 検証・障碍・お問い合わせからのフィードバック ! メトリクスの測定と監視 ! 開発プロセスの最適化 ! ⾃動化による改善 14
Copyright © DeNA Co.,Ltd. All Rights Reserved. 広さのテスト基盤 ! 事業サポートで必要な広範な技術をきちんとおさえる
! ライブラリやフレームワークのウォッチ ! ピンポイントで事業サポートとして動く ! 共通的に必要なサービスの開発 ! CircleCIの導⼊ ! STFのトライアル ! ⼀歩先を⾏くテストエンジニアリング 15
Copyright © DeNA Co.,Ltd. All Rights Reserved. 現在のSWETグループの体制 16
Copyright © DeNA Co.,Ltd. All Rights Reserved. DeNAの事業の特⻑ ! どんどん新しい事業領域に進出
! インターネットを通してサービスを提供 ! サービスを改善していくことに強み 17
Copyright © DeNA Co.,Ltd. All Rights Reserved. サービスの改善を下⽀えする ! 事業の段階・状況に応じて
! スピード(D) ! 品質(Q) のちょうどいいバランスを狙う ! ちょうどいいはちょうむずい ! ちょうどいいを続けていくための⼀貫した様々な仕組みが必要 ! 可視化 ! フィードバック 18
Copyright © DeNA Co.,Ltd. All Rights Reserved. 統合テスト設計 コンポーネント テスト設計
システムテスト設計 要求分析 機能設計 詳細設計 実装 コンポーネント テスト 統合テスト 受け入れテスト 基本設計 システムテスト ⼀般的なWモデルでの開発サイクル
Copyright © DeNA Co.,Ltd. All Rights Reserved. 統合テスト設計 コンポーネント テスト設計
システムテスト設計 要求分析 機能設計 詳細設計 実装 コンポーネント テスト 統合テスト 受け入れテスト 基本設計 システムテスト * リスク分析 * 品質特性への落とし込み * テストアーキテクチャ設計 * 要求追加・基本設計へのFB * テストコーチ * モデル検査 * CI/CD構築 * テスト対象分析 * テスタビリティ確保 * システムテスト自動化 * 非機能テスト準備 開発サイクルそれぞれで何を作り込むか
Copyright © DeNA Co.,Ltd. All Rights Reserved. ⼀貫したフィードバックと計測のパイプライン ! 品質を作りこむうえで
! 計測され可視化されていることが重要 ! フィードバックまで⾃動化されていてことが⼤事 ! デリバリーパイプラインをまずはきちんと構築する ! 最初は少ないメトリクス・フィードバックでよい ! その上で事業の状況と相談しつつ進めていく 21
Copyright © DeNA Co.,Ltd. All Rights Reserved. システムテスト 設計 統合テスト
設計 コンポーネント テスト設計 要求分析 基本設計 * リスク分析 * 品質特性への落とし込み * テストアーキテクチャ設計 * 要求追加基本設計へのFB * テストコーチ * モデル検査 * CI/CD構築 * テスト対象分析 * テスタビリティ確保 KPI 品質指 標 * 当たり前品質視点 * 全体スケジュール見直し 機能設計 * 曖昧な仕様の明確化 * 仕様バグ検出 * テスタビリティ確保 詳細設計 実装 コンポーネント テスト コード メトリクス 統合テスト * 実装の誤り検出 * 実装の負債検出 * レビュー効率化 プロジェクト メトリクス システムテスト リリース CI/CD ⼀貫したフィードバックと計測のパイプライン
Copyright © DeNA Co.,Ltd. All Rights Reserved. 今後のデリバリーパイプラインの展望 ! これまで
! Jenkinsになんでもやらせすぎ問題 ! Jenkinsおじさん問題 ! プラグイン地獄 ! これから ! 特化した付加価値を提供する「サービス」をつなぎあわせ る ! パイプラインを簡単に記述できる ! 各種サービスの設定をうまくマネージできる 23
Copyright © DeNA Co.,Ltd. All Rights Reserved. ここまでのまとめ ! SWETの技術・スキル・それを⽀える体制
! 品質作り込み・計測のパイプライン構築を基本とする ! 可視化 ! フィードバック ! 事業の状況にあわせてパイプラインを拡張 ! 品質作り込みのサービス化 24
Copyright © DeNA Co.,Ltd. All Rights Reserved. Agenda ! SWETの技術・スキルそれを⽀える体制
! ⼀歩先のテストエンジニアリングへの取り組み 25
Copyright © DeNA Co.,Ltd. All Rights Reserved. ⼀歩先の テストエンジニアリングへの 取り組み
26
Copyright © DeNA Co.,Ltd. All Rights Reserved. そのまえに取り組みの⽅針 27
Copyright © DeNA Co.,Ltd. All Rights Reserved. システムテスト 設計 統合テスト
設計 コンポーネント テスト設計 要求分析 基本設計 * リスク分析 * 品質特性への落とし込み * テストアーキテクチャ設計 * 要求追加基本設計へのFB * テストコーチ * モデル検査 * CI/CD構築 * テスト対象分析 * テスタビリティ確保 KPI 品質指 標 * 当たり前品質視点 * 全体スケジュール見直し 機能設計 * 曖昧な仕様の明確化 * 仕様バグ検出 * テスタビリティ確保 詳細設計 実装 コンポーネント テスト コード メトリクス 統合テスト * 実装の誤り検出 * 実装の負債検出 * レビュー効率化 プロジェクト メトリクス システムテスト リリース CI/CD 基本のデリバリーパイプライン
Copyright © DeNA Co.,Ltd. All Rights Reserved. デリバリーパイプラインの促進 ! パイプラインを⾼度化していきたい
! 多くのサービスとつなぎこみたい ! パイプラインを簡単に始めたい ! システムテスト⾃動化を簡単にしたい 29
Copyright © DeNA Co.,Ltd. All Rights Reserved. ⼀歩先のテストエンジニアリング ! 外部環境変化をトリガーとするパイプライン実⾏
! ライブラリバージョンアップ検知サービスの開発 ! パイプラインの最初の⼀歩のサポート ! 単純なシステム統合テストの⾃動化 ! ⾃動テストの省⼒化 ! AI利⽤による⾃動化の⾼精度化 30
Copyright © DeNA Co.,Ltd. All Rights Reserved. ⼀歩先のテストエンジニアリング ! 外部環境変化をトリガーとするパイプライン実⾏
! ライブラリバージョンアップ検知サービスの開発 ! パイプラインの最初の⼀歩のサポート ! 単純なシステム統合テストの⾃動化 ! ⾃動テストの省⼒化 ! AI利⽤による⾃動化の⾼精度化 31
Copyright © DeNA Co.,Ltd. All Rights Reserved. 外部環境の変化に伴うリスク ! 外部サービス連携がいつのまにか動かなく。。
! 利⽤ライブラリ・ツールのバージョンあげたら動かなく。。 ! 特にモバイルアプリ周り 32
Copyright © DeNA Co.,Ltd. All Rights Reserved. モバイルアプリのツール・ライブラリ状況 ! 進化が早く・たまに動かなくなることがある
! 強制的にバージョンアップが必須なことも ! 放置しておくと負債がすぐ⼤きくなるのに、 ! 都度対応するにはコストが⼤きい 33
Copyright © DeNA Co.,Ltd. All Rights Reserved. やりたいこと ! ツールのバージョンアップを素早くキャッチアップできる
! マイナーなのかメジャーなのか ! CHANGELOG ! ⼈間がPullしにいくのではなくPushされる ! バージョンあげられそうかどうかトリアージ ! 標準的なプロジェクト構成でバージョンをあげてビルドしてみる ! あげられそうだったら実プロダクトに展開する 34
Copyright © DeNA Co.,Ltd. All Rights Reserved. マスティフ (バージョンアップ監視) 35
Copyright © DeNA Co.,Ltd. All Rights Reserved. マスティフ (バージョンアップ監視) 36
Copyright © DeNA Co.,Ltd. All Rights Reserved. マスティフ (バージョンアップ監視) !
外部環境のリスクとうまくやっていけるようになる ! リスクを⾒積もれ対応計画をたてられる ! 個別プロジェクトに閉じがちなノウハウが共有できる ! 横串ではまり率やはまったときの事例等を収集 ! 計測とフィードバックをもとによりよいサービスにしていける ! http://www.slideshare.net/tarappo/ss-71179542 37
Copyright © DeNA Co.,Ltd. All Rights Reserved. ⼀歩先のテストエンジニアリング ! 外部環境変化をトリガーとするパイプライン実⾏
! ライブラリバージョンアップ検知サービスの開発 ! パイプラインの最初の⼀歩のサポート ! 単純なシステム統合テストの⾃動化 ! ⾃動テストの省⼒化 ! AI利⽤による⾃動化の⾼精度化 38
Copyright © DeNA Co.,Ltd. All Rights Reserved. システムテスト 設計 統合テスト
設計 コンポーネント テスト設計 要求分析 基本設計 * リスク分析 * 品質特性への落とし込み * テストアーキテクチャ設計 * 要求追加基本設計へのFB * テストコーチ * モデル検査 * CI/CD構築 * テスト対象分析 * テスタビリティ確保 KPI 品質指 標 * 当たり前品質視点 * 全体スケジュール見直し 機能設計 * 曖昧な仕様の明確化 * 仕様バグ検出 * テスタビリティ確保 詳細設計 実装 コンポーネント テスト コード メトリクス 統合テスト * 実装の誤り検出 * 実装の負債検出 * レビュー効率化 プロジェクト メトリクス システムテスト リリース CI/CD パイプライン推進の課題
Copyright © DeNA Co.,Ltd. All Rights Reserved. パイプラインの課題 デプロイの正当性を確認するフェーズが難易度⾼い !
Microservices (API) ! スタブなしにAPIを叩くテスト ! Webアプリケーション ! ブラウザでアクセスするテスト ! モバイルアプリ ! モバイルアプリをデバイス上で起動するテスト 40
Copyright © DeNA Co.,Ltd. All Rights Reserved. システム統合テストは⼤変 ! 開発者が利⽤する技術に慣れていない
! 特にブラウザ・実機の⾃動操作 ! テスト実⾏結果が不安定 ! ⾮同期との戦い ! メンテナンスが⼤変 ! 変更への追従 ! テストデータのマネージメント 41
Copyright © DeNA Co.,Ltd. All Rights Reserved. ⼤変なシステム統合テストをカンタンに ! 最初の⼀歩をカンタンにする
! メンテナンスもできるかぎり不要にする ! API⾃動テスト ! 仕様を記述することで単純な⾃動テストを⾃動⽣成 ! Webアプリケーション・モバイルアプリケーション ! クローラによる探索による⾃動チェッキング 42
Copyright © DeNA Co.,Ltd. All Rights Reserved. 単純なAPIテストの⾃動⽣成 ! スキーマ記述⾔語から⾃動⽣成
! JSON ShemaやOpenAPI specification等 ! ⾃動⽣成(スキーマ更新に追従) ! ハッピーパスのテストケース ! デフォルトパラメータ ! 正常系テストケース ! レスポンスマッチャ 43
Copyright © DeNA Co.,Ltd. All Rights Reserved. クローラの探索による⾃動チェッキング ! Webアプリケーション・モバイル・アプリケーション
! エントリーポイントからはUIによってリンクされている ! リンクを辿っていけばある程度網羅できる ! アプリケーションステートの変化には対応しない割り切り ! 以下を記録し時間変化をチェックする ! エンドポイントからエンドポイントへのパス ! 画⾯のスナップショット 44
Copyright © DeNA Co.,Ltd. All Rights Reserved. ⼀歩先のテストエンジニアリング ! 外部環境変化をトリガーとするパイプライン実⾏
! ライブラリバージョンアップ検知サービスの開発 ! パイプラインの最初の⼀歩のサポート ! 単純なシステム統合テストの⾃動化 ! ⾃動テストの省⼒化 ! AI利⽤による⾃動化の⾼精度化 45
Copyright © DeNA Co.,Ltd. All Rights Reserved. AIを利⽤したE2Eテスト⾃動化の⾼精度化 ! これまでのE2Eテストの⾃動化
! ひとことでいうと泥臭さのかたまり ! たとえば ! ⾮同期への対応 ! 待ち時間の微調整 ! 失敗時のリトライ ! 前提条件の微妙な違いによる分岐 ! 初回実⾏時だけ出るダイアログへの対応 46
Copyright © DeNA Co.,Ltd. All Rights Reserved. AIの利⽤ ! ⾃動化の際にも、作り込まずに⼈間のように対応させたい
! たとえば ! ⻑くかかることがわかっているところは⻑く待ってほしい ! 途中で⽌まってそうだったらさっさとNG出してほしい ! 失敗してリトライボタン出てたら⾃動でリトライしてほしい ! OSが出すようなダイアログ出て⽌まってたら押してほしい ! ログボは受け取っておいてほしい 47
Copyright © DeNA Co.,Ltd. All Rights Reserved. まずは学習基盤の整備から ! 当然学習データがないと何もしてくれない
! 先⽴つものが必要 ! テスト結果収集基盤を開発中 ! ⾃動テスト実⾏時のエビデンスとして保存 ! ⼿動テストの裏で収集 ! テストを24時間動かしてどんどんためていく ! ⾃動テストの⾃動化 48
Copyright © DeNA Co.,Ltd. All Rights Reserved. まとめ ! SWETの技術・スキルそれを⽀える体制
! 品質作り込み・計測のパイプライン構築を基本とする ! 事業の状況にあわせてパイプラインを拡張 ! 品質作り込みのサービス化 ! ⼀歩先のテストエンジニアリングへの取り組み ! サービス化とその組み合わせ ! パイプラインの最初の⼀歩を簡単に ! ⼀歩踏み出せばそれを加速するAIの活⽤ 49
Copyright © DeNA Co.,Ltd. All Rights Reserved. ご清聴ありがとうございました 50