Slide 1

Slide 1 text

モバイルゲームで 自動テストが効果を発揮するまで ~自動テストを「運用」するまでの組織のアプローチ~ 株式会社QualiArts 住田 直樹 株式会社QualiArts 田中 広海

Slide 2

Slide 2 text

住田 直樹 •株式会社QualiArts Unityエンジニア •株式会社QualiArts 技術広報 •SGEコア技術本部 : QAチーム X:@udon_qu

Slide 3

Slide 3 text

田中 広海 •株式会社QualiArts エンジニア •株式会社QualiArts 開発推進室

Slide 4

Slide 4 text

本セッションで伝えたいこと モバイルゲームの 自動テスト 効果 運用

Slide 5

Slide 5 text

Contents • モバイルゲームの開発課題と自動テストの需要 • QualiArtsの自動テストの技術と体制 • QualiArtsの自動テストの事例紹介 • 自動テストを振り返っての長所と短所 • まとめと今後の展望

Slide 6

Slide 6 text

1 モバイルゲームの開発課題と 自動テストの需要

Slide 7

Slide 7 text

モバイルゲーム開発の現状 クオリティ プラット フォーム グローバル リリース

Slide 8

Slide 8 text

モバイルゲーム開発の現状 クオリティ プラット フォーム グローバル リリース 開発工程の長期化 開発規模の拡大

Slide 9

Slide 9 text

自動テストへの期待 開発工程の長期化 開発規模の拡大 膨大な検証工程 物量が大きなボトルネッ ク 自動化して改善したい...

Slide 10

Slide 10 text

テストフレームワーク モバイルゲーム業界への広まり テスト環境 Device Farm上での遠隔端末操作 ゲームエンジン上でのテスト実行 ユースケース シナリオテスト自動化 回帰テスト自動化

Slide 11

Slide 11 text

テストフレームワーク モバイルゲーム業界への広まり テスト環境 Device Farm上での遠隔端末操作 ゲームエンジン上でのテスト実行 ユースケース シナリオテスト自動化 回帰テスト自動化 自動テスト なんか良さそうだ...!

Slide 12

Slide 12 text

2 QualiArtsの 自動テストの技術と体制

Slide 13

Slide 13 text

自動テストを動かすには 実行環境 出力 システム 実機? エディタ? 自動プレイ モード? 実機入力の 自動化? 通知? Web?

Slide 14

Slide 14 text

実行環境 システム 出力 QualiArtsの自動テスト

Slide 15

Slide 15 text

自動テストを「運用」するには メンテナンス メンテナー

Slide 16

Slide 16 text

運用は一筋縄ではいかない 新しいバージョンで テストが動かない 色々なプラット フォームや端末で テストを動かしたい 特定のテストケース でテストが不安定 テストの仕組みを プロジェクトメンバーに 伝播したい 検証すべき テストケースが 増えた

Slide 17

Slide 17 text

運用は一筋縄ではいかない 新しいバージョンで テストが動かない 色々なプラット フォームや端末で テストを動かしたい 特定のテストケース でテストが不安定 テストの仕組みを プロジェクトメンバーに 伝播したい 検証すべき テストケースが 増えた 修正と改良と向き合い続ける覚悟が必要

Slide 18

Slide 18 text

QualiArtsの運用の取り組み プロジェクト 開発推進室 テストの実装 ユースケースの策定 メンテナンス テスト基盤の提供 プロジェクトとの連携 デバッグ機能の実装 自動テストの活用

Slide 19

Slide 19 text

3 QualiArtsの自動テストの 事例紹介 事例1: 実機のチュートリアル自動テスト

Slide 20

Slide 20 text

課題背景 自動テストへの業界の関心 運用における保守コストの課題 チュートリアルでの 自動テストの導入検証 小さなケースから 技術検証しよう

Slide 21

Slide 21 text

ユースケースの意図 チュートリアル 多くの機能に関与する 機能の検証工程が長い 積極的な更新があまりない 独立した機構 自動テストの開発と運用に対する費用対効果が良さそう

Slide 22

Slide 22 text

