Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. ⾃⼰紹介 !  沖⽥ 邦夫 !  @okitan !  Test Engineers Meetup 主催 !  第2回開催予定(3/7) !  Developers Summitコンテンツ委員 !  ⽇本Seleniumユーザコミュニティ !  Selenium実践⼊⾨ !  ようやく増刷しました 2

Slide 3

Slide 3 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. SWET 3

Slide 4

Slide 4 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. SoftWare Engineer in Test 4

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. DeNA TechConf 2017 !  DeNAの取り組むテストエンジニアリング !  SWETの技術・スキル !  それを活かす体制 !  を中⼼に話していきたい !  さらに、⼀歩先のテストエンジニアリングの取り組み 6

Slide 7

Slide 7 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. Agenda !  SWETの技術・スキルそれを⽀える体制 !  ⼀歩先のテストエンジニアリングへの取り組み 7

Slide 8

Slide 8 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. SWETのスキル とそれを活かす体制 8

Slide 9

Slide 9 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. まずはSWETのおさらいから 9

Slide 10

Slide 10 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. SWETのミッション・ステートメント !  ソフトウェアテストを起点とした 1.  プロダクト・サービスの品質向上 2.  エンジニアの開発⽣産性向上 !  価値のあるものを素早く提供できるように 10

Slide 11

Slide 11 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. 現在のSWETグループの体制 11

Slide 12

Slide 12 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. 現在のSWETグループの体制 !  事業サポート系チーム !  ざっくりいうと深さ担当 !  テスト基盤チーム !  ざっくりいうと広さ担当 12

Slide 13

Slide 13 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. 深さの事業サポート !  深さとは !  事業状況を踏まえた品質基準を決められること !  事業リスク !  技術的リスク !  だけでなく !  事業部の品質的なコミットメントを引き出せること 13

Slide 14

Slide 14 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. 事業部の品質的なコミットメントを引き出す !  品質を⾃分ごととして捉えられるように !  よくありがちな検証はQAにおまかせにはさせない !  継続的な改善活動の推進 !  検証・障碍・お問い合わせからのフィードバック !  メトリクスの測定と監視 !  開発プロセスの最適化 !  ⾃動化による改善 14

Slide 15

Slide 15 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. 広さのテスト基盤 !  事業サポートで必要な広範な技術をきちんとおさえる !  ライブラリやフレームワークのウォッチ !  ピンポイントで事業サポートとして動く !  共通的に必要なサービスの開発 !  CircleCIの導⼊ !  STFのトライアル !  ⼀歩先を⾏くテストエンジニアリング 15

Slide 16

Slide 16 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. 現在のSWETグループの体制 16

Slide 17

Slide 17 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. DeNAの事業の特⻑ !  どんどん新しい事業領域に進出 !  インターネットを通してサービスを提供 !  サービスを改善していくことに強み 17

Slide 18

Slide 18 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. サービスの改善を下⽀えする !  事業の段階・状況に応じて !  スピード(D) !  品質(Q) のちょうどいいバランスを狙う !  ちょうどいいはちょうむずい !  ちょうどいいを続けていくための⼀貫した様々な仕組みが必要 !  可視化 !  フィードバック 18

Slide 19

Slide 19 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. 統合テスト設計 コンポーネント テスト設計 システムテスト設計 要求分析 機能設計 詳細設計 実装 コンポーネント テスト 統合テスト 受け入れテスト 基本設計 システムテスト ⼀般的なWモデルでの開発サイクル

Slide 20

Slide 20 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. 統合テスト設計 コンポーネント テスト設計 システムテスト設計 要求分析 機能設計 詳細設計 実装 コンポーネント テスト 統合テスト 受け入れテスト 基本設計 システムテスト * リスク分析 * 品質特性への落とし込み * テストアーキテクチャ設計 * 要求追加・基本設計へのFB * テストコーチ * モデル検査 * CI/CD構築 * テスト対象分析 * テスタビリティ確保 * システムテスト自動化 * 非機能テスト準備 開発サイクルそれぞれで何を作り込むか

Slide 21

Slide 21 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. ⼀貫したフィードバックと計測のパイプライン !  品質を作りこむうえで !  計測され可視化されていることが重要 !  フィードバックまで⾃動化されていてことが⼤事 !  デリバリーパイプラインをまずはきちんと構築する !  最初は少ないメトリクス・フィードバックでよい !  その上で事業の状況と相談しつつ進めていく 21

Slide 22

Slide 22 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. システムテスト 設計 統合テスト 設計 コンポーネント テスト設計 要求分析 基本設計 * リスク分析 * 品質特性への落とし込み * テストアーキテクチャ設計 * 要求追加基本設計へのFB * テストコーチ * モデル検査 * CI/CD構築 * テスト対象分析 * テスタビリティ確保 KPI 品質指 標 * 当たり前品質視点 * 全体スケジュール見直し 機能設計 * 曖昧な仕様の明確化 * 仕様バグ検出 * テスタビリティ確保 詳細設計 実装 コンポーネント テスト コード メトリクス 統合テスト * 実装の誤り検出 * 実装の負債検出 * レビュー効率化 プロジェクト メトリクス システムテスト リリース CI/CD ⼀貫したフィードバックと計測のパイプライン

