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

ゲームQAはノーコードの自動化で救えるのか? / Why QA learns programming?

ゲームQAはノーコードの自動化で救えるのか? / Why QA learns programming?

QAエンジニア勉強会 #3 の内容です。
https://qa-engineer-meetup.connpass.com/event/272831/

Tomotaka Yamasaki

March 02, 2023
Tweet

More Decks by Tomotaka Yamasaki

Other Decks in Programming

Transcript

  1. ©Akatsuki Games Inc. 自己紹介 株式会社アカツキゲームス QA自動化チーム Project Leader 山﨑 友貴

    tomotaka-yamasaki Job: QA Engineer JSTQB FL/AL-TA資格保有 Twitter: @tomo_tk11 二児のパパ(3y, 1y) 子供の全力目覚ましで起きる日々。 2015 株式会社アカツキ エンジニア 新卒入社 オリジナルタイトルのゲーム運営チーム クライアントエンジニア 他社IPタイトルのゲーム運営チーム クライアントエンジニア 2017 他社IPタイトルのゲーム運営チーム クライアントエンジニアチームリーダー 2019 株式会社アカツキ福岡 出向 テストの自動化や効率化のチーム立ち上げ 各プロジェクトのテスト自動化、効率化に取り組みながら、 QA組織づくりに従事 現在 2022 株式会社アカツキゲームス QA自動化チーム Project Leaderに QAエンジニアとしてQA自動化に集中し、 タイトル横断PJTとして取り組んでいる 2
  2. ©Akatsuki Games Inc. 6 もちろん、QA x AI の事例も たくさんありますね。 •

    テスト実行時の操作自動化 • テスト実装時のテストケース作成支援 • 自動テストスクリプトの自動メンテナンス (オートヒーリング) AIを活用した自動テストツールの現状と未来|SHIFT Group 技術ブログ|note

  3. ©Akatsuki Games Inc. 現時点でChatGPTは ソフトウェアテスターにはなれなさそう • 回答は間違っている場合が多いので鵜呑みにはできない • 知識のあるソフトウェアテスターの力には、ギリギリなってくれそう •

    ただ、対話だけでここまで確からしい回答が返ってくることは素晴らしい 10 AIを上手に使わないと良い仕事が できなくなる時代 はそう遠くないかも?
  4. ©Akatsuki Games Inc. 2 QA自動化チームの紹介 エンジニア職能に属するQA自動化チーム 16 Team A4 先進的で積極的にアカツキゲームスを守るチームという意。

    QA x エンジニアの軸でテスト自動化やQA効率化を 行うことでQAを支援する、エンジニア職能のPJT横断型独立組織。 Advanced and Aggressive Aegis of Akatsuki Games
  5. ©Akatsuki Games Inc. 2 QA自動化チームの紹介 A4チームが実現したい未来 17 • 時間は有限である •

    機械的に行える作業はA4が自動化する • 当たり前品質に向き合う時間を減らし、 ワクワクできる魅力的な品質とは何かを追求する時間を増やすためのお手伝いをする 人でしかできないことに、 時間を使えるように
  6. ©Akatsuki Games Inc. 3 本日の話の概要 お話すること、しないこと 19 • 以下の内容を、モバイルゲームアプリのQA視点から話します 


    ◦ ゲームの自動テストシステムの技術概要
 ◦ ノーコード時代に、なぜプログラミングを学ぶのか
 ◦ 自動テストが書けるようになるために、何をすればよいのか
 • 自動テストシステムの技術詳細 
 ◦ 以下のブログを書いているので見てみてください
 ▪ Airtest で CLI, IDE や AWS Device Farm, Local など様々なテスト実行手段、環境があっ たとしても楽に自動テストを実行する方法 
 ▪ AWS Device Farm で Airtest を動かす方法 

  7. ©Akatsuki Games Inc. 3 本日の話の概要 ターゲットリスナー 20 自動テスト 書いてみたいなぁ。 QAエンジニア興味あるけど、

    なにから始めたら良いかわからんなぁ。 QA、テスター 自動テストを書くことができる 人、増やしたいんだよなぁ。 QAエンジニア
  8. ©Akatsuki Games Inc. 3 本日の話の概要 注意事項 21 他の自動テストのやり方を否定するものではありません。
 自動テストはそれぞれのドメインで、最適なやり方があります。 


    今回はディベロッパーのモバイルゲームQAの視点 から、
 「こういうやり方が良さそうだけど、どうだろうか?」という話をします。 

  9. ©Akatsuki Games Inc. 4 ゲームQAの難しさ ゲームQAの難易度を高めている4つの要因 24 AWS DEV DAY

    2022. AWS Device Farm と Airtest でモバイルゲーム自動テスト
 更新頻度 x 更新量 = QAのコスト 運用的開発
 新規的開発
 週単位のデータ更新(イベント、ガチャなど) 月単位のシステム変更(新機能アップデートなど)
  10. ©Akatsuki Games Inc. 4 ゲームQAの難しさ ゲームQAの難易度を高めている4つの要因 25 AWS DEV DAY

    2022. AWS Device Farm と Airtest でモバイルゲーム自動テスト
 増え続ける機能 = 増え続けるコスト • リグレッションテストの項目が雪だるま式に増える • とあるゲームプロジェクトの場合、約40機能、約9000項目、約60人日
  11. ©Akatsuki Games Inc. 4 ゲームQAの難しさ ゲームQAの難易度を高めている4つの要因 26 AWS DEV DAY

    2022. AWS Device Farm と Airtest でモバイルゲーム自動テスト
 「ゲーム」構成要素の 組み合わせ = ∞ • バトルだけでも、パラメータ x アクション x 状態 x … = ∞ • 簡単に組み合わせ爆発が起こる
  12. ©Akatsuki Games Inc. 4 ゲームQAの難しさ ゲームQAの難易度を高めている4つの要因 27 AWS DEV DAY

    2022. AWS Device Farm と Airtest でモバイルゲーム自動テスト
 「おもしろい」の 定義 = ? • 「おもしろい」をテストすることの難易度がそもそも高い • 定量的なテストの限界がある
  13. ©Akatsuki Games Inc. 4 1. 更新頻度 x 更新量 = QAのコスト

    運用的開発と新規的開発の更新頻度と量が多い。 2. 増え続ける機能 = 増え続けるコスト リグレッションテストの項目が雪だるま式に増える。 3. 「ゲーム」構成要素の組み合わせ = ∞ 簡単に組み合わせ爆発が起こる。 4. 「おもしろい」の定義 = ? 「おもしろい」をテストすることの難易度がそもそも高い。 ゲームQAの難しさ ゲームQAの難易度を高めている4つの要因まとめ 28 AWS DEV DAY 2022. AWS Device Farm と Airtest でモバイルゲーム自動テスト

  14. ©Akatsuki Games Inc. 4 1. 更新頻度 x 更新量 = QAのコスト

    運用的開発と新規的開発の更新頻度と量が多い。 2. 増え続ける機能 = 増え続けるコスト リグレッションテストの項目が雪だるま式に増える。 3. 「ゲーム」構成要素の組み合わせ = ∞ 簡単に組み合わせ爆発が起こる。 4. 「おもしろい」の定義 = ? 「おもしろい」をテストすることの難易度がそもそも高い。 ゲームQAの難しさ ゲームQAの難易度を高めている4つの要因まとめ 29 AWS DEV DAY 2022. AWS Device Farm と Airtest でモバイルゲーム自動テスト
 自動化に
 向いている要因

  15. ©Akatsuki Games Inc. 4 ゲームQAの難しさ 自動テスト適用が難しい3つの理由 31 「おもしろい」の 定義 =

    ? 「ゲーム」構成要素の 組み合わせ = ∞ 増え続ける機能 = 増え続けるコスト 更新頻度 x 更新量 = QAのコスト ゲームQAの難易度を高めている4つの要因 木こりのジレンマが発生する 進まない自動化…
  16. ©Akatsuki Games Inc. 4 ゲームQAの難しさ 自動テスト適用が難しい3つの理由 32 簡単に扱える自動化ツールが 発展しきっていない •

    汎用化の難易度が高い ◦ 基本的にオーダーメイドなので汎用化しづらい • ネイティブアプリケーションへの対応工数が増える ◦ AndroidやiOS、専用ゲームハードOSへの対応で終端コードは個別実装せざるを得ない • ノーコード、AI活用機能の開発難易度が高い ◦ ゲーム特有の複雑な仕様や操作性が、ノーコードやAI活用機能の開発難易度を高めてしまっている
  17. ©Akatsuki Games Inc. 4 ゲームQAの難しさ 自動テスト適用が難しい3つの理由 33 テストスキル ドメイン知識 (アプリケーション領

    域のスキル) 技術的スキル (関連技術) プロ意識 テスト担当者が持つべき4つのスキル ゲームアプリケーションの 技術的スキルの習得難易度が高い • クライアント、サーバなどのゲームを 構成するアーキテクチャの理解が必要 ◦ 技術の幅が広いし、深い • ゲームアプリケーションによって アーキテクチャが異なる 難 Rex Black. 基本から学ぶテストプロセス管理. 日経BP社. pp.266-271
 Rex Black. ソフトウェアテスト12の必勝プロセス. 日経BP社. p.193

  18. ©Akatsuki Games Inc. 4 ゲームQAの難しさ 自動テスト適用が難しい3つの理由まとめ 34 1. ゲームQAの難しさが木こりのジレンマを発生させている よって、テスト自動化に着手できない。

    2. 簡単に扱える自動化ツールが発展しきっていない 汎用化の難易度が高い。 ネイティブアプリケーションへの対応工数が増える。 ノーコード、AI活用機能の開発難易度が高い。 3. ゲームアプリケーションの技術的スキルの習得難易度が高い 技術の幅が広いし、深い、かつアプリケーションごとに異なる。
  19. ©Akatsuki Games Inc. 5 • ゲームにフォーカスした自動テスト用のフレームワーク及びそのツール類 
 ◦ NetEaseから提供されている(オープンソース)
 •

    IDEが提供されており、テストコードを気軽に記述できる 
 ◦ テストコードはPythonだが、IDEの機能で非エンジニアでも直感的に記述可能
 • CLIでテスト実行も可能なので、CI環境で自動テストを実行させやすい 
 • 画像認識ベースのアプリケーションの自動テストを行う機能を持つ ゲームテストを自動化する技術 Airtest - ゲームの自動化に特化したテストフレームワーク 37 https://airtest.netease.com/

  20. ©Akatsuki Games Inc. 5 ゲームテストを自動化する技術 Airtest - ゲームの自動化に特化したテストフレームワーク 38 ©

    Copyright 2018, Game-Netease Revision 55eaa08f. https://airtest.readthedocs.io/en/latest/index.html
  21. ©Akatsuki Games Inc. 5 • アプリ内のメタ情報をAirtestで利用可能にするための自動テスト用 
 フレームワーク
 ◦ Airtest同様NetEaseから提供されている(オープンソース)


    • GameObjectのヒエラルキーの情報などを解析、オブジェクト名で検索 
 することでそのUI情報を取得し、スクリプト内で操作することができる 
 • RPC(Remote Procedure Call)を介してアプリ内の任意の処理をコール 
 することも可能
 • Unity 3D、Cocos2d-*、Android、iOSのアプリに対応 
 ゲームテストを自動化する技術 Poco - アプリ内のメタ情報をAirtestで利用可能にする 39 https://github.com/AirtestProject/Poco

  22. ©Akatsuki Games Inc. 5 • AirtestではテストスクリプトをPythonで記述する • Autify, MagicPodのようなノーコードのテスト自動化サービスが台頭する時代 •

    流れには逆行している ゲームテストを自動化する技術 ノーコード時代に Python とは 41 それでも、コードを書くことによって 得られる恩恵があると思っている
  23. ©Akatsuki Games Inc. 6 プログラミング言語学習の恩恵 ゲームQAエンジニアのスキルセット 46 ゲーム開発技術 * クライアント

    * Unity、UE4などのゲームエンジン * サーバ * AWS, GCPなどのインフラも含む テスト自動化技術 * Airtestなどのテストフレームワーク * 自動テストをCI/CDに組み込む技術 * Jenkins, AWS, GCPなど テストそのもののスキル * JSTQB など 技術的スキル (関連技術) テストスキル
  24. ©Akatsuki Games Inc. 6 プログラミング言語学習の恩恵 ゲームQAエンジニアのスキルセット 47 技術的スキル (関連技術) テストスキル

    テスト自動化技術 * Airtestなどのテストフレームワーク * 自動テストをCI/CDに組み込む技術 * Jenkins, AWS, GCPなど テストそのもののスキル * JSTQB など ゲーム開発技術 * クライアント * Unity、UE4などのゲームエンジン * サーバ * AWS, GCPなどのインフラも含む
  25. ©Akatsuki Games Inc. 6 • Airtestだけを使うと、アプリに影響を与えずにテストを自動化することができる • ただ、自動化後のメンテナンスコストがかかりすぎる プログラミング言語学習の恩恵 Airtestだけでテストを自動化するとどうなるか

    50 「おもしろい」の 定義 = ? 「ゲーム」構成要素の 組み合わせ = ∞ 増え続ける機能 = 増え続けるコスト 更新頻度 x 更新量 = QAのコスト ゲームQAの難易度を高めている4つの要因
  26. ©Akatsuki Games Inc. 6 • Pocoと合わせてAirtestを使うことで自動化の幅が広がる ◦ UIオブジェクトの操作 ◦ ヒエラルキー情報の取得

    ◦ PRCで内部関数呼び出し • ゲーム開発の更新頻度の高さによるメンテナンスコストを下げることができる プログラミング言語学習の恩恵 Airtest + Pocoでテストを自動化する 51 では、Pocoを導入するのは誰なのか?
  27. ©Akatsuki Games Inc. 6 • Poco導入のためには以下の知識が必要 ◦ ゲームエンジン ◦ クライアントコード

    • 上記の知識を持っていれば、導入自体はそこまで難しくはない ◦ Pocoの公式ドキュメントを見ることで1日もあれば導入可能 • ドキュメントを見ることもエンジニアの重要なスキル ◦ ドキュメントを見る技術も、プログラミング技術 ◦ (エラーを読み解くとかも、一緒) プログラミング言語学習の恩恵 Poco導入は開発エンジニアの領域 52
  28. ©Akatsuki Games Inc. 6 プログラミング言語学習の恩恵 エンジニア視点を持つことのメリット、デメリット 55 • テスト精度が向上する
 ◦

    欠陥の偏在を見つけることができる
 ◦ エラー推測の精度が向上する
 ◦ ソースコード変更の影響範囲が分かる
 • エンジニアとより深い議論ができる 
 ◦ ユニットテストに対して適切に突っ込める
 ◦ テストカバレッジを測定できる
 ◦ 不具合の修正方針を提案できる
 メリット
 • 内部構造を知りすぎてしまう
 ◦ エンジニアの確証バイアスをQAでカバーできない
 ◦ テストの抜け漏れが発生する
 デメリット
 QA Tech Night vol.2. QA組織が最後の砦から脱却するために

  29. ©Akatsuki Games Inc. 6 • 技術的に難しい内容でも臆することなく、キャッチアップしにいける ◦ 冒頭の対話型AIも最新技術の一つ • キャッチアップする技術というよりは、いかに自分で壁を作らないかが重要

    • アイデアを増やし、それらを組み合わせて良いものを作り上げるのは 人間の強みである プログラミング言語学習の恩恵 最新技術をキャッチアップする技術 58
  30. ©Akatsuki Games Inc. 6 1. 開発エンジニアとの連携が取りやすくなる 開発エンジニアの言ってること、やってることが理解できる。 2. 開発エンジニアの領域に踏み込むことができる 開発エンジニアの領域に踏み込み、QAエンジニアの自由度が上がる。

    3. QAスキルを底上げすることができる エンジニア的視点を持つことで、QAスキルが底上げされる。 4. 最新技術をテストに活かすことができる 最新技術をキャッチアップし、新時代のQAを描くことができる。 プログラミング言語学習の恩恵 学ぶことによって得られる4つの恩恵まとめ 60
  31. ©Akatsuki Games Inc. 7 プログラミング言語を学ぶ最初の一歩論 何でも良いからやれよ、ではない 64 なんでも良いから技術本買って手 を動かしたら? プログラミングは情報という学問

    だ!基礎から学習!さぁ、まずは 基本情報技術者試験だ!! 作りたいものを描くこと、 そして作りたいという意思を持つこと 経験の積み上げサイクル 動くものから 得られる情報は多い
  32. ©Akatsuki Games Inc. 7 プログラミング言語を学ぶ最初の一歩論 ハイスピードで積み上げるコツ 66 メンテナンスから始めよう • すでに動いているものをベースに改修を加えると良い

    • 「動くものから得られる情報は多い」ので、改修前にシステムの全体像をつかみやすい • 0 → 1ではなく、まずは、1.0 → 1.1 を実現することを目指す
  33. ©Akatsuki Games Inc. 8 1. 黒い画面(コンソール)での操作を伴うことが多い 2. お手本と環境がずれる要因が多い ◦ OSの種類(Windows,

    Mac, Linux) ◦ 言語バージョン(メインバージョンのずれ) ◦ マシンアーキテクチャ(Intel CPU、Arm CPU) 3. 環境構築のための技術、がある ◦ プログラミング言語を学習したいのに、そのためにまず環境構築の技術を習得するのは酷 プログラミング言語学習のここが難しい なぜ環境構築でつまずくのか 70 膨大なネットの情報だけ見ても、 それが正解かどうか判断できない事が多い
  34. ©Akatsuki Games Inc. 8 1. 環境構築が不要な言語で作る ◦ 業務改善にも使えるので、GASはおすすめ 2. 自分の環境と同じ環境で学習できる書籍を買う

    ◦ 愚直に、全部真似る 3. ウェブで提供されている構築済みの環境を利用する ◦ いわゆる、オンライン統合開発環境(replitなど)を利用する 4. 仮想環境を構築する ◦ Dockerなどを用いると実現できるが、難易度高し プログラミング言語学習のここが難しい 環境構築を、避ける 74 https://replit.com/

  35. ©Akatsuki Games Inc. 9 まとめ ゲームQAはノーコードの自動化で救えるか? 76 • ゲーム業界では、簡単に扱える自動化ツールが発展しきっていない ◦

    スクリプトをコーディングするテストフレームワークが有名 • ゲームQAの難易度の高さをノーコードで吸収しきれない可能性がある • コードを書くことによって得られる恩恵がある ノーコードで自動化は しなくても良い、と思っている。
  36. ©Akatsuki Games Inc. 9 まとめ ノーコード時代にプログラミングを学習する理由 77 1. 開発エンジニアとの連携が取りやすくなる 開発エンジニアの言ってること、やってることが理解できる。

    2. 開発エンジニアの領域に踏み込むことができる 開発エンジニアの領域に踏み込み、QAエンジニアの自由度が上がる。 3. QAスキルを底上げすることができる エンジニア的視点を持つことで、QAスキルが底上げされる。 4. 最新技術をテストに活かすことができる 最新技術をキャッチアップし、新時代のQAを描くことができる。
  37. ©Akatsuki Games Inc. 9 まとめ プログラミング学習の最初の一歩に必要なこと 78 1. 作りたいものを描くこと、作りたいという意思を持つこと モチベーションを維持し続ける。

    2. 経験の積み上げサイクルを高速に回すこと すでに動いているシステムのメンテナンスから始めるのがコツ。 3. 環境構築で無駄につまらないこと できるだけ、避ける。