開発推進室 開発体制 自動テストの土壌作りを兼ねて開発推進室が主体 テストの実装 ユースケースの策定 メンテナンス テスト基盤の提供 プロジェクトとの連携 デバッグ機能の実装 自動テストの活用

Slide 23

Slide 23 text

IDOLY PRIDEにおけるチュートリアル自動テスト

Slide 24

Slide 24 text

テストの流れ 前工程 端末の用意 アプリの 準備 テスト 操作の記録 端末の操作 後工程 レポート 通知

Slide 25

Slide 25 text

前工程 • 社内デバイスファーム経由の端末手配 • Firebase App Distributionでのアプリ準備 • adb経由でのアプリのインストールと実行 前工程 端末の用意 アプリの 準備 CEDEC2023 : モバイルゲームのQA課題に組織でチャレンジ! 〜子会社を跨いで挑戦するQA効率化の道のり〜

Slide 26

Slide 26 text

テスト工程 • Airtest + Pocoの自動テストシステム • Airtestによるテスト結果の記録と出力 テスト 操作の記録 端末の操作

Slide 27

Slide 27 text

後工程 • Slackでのテスト結果通知 • GitHub Pagesを用いたレポート配信 後工程 レポート 通知

Slide 28

Slide 28 text

成果 新機能 検証 新機能 開発 回帰 テスト デグレ 発見 新機能 検証 新機能 開発 デグレ 発見 運用開発のデグレ早期発見に寄与

Slide 29

Slide 29 text

チュートリアルにおける自動テストの恩恵 機能B 機能A イン ゲーム 機能C ... 関与する機能が多い 検証フローが長い 自動テストによる恩恵が大きい

Slide 30

Slide 30 text

実行環境の課題 社内デバイスファーム 実行したい 端末がない 端末との セッション が落ちる モバイル環境実行の安定化が難しい

Slide 31

Slide 31 text

開発の課題 インフラ 自動テスト アプリケーション ネイティブ インフラ CI/CD Airtest Python テスト手法 Unity アプリ側の設計 検証との連携 自動テストの技術からアプリケーションの事情まで広い知見が必要

Slide 32

Slide 32 text

運用の課題 プロジェクト 機能更 新 UI変更 自動テスト テストが 失敗した 開発推進室 調査 ヒアリング 開発推進室とプロジェクト側の連携が高コスト

Slide 33

Slide 33 text

まとめ デグレ早期発見 チュートリアルの 自動テストの恩恵:大 モバイル環境実行の 安定化が難しい 広い技術的な 知見が必要 運用と課題との 連携が高コスト 技術的なノウハウの獲得と運用タイトルの品質向上に繋がったが課題も多 い 自動テストの 基盤とノウハウ獲得

Slide 34

Slide 34 text

3 QualiArtsの自動テストの 事例紹介 事例2: Unity上の自動シナリオテスト

Slide 35

Slide 35 text

課題背景 運用による改修規模も大きくなり、QAによる検証コストが肥大化 自動テストの課題はありつつ、目的と手段を刷新して初期品質を向上させたい 機能数の増加 機能の高度化 検証項目の増加 初期品質の低下

Slide 36

Slide 36 text

Unityベースの自動シナリオテスト 回帰テストより早い段階で機能レベルのバグを定常的に検出 機能A 機能B 機能C プロジェクト 定期実行 機能開発

Slide 37

Slide 37 text

開発体制 プロジェクト側の実装を連携しながら遂行することを目指して調整 プロジェクト 開発推進室 テストの実装 ユースケースの策定 メンテナンス テスト基盤の提供 プロジェクトとの連携 デバッグ機能の実装 自動テストの活用

Slide 38

Slide 38 text

テストの流れ 前工程 Unityの実行 テスト 後工程 レポート 通知 操作の エミュレート

Slide 39

Slide 39 text

Anjinの導入 DeNA社がOSSとして提供しているUnity用オートパイロットフレームワーク https://github.com/DeNA/Anjin CI/CD環 境 との統合 スクリプ トベース の 自動操作 柔軟な シナリオ ベースの テスト構 築

Slide 40

Slide 40 text

