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

自動テストのアーキテクチャとその理由ー大規模ゲーム開発の場合ー

Avatar for SEGADevTech SEGADevTech
November 06, 2025

 自動テストのアーキテクチャとその理由ー大規模ゲーム開発の場合ー

『自動テストのアーキテクチャとその理由』:https://layerx.connpass.com/event/370228/
上記の講演の一部である『自動テストのアーキテクチャとその理由ー大規模ゲーム開発の場合ー』の資料です。

株式会社セガ 開発技術部 阪上 直樹

Avatar for SEGADevTech

SEGADevTech

November 06, 2025
Tweet

More Decks by SEGADevTech

Other Decks in Programming

Transcript

  1. ©SEGA • 阪上 直樹(さかうえ なおき) • 職種 – シニアクオリティエンジニア •

    所属 – 株式会社セガ – CEDEC企画委員 • 過去講演 – 「龍が如くスタジオ」のQAエンジニアリ ング技術を結集した全自動バグ取りシス テム • 現在の仕事 – 社内を横断して自動化をサポート 自己紹介
  2. ©SEGA Notify Servers (Visualization) Servers (File/DB) Servers (CI/CD) Test Cases

    Game Instances (PC/Console) Hosts (PC) 自動テストのアーキテクチャ(目次) Fluentd Elasticsearch Folium (Static) Kibana (Dynamic) AutoTest Client AutoTest Manager In-Game Debug Log Sender Target Controller Crash Reporter File Sever (Dump) Redmine (Wiki) AutoTest Monitor Test Scripts (Python) Game Agents (PC) E2E Auto Play Teams Email Redmine (Issue) Version Control Video File Sharing Jenkins File Sever (Package) Integration Smoke Game Object Unit Build (Warn as Error) Coverity Data Validation
  3. ©SEGA Notify Servers (Visualization) Servers (File/DB) Servers (CI/CD) Test Cases

    Game Instances (PC/Console) Hosts (PC) 商用・OSSのサービス・ツールの部分 Fluentd Elasticsearch Folium (Static) Kibana (Dynamic) AutoTest Client AutoTest Manager In-Game Debug Log Sender Target Controller Crash Reporter File Sever (Dump) Redmine (Wiki) AutoTest Monitor Test Scripts (Python) Game Agents (PC) E2E Auto Play Teams Email Redmine (Issue) Version Control Video File Sharing Jenkins File Sever (Package) Integration Smoke Game Object Unit Build (Warn as Error) Coverity Data Validation
  4. ©SEGA Notify Servers (Visualization) Servers (File/DB) Servers (CI/CD) Test Cases

    Game Instances (PC/Console) Hosts (PC) 自動テストのアーキテクチャ(目次) Fluentd Elasticsearch Folium (Static) Kibana (Dynamic) AutoTest Client AutoTest Manager In-Game Debug Log Sender Target Controller Crash Reporter File Sever (Dump) Redmine (Wiki) AutoTest Monitor Test Scripts (Python) Game Agents (PC) E2E Auto Play Teams Email Redmine (Issue) Version Control Video File Sharing Jenkins File Sever (Package) Unit Build (Warn as Error) Coverity Data Validation Integration Smoke Game Object 大規模ゲーム開発における 自動テストの目的と流れ
  5. ©SEGA • QCD(Quality/Cost/Delivery)への貢献 • ゲーム開発におけるQCD – Quality(品質) • ゲームを面白くするための作業に集中 –

    Cost(コスト) • 開発規模拡大に伴うQAコスト上昇を抑制 – Delivery(納期) • 開発サイクルを高速化して、より早くユーザーに届ける なぜゲーム開発に自動テストが必要? ゲームをより楽しく作れる!
  6. ©SEGA • 現場のニーズに応えるために振り返りと改善 – 自動テストを導入して、15年間で15タイトル以上 • 毎リリース後に振り返りを行い継続的な改善 – テストケース拡大 •

    モンキーテストからスクリプト実行へ – テスト結果分析 • ログ分析基盤 – マルチプラットフォーム • 常時数百台の稼働に拡大 – 多拠点開発 • ツールの英語化、各拠点のサポート体制 このアーキテクチャになるまでの歴史
  7. ©SEGA • 2010年:10ヵ月でHDゲームを開発する方法 ~龍が如くを支えたテクノロジ~ – https://cedil.cesa.or.jp/cedil_sessions/view/324 • 2016年:「龍が如く」の高速デバッグ術 ~そびえ立つバグの山を踏破するための弾丸ワークフロー~ –

    https://jasst.jp/symposium/jasst16tokyo/pdf/E2.pdf • 2018年:無料で始める!「龍が如く」を面白くするための高速デバッグログ分析と自動化 – https://www.jasst.jp/symposium/jasst18tokyo/pdf/D4.pdf • 2020年:「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて – https://speakerdeck.com/segadevtech/long-garu-ku7-guang-toan-falsexing-fang-falsezi-dong-tesutohuo-yong-shi-li-totesutozi-dong-hua-timu-jia-niyoruruo-shou-yu- cheng-falsequ-rizu-minituite • 2020年:「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム – https://speakerdeck.com/segadevtech/long-garu-kusutazio-falseqaenziniaringuji-shu-wojie-ji-sitaquan-zi-dong-baguqu-risisutemu • 2022年:開発もQAも自動テスト!「LOST JUDGMENT:裁かれざる記憶」のQAテスター参加で進化した「テスト自動化チーム (仮)」の取り組みについて – https://speakerdeck.com/segadevtech/kai-fa-moqamozi-dong-tesuto-lost-judgment-cai-karezaruji-yi-falseqatesutacan-jia-dejin-hua-sita-tesutozi-dong-hua-timu-jia- falsequ-rizu-minituite • 2024年:「龍が如く」も「スーパーモンキーボール」も自動化!クオリティエンジニアリングチームによるマルチゲームエンジン対応で 進化した「龍が如くスタジオ」のテスト自動化環境について – https://speakerdeck.com/segadevtech/long-garu-ku-mo-supamonkiboru-mozi-dong-hua-kuoriteienziniaringutimuniyorumarutigemuenzindui-ying-dejin-hua-sita-long- garu-kusutazio-notesutozi-dong-hua-huan-jing-nituite 講演資料(時系列順)
  8. ©SEGA Notify Servers (Visualization) Servers (File/DB) Servers (CI/CD) Test Cases

    Game Instances (PC/Console) Hosts (PC) ゲーム開発のテストピラミッド Fluentd Elasticsearch Folium (Static) Kibana (Dynamic) AutoTest Client AutoTest Manager In-Game Debug Log Sender Target Controller Crash Reporter File Sever (Dump) Redmine (Wiki) AutoTest Monitor Test Scripts (Python) Game Agents (PC) E2E Auto Play Teams Email Redmine (Issue) Version Control Video File Sharing Jenkins File Sever (Package) Integration Smoke Game Object Unit Build (Warn as Error) Coverity Data Validation
  9. ©SEGA ゲーム開発のテストピラミッド Unit Integration E2E コ ス ト 高 低

    • 通しプレイ • ミッションクリア • コリジョン抜けチェック • 起動チェック • ステージ描画テスト • イベントシーン単体再生 • ゲームオブジェクト・エンティティの連携動作 • 関数・モジュール単位の単体テスト • ライブラリ・エンジンのテスト • データのレギュレーションチェック • ゲームオブジェクト・エンティティの単体動作 ゲーム開発ではデータのテストが重要!
  10. ©SEGA • QAエンジニアってどんな仕事?~ゲーム開発における テストの世界~ – https://techblog.sega.jp/entry/2018/08/27/100000 • CEDEC2025『E2Eだけがテスト自動化じゃない! Unity製ゲームの開発者テスト チュートリアル』フォ

    ローアップ – https://www.nowsprinting.com/entry/2025/07/28/080000 • Automated Testing of Gameplay Features in 'Sea of Thieves' – https://www.gdcvault.com/play/1026366/Automated-Testing-of-Gameplay-Features ゲーム開発のテストピラミッド資料
  11. ©SEGA Notify Servers (Visualization) Servers (File/DB) Servers (CI/CD) Test Cases

    Game Instances (PC/Console) Hosts (PC) CI/CDで実行する単体・結合テスト Fluentd Elasticsearch Folium (Static) Kibana (Dynamic) AutoTest Client AutoTest Manager In-Game Debug Log Sender Target Controller Crash Reporter File Sever (Dump) Redmine (Wiki) AutoTest Monitor Test Scripts (Python) Game Agents (PC) E2E Auto Play Teams Email Redmine (Issue) Version Control Video File Sharing Jenkins File Sever (Package) Integration Smoke Game Object Unit Build (Warn as Error) Coverity Data Validation
  12. ©SEGA • いまどきGitHub Actionsじゃない? – ゲームの規模により、すべてをGitHub上に置けない • ゲームはデータがGB単位 – ゲーム内データ(ムービーを含む)

    • ゲーム内に内包する前の元素材は特に大きい – パッケージ(100GB超!) • Gitだとバイナリ管理がつらい – データはPerforceやSVNに退避すればいいのでは? • データこそ自動テストが必要なのでCI/CDとの連携が重要! なぜJenkins?
  13. ©SEGA • Jenkins – Jenkinsの構成・運用パターン • https://speakerdeck.com/segadevtech/jenkinsfalsegou-cheng-yun-yong-patan – as Code

    の徹底による 安心安全な Jenkins 環境構築 • https://www.docswell.com/s/DeNA_Tech/537QY2-GDM64-as-Code-Jenkins • GitHub Actions – UnityのアプリビルドをGitHub Actionsに移行した話 • https://technote.qualiarts.jp/article/75/ – GitHub Actions Self-hosted runner を 3年間運用したこれ までとこれから ~ 分散するワークフローと管理の課題 • https://www.docswell.com/s/DeNA_Tech/ZQXJ4Y-GDM64-GitHub-Actions-Self-hosted- runner ゲーム開発におけるCI/CDの事例
  14. ©SEGA Notify Servers (Visualization) Servers (File/DB) Servers (CI/CD) Test Cases

    Game Instances (PC/Console) Hosts (PC) Host PCで管理するE2Eテスト Fluentd Elasticsearch Folium (Static) Kibana (Dynamic) AutoTest Client AutoTest Manager In-Game Debug Log Sender Target Controller Crash Reporter File Sever (Dump) Redmine (Wiki) AutoTest Monitor Test Scripts (Python) Game Agents (PC) E2E Auto Play Teams Email Redmine (Issue) Version Control Video File Sharing Jenkins File Sever (Package) Integration Smoke Game Object Unit Build (Warn as Error) Coverity Data Validation
  15. ©SEGA • 夜間の開発者の個人環境も使う – 個人環境をAgentにするのは微妙なので自律して動作 • ターゲット制御 – 再起動・接続不具合のワークアラウンドが必要 –

    ファイル・ログの処理の代行 • スクリプト実行、パッケージ更新、ログ送信、ダンプ処理、 キャプチャ • ゲーム側やCI/CDサーバに負担をかけない なぜHost PCが管理しているのか
  16. ©SEGA Notify Servers (Visualization) Servers (File/DB) Servers (CI/CD) Test Cases

    Game Instances (PC/Console) Hosts (PC) 自動プレイの仕組み Fluentd Elasticsearch Folium (Static) Kibana (Dynamic) AutoTest Client AutoTest Manager In-Game Debug Log Sender Target Controller Crash Reporter File Sever (Dump) Redmine (Wiki) AutoTest Monitor Test Scripts (Python) Game Agents (PC) E2E Auto Play Teams Email Redmine (Issue) Version Control Video File Sharing Jenkins File Sever (Package) Integration Smoke Game Object Unit Build (Warn as Error) Coverity Data Validation
  17. ©SEGA • 大きく分けて2つ – ゲーム内組み込み型 – サーバクライアント型 • 上記のハイブリッドで動作 –

    1フレーム単位の操作(ゲーム内組み込み型) – UIや移動の操作(サーバクライアント型) 自動プレイの実装方法
  18. ©SEGA • 「龍が如く7 光と闇の行方」の自動テスト活用事例とテ スト自動化チーム(仮)による若手育成の取り組みにつ いて – https://youtu.be/jTIIeKKM68Q • ペルソナ3

    リロードでの自動プレイの実装と運用 – https://cedil.cesa.or.jp/cedil_sessions/view/2912 • Test automation for video games: The first vertical slice – https://youtu.be/XicvYK9TZ9c 自動プレイの資料
  19. ©SEGA Notify Servers (Visualization) Servers (File/DB) Servers (CI/CD) Test Cases

    Game Instances (PC/Console) Hosts (PC) ゲーム開発のデバイスファーム Fluentd Elasticsearch Folium (Static) Kibana (Dynamic) AutoTest Client AutoTest Manager In-Game Debug Log Sender Target Controller Crash Reporter File Sever (Dump) Redmine (Wiki) AutoTest Monitor Test Scripts (Python) Game Agents (PC) E2E Auto Play Teams Email Redmine (Issue) Version Control Video File Sharing Jenkins File Sever (Package) デバイスファーム≒物理機材 Integration Smoke Game Object Unit Build (Warn as Error) Coverity Data Validation
  20. ©SEGA • リリースするプラットフォームでテストすべき – PCやモバイルの場合、クラウド上でもテストは可能 • PCもテスト対象 – さまざまなスペックの物理PCでのテストが必要 •

    CPU/GPUの種類、メモリやストレージの速度・量 • 規模感 – Game Instance:200~300台 – PC(Host/Agent):100~150台 – 専用機材50%、個人環境50% なぜデバイスファームが物理?
  21. ©SEGA Notify Servers (Visualization) Servers (File/DB) Servers (CI/CD) Test Cases

    Game Instances (PC/Console) Hosts (PC) テスト結果の見える化 Fluentd Elasticsearch Folium (Static) Kibana (Dynamic) AutoTest Client AutoTest Manager In-Game Debug Log Sender Target Controller Crash Reporter File Sever (Dump) Redmine (Wiki) AutoTest Monitor Test Scripts (Python) Game Agents (PC) E2E Auto Play Teams Email Redmine (Issue) Version Control Video File Sharing Jenkins File Sever (Package) Integration Smoke Game Object Unit Build (Warn as Error) Coverity Data Validation
  22. ©SEGA • テストケースごとに必要な見える化が違う – 単体テスト • 成功・失敗とエラーメッセージだけで良い場合が多い – 自動プレイ •

    ワールドマップ上でのプロットやヒートマップ • シナリオの進行状況 • プロジェクトのスケジュールによっても変化 – 様々な職種の人がテスト結果を必要とする なぜテスト結果の見える化が多い?
  23. ©SEGA 時系列(昇順) 必要なテスト 結果を必要とするチーム 開発初期 (試作) 単体・結合 開発 開発中期 (量産)

    単体・結合 +自動プレイ(シナリオクリア・ 各言語起動) 開発 +翻訳・自動QA 開発後期 (調整) 単体・結合・自動プレイ +ゲーム全体を網羅したテスト (パフォーマンス計測も行う) 開発・翻訳・自動QA +手動QA・翻訳QA リリース後 (Patch/DLC) 今まで築いたテスト資産の活用 +パッチによるデグレの検知 開発・翻訳・自動QA・手動 QA・翻訳QA +CS(ユーザーサポート) スケジュールで変化する自動テスト
  24. ©SEGA • 無料で始める!「龍が如く」を面白くするため の高速デバッグログ分析と自動化 – https://www.jasst.jp/symposium/jasst18tokyo/pdf/D4.pdf • 「情報地図」で俯瞰するマップ情報の可視化 - マップ全体を把握するための開発支援ツール

    – https://cedil.cesa.or.jp/cedil_sessions/view/2414 • Horizon Zero Dawn: A QA Open World Case Study – https://www.guerrilla-games.com/read/horizon-zero-dawn-an-open-world-qa-case-study – https://youtu.be/2VDlX3Dqm0w ゲーム開発の見える化の資料
  25. ©SEGA • 開発もQAも自動テスト!「LOST JUDGMENT:裁かれ ざる記憶」のQAテスター参加で進化した「テスト自動 化チーム(仮)」の取り組みについて – https://speakerdeck.com/segadevtech/kai-fa-moqamozi-dong-tesuto-lost-judgment-cai- karezaruji-yi-falseqatesutacan-jia-dejin-hua-sita-tesutozi-dong-hua-timu-jia-falsequ-rizu-minituite •

    クオリティエンジニアってどんな仕事?―ゲームの開発 もQAも横断して自動化するプロジェクト専任エンジニ ア誕生の軌跡― – https://techblog.sega.jp/entry/sega_qe_work_202408 自動テストのスケジュールの資料