Slide 23

Slide 23 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. 今後のデリバリーパイプラインの展望 !  これまで !  Jenkinsになんでもやらせすぎ問題 !  Jenkinsおじさん問題 !  プラグイン地獄 !  これから !  特化した付加価値を提供する「サービス」をつなぎあわせ る !  パイプラインを簡単に記述できる !  各種サービスの設定をうまくマネージできる 23

Slide 24

Slide 24 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. ここまでのまとめ !  SWETの技術・スキル・それを⽀える体制 !  品質作り込み・計測のパイプライン構築を基本とする !  可視化 !  フィードバック !  事業の状況にあわせてパイプラインを拡張 !  品質作り込みのサービス化 24

Slide 25

Slide 25 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. Agenda !  SWETの技術・スキルそれを⽀える体制 !  ⼀歩先のテストエンジニアリングへの取り組み 25

Slide 26

Slide 26 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. ⼀歩先の テストエンジニアリングへの 取り組み 26

Slide 27

Slide 27 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. そのまえに取り組みの⽅針 27

Slide 28

Slide 28 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. システムテスト 設計 統合テスト 設計 コンポーネント テスト設計 要求分析 基本設計 * リスク分析 * 品質特性への落とし込み * テストアーキテクチャ設計 * 要求追加基本設計へのFB * テストコーチ * モデル検査 * CI/CD構築 * テスト対象分析 * テスタビリティ確保 KPI 品質指 標 * 当たり前品質視点 * 全体スケジュール見直し 機能設計 * 曖昧な仕様の明確化 * 仕様バグ検出 * テスタビリティ確保 詳細設計 実装 コンポーネント テスト コード メトリクス 統合テスト * 実装の誤り検出 * 実装の負債検出 * レビュー効率化 プロジェクト メトリクス システムテスト リリース CI/CD 基本のデリバリーパイプライン

Slide 29

Slide 29 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. デリバリーパイプラインの促進 !  パイプラインを⾼度化していきたい !  多くのサービスとつなぎこみたい !  パイプラインを簡単に始めたい !  システムテスト⾃動化を簡単にしたい 29

Slide 30

Slide 30 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. ⼀歩先のテストエンジニアリング !  外部環境変化をトリガーとするパイプライン実⾏ !  ライブラリバージョンアップ検知サービスの開発 !  パイプラインの最初の⼀歩のサポート !  単純なシステム統合テストの⾃動化 !  ⾃動テストの省⼒化 !  AI利⽤による⾃動化の⾼精度化 30

Slide 31

Slide 31 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. ⼀歩先のテストエンジニアリング !  外部環境変化をトリガーとするパイプライン実⾏ !  ライブラリバージョンアップ検知サービスの開発 !  パイプラインの最初の⼀歩のサポート !  単純なシステム統合テストの⾃動化 !  ⾃動テストの省⼒化 !  AI利⽤による⾃動化の⾼精度化 31

Slide 32

Slide 32 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. 外部環境の変化に伴うリスク !  外部サービス連携がいつのまにか動かなく。。 !  利⽤ライブラリ・ツールのバージョンあげたら動かなく。。 !  特にモバイルアプリ周り 32

Slide 33

Slide 33 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. モバイルアプリのツール・ライブラリ状況 !  進化が早く・たまに動かなくなることがある !  強制的にバージョンアップが必須なことも !  放置しておくと負債がすぐ⼤きくなるのに、 !  都度対応するにはコストが⼤きい 33

Slide 34

Slide 34 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. やりたいこと !  ツールのバージョンアップを素早くキャッチアップできる !  マイナーなのかメジャーなのか !  CHANGELOG !  ⼈間がPullしにいくのではなくPushされる !  バージョンあげられそうかどうかトリアージ !  標準的なプロジェクト構成でバージョンをあげてビルドしてみる !  あげられそうだったら実プロダクトに展開する 34

Slide 35

Slide 35 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. マスティフ (バージョンアップ監視) 35

Slide 36

Slide 36 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. マスティフ (バージョンアップ監視) 36

Slide 37

Slide 37 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. マスティフ (バージョンアップ監視) !  外部環境のリスクとうまくやっていけるようになる !  リスクを⾒積もれ対応計画をたてられる !  個別プロジェクトに閉じがちなノウハウが共有できる !  横串ではまり率やはまったときの事例等を収集 !  計測とフィードバックをもとによりよいサービスにしていける !  http://www.slideshare.net/tarappo/ss-71179542 37

Slide 38

Slide 38 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. ⼀歩先のテストエンジニアリング !  外部環境変化をトリガーとするパイプライン実⾏ !  ライブラリバージョンアップ検知サービスの開発 !  パイプラインの最初の⼀歩のサポート !  単純なシステム統合テストの⾃動化 !  ⾃動テストの省⼒化 !  AI利⽤による⾃動化の⾼精度化 38