Anjinベースの自動テストシステム CI 機能A 機能B 機能C 機能ごとにAnjinでテストシナリオを記述し、CIで毎朝実行

Slide 41

Slide 41 text

スモークテストとしての実装 機能A 途中で停止 Error発生 シナリオが意図通り進行するかのみに集中 最後まで 進行 失敗通知 成功通知 タイトル ホーム ボタンA ボタンB …

Slide 42

Slide 42 text

成果 タイトル ホーム ボタンA ボタンB … データの不整合 UIの状態の不整 合 デグレで 遷移壊れてる ホームの更新で ボタンズレて押せない 機能開発における不具合の早期発見に貢献

Slide 43

Slide 43 text

実機環境とエディタ環境の選択 解決したい課題に対して、適切な環境の選択が重要 モバイル端末 実機動作まで担保 環境の担保が大変 パフォーマンスなどの 実機指標が便利 エディタ アプリケーション側との連携が容易 実機での検証は担保できない エディタが起動できれば マシンひとつで実行可能

Slide 44

Slide 44 text

開発体制による成果 プロジェクトに効果的な自動テストの実現 課題に沿ったユースケースの提案 プロジェクトの設計に沿った自動テストの実装 機能更新の認知の早期化

Slide 45

Slide 45 text

運用の課題 運用コストの課題は引き続き存在 広い技術的な知見が必要 機能開発と自動テスト開発の両立が高コスト 機能数を増やすほど線形的に運用コストが増加

Slide 46

Slide 46 text

自動テストを活用しよう! 文化醸成の重要性 「自動テスト=重要」という文化が積極的な活用と保守につながる プロジェクト 開発推進室 自動テストを しっかり保守 しよう あの課題を 自動テストで いい感じにしたい より良い基盤や 技術のキャッチ アップをしよう プロジェクトの 課題を理解しよう

Slide 47

Slide 47 text

まとめ プロジェクトと連携した 保守体制の改善 機能ごとのテスト量産による 保守コストの増加 機能開発と自動テスト の並列対応が難しい 手法と体制のアプローチを工夫し、効果的な自動テストに繋がったが課題もあ り エディタベースの自動テストで 開発コストの改善

Slide 48

Slide 48 text

3 QualiArtsの自動テストの 事例紹介 事例3: ADVパートの網羅的な自動テスト

Slide 49

Slide 49 text

運用におけるADVの網羅的な検証が現実的ではない状態 課題背景 システム 更新 シナリオ 更新 アセット 更新 自動テストの仕組みの活用で人手を使わずに検証したい Unity 更新 1話 2話 3話 4話 運用で増え続けるシナリオ 検証

Slide 50

Slide 50 text

網羅的なADVの自動テスト 1話 2話 3話 4話 マスタから動的に取得したシナリオをAnjinで自動チェック マスタデータ シナリオ 全件取得

Slide 51

Slide 51 text

テストの流れ 前工程 Unityの実行 テスト 後工程 レポート 通知 操作の エミュレート ADV_1 ADV_2 ADV_3 基本的な仕組みはシナリオテストのものを活用

Slide 52

Slide 52 text

利用者との連携 目的や機能の擦り合わせを意識し、必要かつ都合のいいシステムになるよう連携 目的 : 既存ADVの安全性担保 出力 : Slackでまとめて通知 Slackに結果を端的に まとめて伝えてほしい 実行時間が長いので 出来るだけ効率化したい 結果と必要な情報だけ抜き出し 全件箇条書きでファイル化 デバッグ用の高速再生機能の導入 不要に重複再生しないよう調整

Slide 53

Slide 53 text

成果 物理的に厳しくなっていた全検証を定常化 QAの検証工程で非常に大きな成果に Unityのバージョン更新による全件チェックなど突発的な需要にも貢献 月換算で8~10人日の検証作業が安定して自動化できる状態

Slide 54

Slide 54 text

成果 自動テストの文化醸成の役割にも大きく貢献 QAやクリエイターの課題ベースのユースケースに取り組み、認知に繋がった プロジェクト こういう課題は 自動テストで効率 化できないだろう か 自動テストが やりやすいように データを整備しよ う

