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

CEDEC2025 長期運営ゲームをあと10年続けるための0から始める自動テスト ~4000項...

CEDEC2025 長期運営ゲームをあと10年続けるための0から始める自動テスト ~4000項目を50%自動化し、月1→毎日実行にした3年間~

2025-07-22 から 2025-07-24 に開催された CEDEC2025 で発表した資料です。

登壇者: 田原 遥美、小山 竜之介
詳細は以下をご確認ください。
https://cedec.cesa.or.jp/2025/timetable/detail/s67a489537b31a/

More Decks by アカツキゲームス_Tech

Other Decks in Programming

Transcript

  1. 自己紹介: 小山竜之介 • 業務内容 ◦ サーバーアプリケーション開発 ◦ インフラ開発・運用 ◦ QA改善・自動化

    ◦ エンジニアチームマネジメント • 趣味 ◦ 家事RTA ◦ ゲームではサポート系やりがち 3
  2. ❌ 新しい不具合を発見する ⭕ 今ある機能の劣化を防ぐ リグレッションテストを省略 = 基本機能を損なう重大な欠陥のリスク リグレッションテストのコスト → リリースのコスト リグレッションテスト(regression

    Testing) 変更により、ソフトウェアの未変更部分に欠陥が新たに入り込んだり、発現したりしないことを確認 するため、変更実施後、すでにテスト済みのコンポーネントやシステムに対して実行するテスト。 by ISTQB リグレッションテストとリリース 6
  3. 増え続ける機能とリリースコスト 変更 テスト 変更 リグレッション テスト テスト 変更 リグレッション テスト

    リグレッション テスト テスト 機能の数 リグレッションテストの 項目数 ≒ 開発するたび、リリースコストが雪だるま式に増加 7
  4. テスト基盤(テスト管理システム) 自作のテスト基盤について 入力 アプリ起動から タイトルへ遷移 タイトル画面の 検証 タイトル画面検証 アプリ起動から タイトルへ遷移

    チュートリアル 突破 商品購入検証 ショップ機能検証 テスト実行 テストシナリオ 実行 シナリオの レポート作成 シナリオが残っている場合 次のシナリオを実行 準備 エミュレーター 起動 アプリの インストール アプリの起動 後処理 結果を集計 レポートURLを含めた 結果をSlackで通知 S3にレポートを送 信 エミュレーター 停止 22
  5. 0年目: きっかけ プロジェクト リーダー 開発 ディレクター ここから 10年続ける! 常に改善を 続けていこう!

    リグレッションテスト は増え続けるから 早めに備えよう! 隙間で 自動テストについて 調べ始める 32
  6. 0年目: 調査開始 テスト実行環境 テスト フレームワーク テスト 実行デバイス Appium Airtest …

    ローカル端末 クラウド エミュレータ … オンプレPC クラウド テストサービス … 調査/比較 34
  7. 1年目: 運用フロー整備 QA チーム 自動テスト チーム どうやって 動いているの? 一緒に動かして みましょう!

    なるほど! じゃあこう進め ると良さそう! ハンズオン実施 AirtestIDEで簡単なシナリオを作り 動かしてレポート作成まで行った QA チーム 42
  8. 1年目: シナリオ量産準備 シナリオを作成時に 項目の抜け漏れが 発生しそう 量が多いので 自動↔手動の移行を 簡単にしたい 自動テストが行えない時の 対策をしたい

    全ての項目を対象にすると シナリオ作成工数が 大きすぎる 項目書をシナリオに 変換したい (楽にしたい) 44
  9. 1年目: シナリオ量産準備 シナリオを作成時に 項目の抜け漏れが 発生しそう 量が多いので 自動↔手動の移行を 簡単にしたい 自動テストが行えない時の 対策をしたい

    全ての項目を対象にすると シナリオ作成工数が 大きすぎる 項目書をシナリオに 変換したい (楽にしたい) 45
  10. スコープを絞る A B C 重要度⤴ 重要度⤵ 重要な動作 基本機能 細かい項目 約8,000項目

    約4,000項目 リリースに必要な項目AとBの約4,000項目の内 自動化可能な約2,000項目をスコープとした 46
  11. 1年目: シナリオ量産準備 シナリオを作成時に 項目の抜け漏れが 発生しそう 量が多いので 自動↔手動の移行を 簡単にしたい 自動テストが行えない時の 対策をしたい

    全ての項目を対象にすると シナリオ作成工数が 大きすぎる 項目書をシナリオに 変換したい (楽にしたい) 48
  12. 1年目: シナリオ量産準備 シナリオを作成時に 項目の抜け漏れが 発生しそう 量が多いので 自動↔手動の移行を 簡単にしたい 自動テストが行えない時の 対策をしたい

    全ての項目を対象にすると シナリオ作成工数が 大きすぎる 項目書をシナリオに 変換したい (楽にしたい) 50
  13. 項目書をシナリオに変換するツール 変換例 # -*- encoding=utf8 -*- from airtest.core.api import *

    ST.FIND_TIMEOUT = 60 # assert_exists() のタイムアウト設定(秒) WAIT_TIME = 10 # poco("hoge").wait(WAIT_TIME) 任意に設定できるタイムアウト設定(秒) # [1] : ▲▲ 画面に遷移すること # assert_exists(Template(r" 画像パスを入れてください "), "[1] ▲▲ 画面に遷移すること ") # [2] : ⚪⚪が表示されていること # assert_exists(Template(r" 画像パスを入れてください "), "[2] ⚪⚪が表示されているこ と") 58
  14. 2年目: シナリオ量産 Icons by icons8 自動テストチーム シナリオ作成メンバー増員 .py .py .py

    結果通知 上手く 動かなければ 調整 できたものからCIに載せる 60
  15. 2年目: テスト実行の並列化 .py .py .py .py .py 1シナリオ ✖ 5min

    5min .py .py .py 4シナリオ ✖ 5min 20min テスト時間の短縮 65
  16. 展望: テスト結果の分析強化 テス ト テス ト テス ト テス ト

    テス ト テス ト テス ト テス ト テス ト テスト ver. A テス ト テス ト テス ト テス ト テス ト テス ト テス ト テス ト テス ト テスト ver. B 確認が大変 ver. AはOK ver. BはNG A→Bの比較は... 分析ツール 73
  17. 展望: 持続可能な自動テスト体制 デイリーごと テスト結果の フィードバック リリースごと テスト結果の フィードバック シナリオの 追加・変更

    開発チームで 回せるように QAチームで 回せるように QAチームや 機能開発者で 対応できるように 74
  18. まとめ なぜ自動化をしたのか 約4,000項目に及ぶ 膨大なテスト項目 テストコスト増加 による影響 「いつでもリリースできる体制」 づくりが必要だった リグレッションテストの 自動化率50%(約2,000項目)を達成

    テスト工数を約50%削減 日時実行体制の構築と信頼性の確保 自動化を軸にした運用フローの改善 開発の柔軟性・リリースサイクルの 改善に貢献 88