Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

開発もQAも自動テスト!「LOST JUDGMENT:裁かれざる記憶」のQAテスター参加で進化...

開発もQAも自動テスト!「LOST JUDGMENT:裁かれざる記憶」のQAテスター参加で進化した「テスト自動化チーム(仮)」の取り組みについて

CEDEC2022の講演資料です。

『開発もQAも自動テスト!「LOST JUDGMENT:裁かれざる記憶」のQAテスター参加で進化した「テスト自動化チーム(仮)」の取り組みについて』

株式会社セガ 第1事業部 阪上直樹
株式会社セガ プロジェクト業務部 門脇 健造
株式会社セガ 開発技術部 粉川貴至

SEGADevTech

August 24, 2022
Tweet

More Decks by SEGADevTech

Other Decks in Programming

Transcript

  1. 開発 • ジャンル – リーガルサスペンスアクション • 対応機種 – PlayStation🄬5 /

    PlayStation🄬4 / Xbox Series X|S / Xbox One • 対応言語 – 音声:2言語、字幕:9言語 • 多拠点開発 – 在宅勤務・海外拠点を含む 本講演のタイトル紹介 LOST JUDGMENT:裁かれざる記憶 ※赤字:本講演で重要な要素
  2. 開発 • 開発スケジュールの時系列ごと 1. きっかけ編 2. 準備編 3. 運用編 4.

    結果編 • 各時系列での各部門の視点 1. QA部門 2. 開発部門 3. 自動化技術者 講演の進行方法について
  3. 開発 • はじめに • テスト自動化事例 – きっかけ編 • QA部門 •

    開発部門 • 自動化技術者 – 準備編 – 運用編 – 結果編 • まとめ 本講演の目次
  4. 開発 「龍が如く7 光と闇の行方」開発時点 • テスト自動化チーム(仮)の構成 – メンバー • 開発部門+自動化技術者 –

    担当箇所 • 管理、運用:1名 • テスト結果の見える化:1名 • スクリプト作成・保守:4名 • 機材管理:若手プログラマの空き時間 – なぜ(仮)なのか? • 組織上認められたチームではない • 自動テストの普及後に解散するのが最終目標 テスト自動化・きっかけ編◆開発部門
  5. 自動化 • QA部門 – 今回本格的にテスト自動化に取り組むことに • 開発部門 – 開発部門内でのテスト自動化が整備され、QA部門を巻き込みた いタイミング

    • 自動化技術者とそれぞれとの関係 – QA部門と自動化技術者 • 長年テスト自動化についての協力関係はあったが、直接的な アウトプットは薄かった – 開発部門と自動化技術者 • ここ数年間、プロジェクトのテスト自動化対応に直接協力 テスト自動化・きっかけ編◆自動化技術者
  6. 自動化 テスト自動化・きっかけ編◆自動化技術者 2 0 1 0 2 0 2 0

    年月 自 動 化 の 協 力 これまでの自動化技術者とそれぞれの部門との関係 QA部門 ・自動化に対する知見の熟成と今回のきっかけ ⇒ ついに実プロジェクトでの取り組みに 開発部門 ・知見共有→直接的な協力 時 が き た ! QA部門と自動化技術者 開発部門と自動化技術者 プロジェクトへの直接的なアウトプット
  7. 開発 • はじめに • テスト自動化事例 – きっかけ編 – 準備編 •

    QA部門 • 開発部門 • 自動化技術者 – 運用編 – 結果編 • まとめ 本講演の目次
  8. 開発 • どこでもバグ報告 – バグ報告時の自動入力ツール • エラー送信 – クラッシュレポートの自動化 •

    オートテスト – 自動テストシステムの総称 • どこでもログ分析 – 開発時のゲームやツールのログを収集・分析する基盤 龍が如くスタジオの自動テスト環境 自動テスト環境の詳細は『「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて』 https://www.slideshare.net/SEGADevTech/7-234572005
  9. 開発 QA部門 自動テスト環境の構築 ダンプ保管サーバ 作成・編集 自動取得 エラー送信 見える化 開発部門 作成・編集

    見える化 エラー送信 自動取得 テストスクリプト テストケース設定 テスト環境 自動構築 自動テスト実行 テスト結果分析 テストスクリプト テストケース設定 テスト環境 自動構築 自動テスト実行 テスト結果分析 新規で準備した部分 バージョン管理 (ゲームと分離) 最新パッケージ ログサーバ
  10. 開発 • 別拠点 • PCのスペック – ゲームが動かないスペック • ネットワーク環境 –

    アクセス可否や権限 • サーバへの通信速度 – パッケージのダウンロード – ダンプのアップロード • 手動テストの邪魔にならない環境 – 手動テスト時のセーブデータや実績などに影響があると困る 開発部門とQA部門の環境の違い
  11. 開発 QA部門 自動テスト環境の構築(要検証ポイント) 作成・編集 見える化 開発部門 作成・編集 見える化 エラー送信 自動取得

    テストスクリプト テストケース設定 テスト結果分析 テストスクリプト テストケース設定 テスト環境 自動構築 自動テスト実行 テスト結果分析 新規で準備した部分 バージョン管理 (ゲームと分離) ログサーバ ダンプ保管サーバ 自動取得 エラー送信 テスト環境 自動構築 自動テスト実行 最新パッケージ
  12. 開発 • 開発部門の運用ワークフローの振り返り – エラー発生後、自動的に「エラー送信」チケットとして登録 – ダンプやログ、動画等を解析 • 修正が容易な場合 –

    そのまま即修正 • 時間がかかる場合 – チケットをコピーして正式な「バグ」チケット化 自動テスト運用ワークフローの検討 ダンプやログの解析は開発者自身でないと難しい エラー送信チケットの詳細は、『「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム』 https://www.slideshare.net/SEGADevTech/qa-238218522
  13. 開発 • QA部門用の運用ワークフローを提案 – エラー発生後、自動的に「エラー送信」チケットとして登録 – 動画等を解析 • 自動テストと同条件・同手順の手動での再現確認 –

    再現した場合 » チケットをコピーして正式な「バグ」チケット化 – 再現しないが自動テスト側で再現が継続する場合 » 開発部門のテスト自動化メンバーに調査を依頼 自動テスト運用ワークフローの提案 手動でも再現を確認しているため 修正確認も円滑に実施可能
  14. 開発 自動テスト運用ワークフロー図 QA部門・手動テストチーム QA部門・テスト自動化チーム 開発部門・開発チーム 日中:ゲーム実装 夜間:自動テスト実行 開発部門・テスト自動化チーム 日中: 自動テスト作成

    自動テスト結果分析 24時間:自動テスト実行 エラー送信 エラー送信 バグ報告 最新 パッケージ 最新 パッケージ 最新 パッケージ 最新 パッケージ どこでもバグ報告 日中:手動テスト 安定 パッケージ 日中: 自動テスト作成 自動テスト結果分析 夜間:自動テスト実行 最新 パッケージ 最新 パッケージ 情報共有
  15. 開発 • テストケース – 正常系(シナリオクリアなど) – 異常系(ランダムや探索テストなど) • 検討材料 –

    マルチプラットフォーム×多言語 • 正常系テストの組み合わせが増える – 異常系のスクリプト作成 • エラー調査を含め、難易度が高い 自動テストのテストケース設計 今回は正常系テストに注力!
  16. 自動化 • QA部門 – 環境、機材、人材、学習面それぞれ準備が必要 • 開発部門 – 自動テスト環境をQA部門で動かすための対応が必要 –

    運用の準備、QA部門とのすり合わせが必要 • 自動化技術者として – QA部門と自動化技術者 • テスト自動化の学習、開発側の自動テストシステムの仕組みの理解 をフォロー – 開発部門と自動化技術者 • QA部門に自動テストの仕組みを提供するための対応をサポート テスト自動化・準備編◆まとめ
  17. 開発 • はじめに • テスト自動化事例 – きっかけ編 – 準備編 –

    運用編 • QA部門 • 開発部門 • 自動化技術者 – 結果編 • まとめ 本講演の目次
  18. 開発 • テストケース – メインシナリオ:開発+QA – サイドケース:開発+QA – ユースドラマ:開発 –

    ミニゲーム:QA – パフォーマンス計測:開発 • 対応プラットフォーム:開発+QA • 対応言語:開発+QA 自動テストのカバー範囲(計画)
  19. QA テスト自動化・運用編◆QA部門 シナリオ名 機材名 ログ 成功 率 クリア回数 実行 回数

    自動テストのシナリオクリア結果ページ(毎日更新) 成功率が低いので 原因を調査 ※「W64」は、デバッグ用Windows版の結果
  20. QA テスト自動化・運用編◆QA部門 開発部門 開発部門とQA部門の橋渡し 共同作業中の気軽な情報交換で プロジェクトの一体感が向上! QA部門 テスト自動化チーム(仮) 最近実装したとこ ろが心配

    特定シナリオのバグが多い けど何か変更した? ミニゲームの△△が ちょっと操作しにくい ◦◦の仕様が近々 変わるかも? 正式なやり取り 今日のパッケージ はここが不安定 QA 開発
  21. 開発 マルチプラットフォームと多言語化により、組み合わせが爆発 • 組み合わせの例 – プラットフォーム:4 – 字幕言語:9 – 音声言語:2

    – DLC「海藤正治の事件簿」:あり・なし • 上記だけで4×9×2×2=144パターン – それぞれのメインシナリオ、サイドケース、ミニゲーム… マルチプラットフォーム×多言語対応 自動テストであっても、 全組み合わせを網羅するのは不可能!
  22. 開発 リソースを最大限活用する組み合わせ プラットフォーム字幕 音声 海藤DLC DevWindows 日本語 日本語 あり PS4

    英語 英語 なし PS5 ハングル 日本語 なし XBOXONE 簡体字 英語 あり XBOXSERIES 繁体字 日本語 なし DevWindows フランス 英語 なし PS4 イタリア 日本語 あり PS5 ドイツ 英語 なし XBOXONE スペイン 日本語 なし XBOXSERIES 日本語 英語 あり DevWindows 英語 日本語 なし PS4 ハングル 英語 なし PS5 簡体字 日本語 あり XBOXONE 繁体字 英語 なし XBOXSERIES フランス 日本語 なし DevWindows イタリア 英語 あり PS4 ドイツ 日本語 なし PS5 スペイン 英語 なし XBOXONE 日本語 日本語 あり XBOXSERIES 英語 英語 なし DevWindows ハングル 日本語 なし PS4 簡体字 英語 あり PS5 繁体字 日本語 なし XBOXONE フランス 英語 なし 制限の中でも 最大限の組み合わせを網羅 条件別に組み合わせが ずれていくように設定
  23. 開発 多拠点開発を支える自動テスト 【自動】全プラットフォームで実施 1. ゲームを起動 2. タイトルの設定で言語を切り替え 3. すべての言語切り替えが成功したら1 章からシナリオテストを開始

    【手動】上記の動画を目視でも確認 – 進行不能もあるため すべて手動でテストする時と比較して 確認時間と手戻りロスを大幅に削減 言語切り替えのみの自動テスト
  24. 開発 • はじめに • テスト自動化事例 – きっかけ編 – 準備編 –

    運用編 – 結果編 • QA部門 • 開発部門 • 自動化技術者 • まとめ 本講演の目次
  25. QA テスト自動化・結果編◆QA部門 QA部門内の「テスト自動化チーム(仮)」の動き 【良かった点】 ※pkg = パッケージ pkg 更新 業

    務 開 始 起動・ 手動テスト 開始 pkg ダウン ロード pkg インス トール 自動テスト 結果確認・ 手動テスト 開始 自動起動・ 自動テスト 開始 pkg 自動 インス トール pkg 自動 ダウン ロード pkg 更新
  26. 開発 • LOST JUDGMENT時のチーム構成 – メンバー • 開発部門+自動化技術者+QA部門 – 担当箇所

    • 管理、運用:2名 • テスト結果の見える化:2名 • スクリプト作成・保守:4名(QA部門2名は専任) • 機材管理:若手プログラマの空き時間 – 自動テスト専用機材(ピーク時) • PC:65台 • 開発機:43台 テスト自動化チーム(仮)の変化
  27. 開発 自動テストの実績(表) エラー検知 規模 価値 自動 テスト 総数 自動 テスト率

    自動テスト 稼働数 のべ 稼働時間 龍が如く0 誓いの場所 621件 9,664件 6.4%​ 100​ - 龍が如く6 命の詩。 8,102件 43,369件 18.7%​ 150​ 82,104 h​ 龍が如く極2 8,645件 20,675件 41.8%​ 180​ 78,160 h​ 北斗が如く 16,532件 41,190件 40.1%​ 210​ 114,808 h​ JUDGE EYES:死神の遺言 16,930件 50,671件 33.4%​ 200​ 244,040 h​ 龍が如く7 光と闇の行方(※) 32,315件 45,880件 70.4%​ 219​ 593,560 h​ LOST JUDGMENT:裁かれざる記憶 19,007件 29,833件 63.7%​ 212​ 566,976 h​ ※龍が如く7はインターナショナル版を含む
  28. 開発 自動テストの実績(表) エラー検知 規模 価値 自動 テスト 総数 自動 テスト率

    自動テスト 稼働数 のべ 稼働時間 龍が如く0 誓いの場所 621件 9,664件 6.4%​ 100​ - 龍が如く6 命の詩。 8,102件 43,369件 18.7%​ 150​ 82,104 h​ 龍が如く極2 8,645件 20,675件 41.8%​ 180​ 78,160 h​ 北斗が如く 16,532件 41,190件 40.1%​ 210​ 114,808 h​ JUDGE EYES:死神の遺言 16,930件 50,671件 33.4%​ 200​ 244,040 h​ 龍が如く7 光と闇の行方(※) 32,315件 45,880件 70.4%​ 219​ 593,560 h​ LOST JUDGMENT:裁かれざる記憶 19,007件 29,833件 63.7%​ 212​ 566,976 h​ ※龍が如く7はインターナショナル版を含む アクションゲームでも 同水準の効率を維持! 多機種・多言語で増大する 組み合わせをカバー
  29. 開発 • テストケース – メインシナリオ:100% – サイドケース:90% – ユースドラマ:100% –

    ミニゲーム:100% – TownGo(実績系):一部(手動テストチームからの要望) – パフォーマンス計測:FPS/VRAM等 • 対応プラットフォーム:100% • 対応言語:100% 自動テストのクリア率(カバー範囲)
  30. 開発 • 前作(JUDGE EYES)のデバッグ期 – メインシナリオのクリア率が不安定 – バグか自動テストの問題かの調査が多発 • 本作(LOST

    JUDGMENT)のデバッグ期 – メインシナリオの全クリアを日々100%維持 自動テストの精度が向上 不安定なテスト(Flaky Test)が減少した結果 再現率の低い不具合に気づくことができた
  31. 開発 運用 環境 自動テスト テスト自動化のロードマップ ランダム入力 パス入力 ルールベースAI プレイヤーAI スクリプト

    画像認識 機械学習 テストケース の設定 ログやキャプチャ の自動収集 クラウド実行 環境 汎用化 テストケース の自動生成 ~龍3 龍4,5,0,極 龍6,極2,7 クラッシュ レポート 最新ビルドに 更新して実行 テスト結果の 見える化 自動テストの 協力者を増やす 成果を示して 規模拡大 テスト自動化 チームの結成 みんなで 自動テスト 現在進行形
  32. 桑原 和人(株式会社セガ 第1事業部) 堀江 裕貴(株式会社セガ 第1事業部) 米澤 綾恭(株式会社セガ 第1事業部) 徐

    文杰(株式会社セガ 第1事業部) 石井 航(株式会社セガ 第1事業部) 石山 莉帆(株式会社セガ 第1事業部) 越智 拓海(株式会社セガ 第1事業部) 白崎 真希子(株式会社セガ プロジェクト業務部) 小田内 敦史(株式会社セガ プロジェクト業務部) 共同研究・開発者
  33. • 「龍が如く」の高速デバッグ術 ~そびえ立つバグの山を踏破するための弾 丸ワークフロー~ – http://jasst.jp/symposium/jasst16tokyo/pdf/E2.pdf • 無料で始める! 「龍が如く」を面白くするための 高速デバッグログ分析と

    自動化 – http://www.jasst.jp/symposium/jasst18tokyo/pdf/D4.pdf • 「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム (仮)による若手育成の取り組みについて – https://www.slideshare.net/SEGADevTech/7-234572005 • 「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取 りシステム – https://www.slideshare.net/SEGADevTech/qa-238218522 関連資料