Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DeNAの取り組むテストエンジニアリング

Kunio Okita
February 10, 2017

 DeNAの取り組むテストエンジニアリング

DeNA TechCon 2017
https://techcon.dena.com/

Kunio Okita

February 10, 2017
Tweet

More Decks by Kunio Okita

Other Decks in Technology

Transcript

  1. 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
  2. Copyright © DeNA Co.,Ltd. All Rights Reserved. ⾃⼰紹介 !  沖⽥

    邦夫 !  @okitan !  Test Engineers Meetup 主催 !  第2回開催予定(3/7) !  Developers Summitコンテンツ委員 !  ⽇本Seleniumユーザコミュニティ !  Selenium実践⼊⾨ !  ようやく増刷しました 2
  3. 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
  4. Copyright © DeNA Co.,Ltd. All Rights Reserved. DeNA TechConf 2017

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

    !  ⼀歩先のテストエンジニアリングへの取り組み 7
  6. Copyright © DeNA Co.,Ltd. All Rights Reserved. SWETのミッション・ステートメント !  ソフトウェアテストを起点とした

    1.  プロダクト・サービスの品質向上 2.  エンジニアの開発⽣産性向上 !  価値のあるものを素早く提供できるように 10
  7. Copyright © DeNA Co.,Ltd. All Rights Reserved. 現在のSWETグループの体制 !  事業サポート系チーム

    !  ざっくりいうと深さ担当 !  テスト基盤チーム !  ざっくりいうと広さ担当 12
  8. Copyright © DeNA Co.,Ltd. All Rights Reserved. 深さの事業サポート !  深さとは

    !  事業状況を踏まえた品質基準を決められること !  事業リスク !  技術的リスク !  だけでなく !  事業部の品質的なコミットメントを引き出せること 13
  9. Copyright © DeNA Co.,Ltd. All Rights Reserved. 事業部の品質的なコミットメントを引き出す !  品質を⾃分ごととして捉えられるように

    !  よくありがちな検証はQAにおまかせにはさせない !  継続的な改善活動の推進 !  検証・障碍・お問い合わせからのフィードバック !  メトリクスの測定と監視 !  開発プロセスの最適化 !  ⾃動化による改善 14
  10. Copyright © DeNA Co.,Ltd. All Rights Reserved. 広さのテスト基盤 !  事業サポートで必要な広範な技術をきちんとおさえる

    !  ライブラリやフレームワークのウォッチ !  ピンポイントで事業サポートとして動く !  共通的に必要なサービスの開発 !  CircleCIの導⼊ !  STFのトライアル !  ⼀歩先を⾏くテストエンジニアリング 15
  11. Copyright © DeNA Co.,Ltd. All Rights Reserved. DeNAの事業の特⻑ !  どんどん新しい事業領域に進出

    !  インターネットを通してサービスを提供 !  サービスを改善していくことに強み 17
  12. Copyright © DeNA Co.,Ltd. All Rights Reserved. サービスの改善を下⽀えする !  事業の段階・状況に応じて

    !  スピード(D) !  品質(Q) のちょうどいいバランスを狙う !  ちょうどいいはちょうむずい !  ちょうどいいを続けていくための⼀貫した様々な仕組みが必要 !  可視化 !  フィードバック 18
  13. Copyright © DeNA Co.,Ltd. All Rights Reserved. 統合テスト設計 コンポーネント テスト設計

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

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

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

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

    !  Jenkinsになんでもやらせすぎ問題 !  Jenkinsおじさん問題 !  プラグイン地獄 !  これから !  特化した付加価値を提供する「サービス」をつなぎあわせ る !  パイプラインを簡単に記述できる !  各種サービスの設定をうまくマネージできる 23
  18. Copyright © DeNA Co.,Ltd. All Rights Reserved. ここまでのまとめ !  SWETの技術・スキル・それを⽀える体制

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

    !  ⼀歩先のテストエンジニアリングへの取り組み 25
  20. Copyright © DeNA Co.,Ltd. All Rights Reserved. システムテスト 設計 統合テスト

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

    !  多くのサービスとつなぎこみたい !  パイプラインを簡単に始めたい !  システムテスト⾃動化を簡単にしたい 29
  22. Copyright © DeNA Co.,Ltd. All Rights Reserved. ⼀歩先のテストエンジニアリング !  外部環境変化をトリガーとするパイプライン実⾏

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

    !  ライブラリバージョンアップ検知サービスの開発 !  パイプラインの最初の⼀歩のサポート !  単純なシステム統合テストの⾃動化 !  ⾃動テストの省⼒化 !  AI利⽤による⾃動化の⾼精度化 31
  24. Copyright © DeNA Co.,Ltd. All Rights Reserved. 外部環境の変化に伴うリスク !  外部サービス連携がいつのまにか動かなく。。

    !  利⽤ライブラリ・ツールのバージョンあげたら動かなく。。 !  特にモバイルアプリ周り 32
  25. Copyright © DeNA Co.,Ltd. All Rights Reserved. モバイルアプリのツール・ライブラリ状況 !  進化が早く・たまに動かなくなることがある

    !  強制的にバージョンアップが必須なことも !  放置しておくと負債がすぐ⼤きくなるのに、 !  都度対応するにはコストが⼤きい 33
  26. Copyright © DeNA Co.,Ltd. All Rights Reserved. やりたいこと !  ツールのバージョンアップを素早くキャッチアップできる

    !  マイナーなのかメジャーなのか !  CHANGELOG !  ⼈間がPullしにいくのではなくPushされる !  バージョンあげられそうかどうかトリアージ !  標準的なプロジェクト構成でバージョンをあげてビルドしてみる !  あげられそうだったら実プロダクトに展開する 34
  27. Copyright © DeNA Co.,Ltd. All Rights Reserved. マスティフ (バージョンアップ監視) ! 

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

    !  ライブラリバージョンアップ検知サービスの開発 !  パイプラインの最初の⼀歩のサポート !  単純なシステム統合テストの⾃動化 !  ⾃動テストの省⼒化 !  AI利⽤による⾃動化の⾼精度化 38
  29. Copyright © DeNA Co.,Ltd. All Rights Reserved. システムテスト 設計 統合テスト

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

    Microservices (API) !  スタブなしにAPIを叩くテスト !  Webアプリケーション !  ブラウザでアクセスするテスト !  モバイルアプリ !  モバイルアプリをデバイス上で起動するテスト 40
  31. Copyright © DeNA Co.,Ltd. All Rights Reserved. システム統合テストは⼤変 !  開発者が利⽤する技術に慣れていない

    !  特にブラウザ・実機の⾃動操作 !  テスト実⾏結果が不安定 !  ⾮同期との戦い !  メンテナンスが⼤変 !  変更への追従 !  テストデータのマネージメント 41
  32. Copyright © DeNA Co.,Ltd. All Rights Reserved. ⼤変なシステム統合テストをカンタンに !  最初の⼀歩をカンタンにする

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

    !  JSON ShemaやOpenAPI specification等 !  ⾃動⽣成(スキーマ更新に追従) !  ハッピーパスのテストケース !  デフォルトパラメータ !  正常系テストケース !  レスポンスマッチャ 43
  34. Copyright © DeNA Co.,Ltd. All Rights Reserved. クローラの探索による⾃動チェッキング !  Webアプリケーション・モバイル・アプリケーション

    !  エントリーポイントからはUIによってリンクされている !  リンクを辿っていけばある程度網羅できる !  アプリケーションステートの変化には対応しない割り切り !  以下を記録し時間変化をチェックする !  エンドポイントからエンドポイントへのパス !  画⾯のスナップショット 44
  35. Copyright © DeNA Co.,Ltd. All Rights Reserved. ⼀歩先のテストエンジニアリング !  外部環境変化をトリガーとするパイプライン実⾏

    !  ライブラリバージョンアップ検知サービスの開発 !  パイプラインの最初の⼀歩のサポート !  単純なシステム統合テストの⾃動化 !  ⾃動テストの省⼒化 !  AI利⽤による⾃動化の⾼精度化 45
  36. Copyright © DeNA Co.,Ltd. All Rights Reserved. AIを利⽤したE2Eテスト⾃動化の⾼精度化 !  これまでのE2Eテストの⾃動化

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

    !  たとえば !  ⻑くかかることがわかっているところは⻑く待ってほしい !  途中で⽌まってそうだったらさっさとNG出してほしい !  失敗してリトライボタン出てたら⾃動でリトライしてほしい !  OSが出すようなダイアログ出て⽌まってたら押してほしい !  ログボは受け取っておいてほしい 47
  38. Copyright © DeNA Co.,Ltd. All Rights Reserved. まずは学習基盤の整備から !  当然学習データがないと何もしてくれない

    !  先⽴つものが必要 !  テスト結果収集基盤を開発中 !  ⾃動テスト実⾏時のエビデンスとして保存 !  ⼿動テストの裏で収集 !  テストを24時間動かしてどんどんためていく !  ⾃動テストの⾃動化 48
  39. Copyright © DeNA Co.,Ltd. All Rights Reserved. まとめ !  SWETの技術・スキルそれを⽀える体制

    !  品質作り込み・計測のパイプライン構築を基本とする !  事業の状況にあわせてパイプラインを拡張 !  品質作り込みのサービス化 !  ⼀歩先のテストエンジニアリングへの取り組み !  サービス化とその組み合わせ !  パイプラインの最初の⼀歩を簡単に !  ⼀歩踏み出せばそれを加速するAIの活⽤ 49