Slide 55

Slide 55 text

課題 運用コストの課題はシナリオテストと同様に存在 シナリオの構造やデータの更新ごとに対応が必要 失敗要因が幅広く調査のコストがやや高い

Slide 56

Slide 56 text

まとめ 適切なユースケースでの仕組みの応用で大きな成果 月換算で8~10人日の検証作業が安定して自動化できる状態 シナリオテストの仕組み ADV検証の物量課題

Slide 57

Slide 57 text

4 自動テストを振り返っての 長所と短所

Slide 58

Slide 58 text

物量を伴うモバイルゲームの検証工程を効率化する有効なアプローチ 自動テストの長所 機能開発に伴うデグレ検証 膨大なアセットのエラーチェック 機能のシナリオを更新ごとに検証 毎日全シナリオをエラー検証

Slide 59

Slide 59 text

継続的に更新されるアプリケーションの品質向上に寄与 自動テストの長所 新機能開発 新機能 バグ 新機能 バグ 既存機能 バグ 既存機能 バグ 新機能開発 新機能 バグ 新機能 バグ 自動テスト QA

Slide 60

Slide 60 text

自動テストの短所 課題に対して適切なユースケースを検討することが重要 自動テストでE2Eのような複雑な操作や高頻度なメンテナンスをするのはコストが高い コスト 速度 安定性 単体テスト 結合テスト E2Eテスト ゲームで注目されがち

Slide 61

Slide 61 text

自動テストの短所 開発で求められる広い領域の知見 • 広範囲な技術領域の要求 • プロジェクトに則した基盤の導入 • QA側との連携 • 運用開発に伴うメンテナンス  機能開発と兼務するには高カロリー 基盤開発 プロジェクト導入 メン テ アプデ対応 ユースケース策定 実装と量産

Slide 62

Slide 62 text

5 まとめと今後の展望

Slide 63

Slide 63 text

自動テストとモバイルゲームの課題 自動テストは有用だが大変、戦略を考えて挑む必要がある • 大規模化しているモバイルゲームに自動テストは価値のあるもの 物量の多い機能検証を自動化 運用改修で発生しがちなデグレの発見を自動化 ADVなどの工程はシンプルだが時間がかかる工程を自動化 • 運用を続けるモバイルゲームに自動テストはカロリーが高いもの データ環境や各種プラットフォームのテスト環境など アップデートされ続ける機能で動かすためのメンテナンスの必要性

Slide 64

Slide 64 text

手法 : 自動E2Eテスト 運用を支える「技術」と「目的」 ユースケースとアプローチを見定め、適切な手法を選択することが重要 目的 : テスト工程の自動化 アプリの品質の向上 開発環境での自動テスト 技術 : 実機環境の オートパイロット エディタの オートパイロット

Slide 65

Slide 65 text

自動テストの「運用」 複雑な課題に対して、組織で対応を見定める意識が重要 プロジェクト 横断部署 メンテナンス工数 ユースケースの策定 自動テストの文化醸成 自動テストの汎用化 複数プロジェクトの人員 プロジェクトとの連携コスト

Slide 66

Slide 66 text

自動テストの「成果」と「文化」 目先の成果にとらわれず、腰を据えて自動テストに取り組める文化の醸成が必要 • 自動テストはすぐに結果が出ない 技術、運用と多くのハードルがある => 短期ですぐ開発が楽になるものではない => なんでも自動化して解決というものでもない 技術 研究 基盤 開発 試験 運用 ユース ケース 検討 メンテ ナンス 文化 推進 体制 検討

Slide 67

Slide 67 text

今後の展望 誰もが幸せになる自動テストの運用を目指して... • 開発プロジェクトでの自動テストの継続と活用の検討 既存の自動テストの運用継続と課題の解決 モンキーテストなどの運用コストの低い手法の導入 自動テストの運用コストを改善する技術アプローチの検討 ログの自動解析やチケットの自動起票 自動テストの開発/運用に対する社内体制の改善

Slide 68

Slide 68 text

ご清聴ありがとうございました