Slide 39

Slide 39 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. システムテスト 設計 統合テスト 設計 コンポーネント テスト設計 要求分析 基本設計 * リスク分析 * 品質特性への落とし込み * テストアーキテクチャ設計 * 要求追加基本設計へのFB * テストコーチ * モデル検査 * CI/CD構築 * テスト対象分析 * テスタビリティ確保 KPI 品質指 標 * 当たり前品質視点 * 全体スケジュール見直し 機能設計 * 曖昧な仕様の明確化 * 仕様バグ検出 * テスタビリティ確保 詳細設計 実装 コンポーネント テスト コード メトリクス 統合テスト * 実装の誤り検出 * 実装の負債検出 * レビュー効率化 プロジェクト メトリクス システムテスト リリース CI/CD パイプライン推進の課題

Slide 40

Slide 40 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. パイプラインの課題 デプロイの正当性を確認するフェーズが難易度⾼い !  Microservices (API) !  スタブなしにAPIを叩くテスト !  Webアプリケーション !  ブラウザでアクセスするテスト !  モバイルアプリ !  モバイルアプリをデバイス上で起動するテスト 40

Slide 41

Slide 41 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. システム統合テストは⼤変 !  開発者が利⽤する技術に慣れていない !  特にブラウザ・実機の⾃動操作 !  テスト実⾏結果が不安定 !  ⾮同期との戦い !  メンテナンスが⼤変 !  変更への追従 !  テストデータのマネージメント 41

Slide 42

Slide 42 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. ⼤変なシステム統合テストをカンタンに !  最初の⼀歩をカンタンにする !  メンテナンスもできるかぎり不要にする !  API⾃動テスト !  仕様を記述することで単純な⾃動テストを⾃動⽣成 !  Webアプリケーション・モバイルアプリケーション !  クローラによる探索による⾃動チェッキング 42

Slide 43

Slide 43 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. 単純なAPIテストの⾃動⽣成 !  スキーマ記述⾔語から⾃動⽣成 !  JSON ShemaやOpenAPI specification等 !  ⾃動⽣成(スキーマ更新に追従) !  ハッピーパスのテストケース !  デフォルトパラメータ !  正常系テストケース !  レスポンスマッチャ 43

Slide 44

Slide 44 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. クローラの探索による⾃動チェッキング !  Webアプリケーション・モバイル・アプリケーション !  エントリーポイントからはUIによってリンクされている !  リンクを辿っていけばある程度網羅できる !  アプリケーションステートの変化には対応しない割り切り !  以下を記録し時間変化をチェックする !  エンドポイントからエンドポイントへのパス !  画⾯のスナップショット 44

Slide 45

Slide 45 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. ⼀歩先のテストエンジニアリング !  外部環境変化をトリガーとするパイプライン実⾏ !  ライブラリバージョンアップ検知サービスの開発 !  パイプラインの最初の⼀歩のサポート !  単純なシステム統合テストの⾃動化 !  ⾃動テストの省⼒化 !  AI利⽤による⾃動化の⾼精度化 45

Slide 46

Slide 46 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. AIを利⽤したE2Eテスト⾃動化の⾼精度化 !  これまでのE2Eテストの⾃動化 !  ひとことでいうと泥臭さのかたまり !  たとえば !  ⾮同期への対応 !  待ち時間の微調整 !  失敗時のリトライ !  前提条件の微妙な違いによる分岐 !  初回実⾏時だけ出るダイアログへの対応 46

Slide 47

Slide 47 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. AIの利⽤ !  ⾃動化の際にも、作り込まずに⼈間のように対応させたい !  たとえば !  ⻑くかかることがわかっているところは⻑く待ってほしい !  途中で⽌まってそうだったらさっさとNG出してほしい !  失敗してリトライボタン出てたら⾃動でリトライしてほしい !  OSが出すようなダイアログ出て⽌まってたら押してほしい !  ログボは受け取っておいてほしい 47

Slide 48

Slide 48 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. まずは学習基盤の整備から !  当然学習データがないと何もしてくれない !  先⽴つものが必要 !  テスト結果収集基盤を開発中 !  ⾃動テスト実⾏時のエビデンスとして保存 !  ⼿動テストの裏で収集 !  テストを24時間動かしてどんどんためていく !  ⾃動テストの⾃動化 48

Slide 49

Slide 49 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. まとめ !  SWETの技術・スキルそれを⽀える体制 !  品質作り込み・計測のパイプライン構築を基本とする !  事業の状況にあわせてパイプラインを拡張 !  品質作り込みのサービス化 !  ⼀歩先のテストエンジニアリングへの取り組み !  サービス化とその組み合わせ !  パイプラインの最初の⼀歩を簡単に !  ⼀歩踏み出せばそれを加速するAIの活⽤ 49

Slide 50

Slide 50 text

Copyright © DeNA Co.,Ltd. All Rights Reserved. ご清聴ありがとうございました 50