QAエンジニア勉強会 #3 の内容です。 https://qa-engineer-meetup.connpass.com/event/272831/
©Akatsuki Games Inc.ゲームQAはノーコードの自動化で救えるのか?株式会社アカツキゲームス山﨑 友貴@tomo_tk11QAエンジニア勉強会 #3 2023-03-02
View Slide
©Akatsuki Games Inc.自己紹介株式会社アカツキゲームスQA自動化チーム Project Leader山﨑 友貴 tomotaka-yamasakiJob: QA EngineerJSTQB FL/AL-TA資格保有Twitter: @tomo_tk11二児のパパ(3y, 1y)子供の全力目覚ましで起きる日々。2015 株式会社アカツキ エンジニア 新卒入社オリジナルタイトルのゲーム運営チームクライアントエンジニア他社IPタイトルのゲーム運営チームクライアントエンジニア2017他社IPタイトルのゲーム運営チームクライアントエンジニアチームリーダー2019株式会社アカツキ福岡 出向テストの自動化や効率化のチーム立ち上げ各プロジェクトのテスト自動化、効率化に取り組みながら、QA組織づくりに従事現在2022株式会社アカツキゲームスQA自動化チーム Project LeaderにQAエンジニアとしてQA自動化に集中し、タイトル横断PJTとして取り組んでいる2
©Akatsuki Games Inc.まくら(枕)03
©Akatsuki Games Inc. 4会話型AIサービス(AIチャット)が世間を賑わせてますね。● ChatGPT(OpenAI)● Bing(Mircosoft)● Bard(Google)
©Akatsuki Games Inc. 5良いかどうかは置いといて、AIが活用される場面も増えてきました。● 自動運転(レベル3: 条件付き運転自動化)● カスタマーサポート(AIチャットボット)● イラスト(NovelAI など)● 音楽(MusicLMなど)
©Akatsuki Games Inc. 6もちろん、QA x AI の事例もたくさんありますね。● テスト実行時の操作自動化● テスト実装時のテストケース作成支援● 自動テストスクリプトの自動メンテナンス(オートヒーリング)AIを活用した自動テストツールの現状と未来|SHIFT Group 技術ブログ|note
©Akatsuki Games Inc. 7https://qiita.com/tomotaka-yamasaki/items/5d0631ce9ed47ed4e782
©Akatsuki Games Inc. 8ユニットテスト自動生成は無理そう。素数判定プログラム
©Akatsuki Games Inc. 9わかってそうでわかっていないデシジョンテーブル。https://point.rakuten.co.jp/guidance/rankkeep/
©Akatsuki Games Inc.現時点でChatGPTはソフトウェアテスターにはなれなさそう● 回答は間違っている場合が多いので鵜呑みにはできない● 知識のあるソフトウェアテスターの力には、ギリギリなってくれそう● ただ、対話だけでここまで確からしい回答が返ってくることは素晴らしい10AIを上手に使わないと良い仕事ができなくなる時代 はそう遠くないかも?
©Akatsuki Games Inc.ダイアログベースドテスティング の時代?● テスト対象を熟知した AI と対話をしながらテストをする時代11AI との対話式テスト手法
©Akatsuki Games Inc.アカツキゲームスの紹介112
©Akatsuki Games Inc. 13https://note.com/yukitotsuka/n/n84d6fc3356adhttps://note.com/shuheiyamaguchi/n/na8de62d29fc8
©Akatsuki Games Inc.1アカツキゲームスの紹介MISSION、中期ゴール14https://games.aktsk.jp/about/
©Akatsuki Games Inc.QA自動化チームの紹介215
©Akatsuki Games Inc.2QA自動化チームの紹介エンジニア職能に属するQA自動化チーム16TeamA4先進的で積極的にアカツキゲームスを守るチームという意。QA x エンジニアの軸でテスト自動化やQA効率化を行うことでQAを支援する、エンジニア職能のPJT横断型独立組織。Advanced and Aggressive Aegis of Akatsuki Games
©Akatsuki Games Inc.2QA自動化チームの紹介A4チームが実現したい未来17● 時間は有限である● 機械的に行える作業はA4が自動化する● 当たり前品質に向き合う時間を減らし、ワクワクできる魅力的な品質とは何かを追求する時間を増やすためのお手伝いをする人でしかできないことに、時間を使えるように
©Akatsuki Games Inc.本日の話の概要318
©Akatsuki Games Inc.3本日の話の概要お話すること、しないこと19● 以下の内容を、モバイルゲームアプリのQA視点から話します ○ ゲームの自動テストシステムの技術概要 ○ ノーコード時代に、なぜプログラミングを学ぶのか ○ 自動テストが書けるようになるために、何をすればよいのか ● 自動テストシステムの技術詳細 ○ 以下のブログを書いているので見てみてください ■ Airtest で CLI, IDE や AWS Device Farm, Local など様々なテスト実行手段、環境があったとしても楽に自動テストを実行する方法 ■ AWS Device Farm で Airtest を動かす方法
©Akatsuki Games Inc.3本日の話の概要ターゲットリスナー20自動テスト書いてみたいなぁ。QAエンジニア興味あるけど、なにから始めたら良いかわからんなぁ。QA、テスター自動テストを書くことができる人、増やしたいんだよなぁ。QAエンジニア
©Akatsuki Games Inc.3本日の話の概要注意事項21他の自動テストのやり方を否定するものではありません。 自動テストはそれぞれのドメインで、最適なやり方があります。 今回はディベロッパーのモバイルゲームQAの視点 から、 「こういうやり方が良さそうだけど、どうだろうか?」という話をします。
©Akatsuki Games Inc.ゲームQAの難しさ422
©Akatsuki Games Inc. 23ゲームQAの難易度を高めている 4つの要因
©Akatsuki Games Inc.4ゲームQAの難しさゲームQAの難易度を高めている4つの要因24AWS DEV DAY 2022. AWS Device Farm と Airtest でモバイルゲーム自動テスト 更新頻度 x 更新量 =QAのコスト運用的開発 新規的開発 週単位のデータ更新(イベント、ガチャなど) 月単位のシステム変更(新機能アップデートなど)
©Akatsuki Games Inc.4ゲームQAの難しさゲームQAの難易度を高めている4つの要因25AWS DEV DAY 2022. AWS Device Farm と Airtest でモバイルゲーム自動テスト 増え続ける機能 =増え続けるコスト● リグレッションテストの項目が雪だるま式に増える● とあるゲームプロジェクトの場合、約40機能、約9000項目、約60人日
©Akatsuki Games Inc.4ゲームQAの難しさゲームQAの難易度を高めている4つの要因26AWS DEV DAY 2022. AWS Device Farm と Airtest でモバイルゲーム自動テスト 「ゲーム」構成要素の組み合わせ = ∞● バトルだけでも、パラメータ x アクション x 状態 x … = ∞● 簡単に組み合わせ爆発が起こる
©Akatsuki Games Inc.4ゲームQAの難しさゲームQAの難易度を高めている4つの要因27AWS DEV DAY 2022. AWS Device Farm と Airtest でモバイルゲーム自動テスト 「おもしろい」の定義 = ?● 「おもしろい」をテストすることの難易度がそもそも高い● 定量的なテストの限界がある
©Akatsuki Games Inc.41. 更新頻度 x 更新量 = QAのコスト運用的開発と新規的開発の更新頻度と量が多い。2. 増え続ける機能 = 増え続けるコストリグレッションテストの項目が雪だるま式に増える。3. 「ゲーム」構成要素の組み合わせ = ∞簡単に組み合わせ爆発が起こる。4. 「おもしろい」の定義 = ?「おもしろい」をテストすることの難易度がそもそも高い。ゲームQAの難しさゲームQAの難易度を高めている4つの要因まとめ28AWS DEV DAY 2022. AWS Device Farm と Airtest でモバイルゲーム自動テスト
©Akatsuki Games Inc.41. 更新頻度 x 更新量 = QAのコスト運用的開発と新規的開発の更新頻度と量が多い。2. 増え続ける機能 = 増え続けるコストリグレッションテストの項目が雪だるま式に増える。3. 「ゲーム」構成要素の組み合わせ = ∞簡単に組み合わせ爆発が起こる。4. 「おもしろい」の定義 = ?「おもしろい」をテストすることの難易度がそもそも高い。ゲームQAの難しさゲームQAの難易度を高めている4つの要因まとめ29AWS DEV DAY 2022. AWS Device Farm と Airtest でモバイルゲーム自動テスト 自動化に 向いている要因
©Akatsuki Games Inc. 30なぜ自動テストを 適用することが難しいのか
©Akatsuki Games Inc.4ゲームQAの難しさ自動テスト適用が難しい3つの理由31「おもしろい」の定義 = ?「ゲーム」構成要素の組み合わせ = ∞増え続ける機能 =増え続けるコスト更新頻度 x 更新量 =QAのコストゲームQAの難易度を高めている4つの要因木こりのジレンマが発生する進まない自動化…
©Akatsuki Games Inc.4ゲームQAの難しさ自動テスト適用が難しい3つの理由32簡単に扱える自動化ツールが発展しきっていない● 汎用化の難易度が高い○ 基本的にオーダーメイドなので汎用化しづらい● ネイティブアプリケーションへの対応工数が増える○ AndroidやiOS、専用ゲームハードOSへの対応で終端コードは個別実装せざるを得ない● ノーコード、AI活用機能の開発難易度が高い○ ゲーム特有の複雑な仕様や操作性が、ノーコードやAI活用機能の開発難易度を高めてしまっている
©Akatsuki Games Inc.4ゲームQAの難しさ自動テスト適用が難しい3つの理由33テストスキルドメイン知識(アプリケーション領域のスキル)技術的スキル(関連技術)プロ意識テスト担当者が持つべき4つのスキル ゲームアプリケーションの技術的スキルの習得難易度が高い● クライアント、サーバなどのゲームを構成するアーキテクチャの理解が必要○ 技術の幅が広いし、深い● ゲームアプリケーションによってアーキテクチャが異なる難Rex Black. 基本から学ぶテストプロセス管理. 日経BP社. pp.266-271 Rex Black. ソフトウェアテスト12の必勝プロセス. 日経BP社. p.193
©Akatsuki Games Inc.4ゲームQAの難しさ自動テスト適用が難しい3つの理由まとめ341. ゲームQAの難しさが木こりのジレンマを発生させているよって、テスト自動化に着手できない。2. 簡単に扱える自動化ツールが発展しきっていない汎用化の難易度が高い。ネイティブアプリケーションへの対応工数が増える。ノーコード、AI活用機能の開発難易度が高い。3. ゲームアプリケーションの技術的スキルの習得難易度が高い技術の幅が広いし、深い、かつアプリケーションごとに異なる。
©Akatsuki Games Inc.ゲームテストを自動化する技術535
©Akatsuki Games Inc.5ゲームテストを自動化する技術簡単に技術紹介36Airtest Poco
©Akatsuki Games Inc.5● ゲームにフォーカスした自動テスト用のフレームワーク及びそのツール類 ○ NetEaseから提供されている(オープンソース) ● IDEが提供されており、テストコードを気軽に記述できる ○ テストコードはPythonだが、IDEの機能で非エンジニアでも直感的に記述可能 ● CLIでテスト実行も可能なので、CI環境で自動テストを実行させやすい ● 画像認識ベースのアプリケーションの自動テストを行う機能を持つゲームテストを自動化する技術Airtest - ゲームの自動化に特化したテストフレームワーク37https://airtest.netease.com/
©Akatsuki Games Inc.5ゲームテストを自動化する技術Airtest - ゲームの自動化に特化したテストフレームワーク38© Copyright 2018, Game-Netease Revision 55eaa08f.https://airtest.readthedocs.io/en/latest/index.html
©Akatsuki Games Inc.5● アプリ内のメタ情報をAirtestで利用可能にするための自動テスト用 フレームワーク ○ Airtest同様NetEaseから提供されている(オープンソース) ● GameObjectのヒエラルキーの情報などを解析、オブジェクト名で検索 することでそのUI情報を取得し、スクリプト内で操作することができる ● RPC(Remote Procedure Call)を介してアプリ内の任意の処理をコール することも可能 ● Unity 3D、Cocos2d-*、Android、iOSのアプリに対応 ゲームテストを自動化する技術Poco - アプリ内のメタ情報をAirtestで利用可能にする39https://github.com/AirtestProject/Poco
©Akatsuki Games Inc.5ゲームテストを自動化する技術Poco - アプリ内のメタ情報をAirtestで利用可能にする40© 1997 - 2023 NetEase, Inc. All Rights Reserved.https://github.com/AirtestProject/Poco
©Akatsuki Games Inc.5● AirtestではテストスクリプトをPythonで記述する● Autify, MagicPodのようなノーコードのテスト自動化サービスが台頭する時代● 流れには逆行しているゲームテストを自動化する技術ノーコード時代に Python とは41それでも、コードを書くことによって得られる恩恵があると思っている
©Akatsuki Games Inc.プログラミング言語学習の恩恵642
©Akatsuki Games Inc.6プログラミング言語学習の恩恵テスト自動化に求められるスキルとは43
©Akatsuki Games Inc.6プログラミング言語学習の恩恵開発エンジニア、QA、QAエンジニアの連携44
©Akatsuki Games Inc. 45開発エンジニアとの連携が取りやすくなる
©Akatsuki Games Inc.6プログラミング言語学習の恩恵ゲームQAエンジニアのスキルセット46ゲーム開発技術* クライアント* Unity、UE4などのゲームエンジン* サーバ* AWS, GCPなどのインフラも含むテスト自動化技術* Airtestなどのテストフレームワーク* 自動テストをCI/CDに組み込む技術* Jenkins, AWS, GCPなどテストそのもののスキル* JSTQB など技術的スキル(関連技術)テストスキル
©Akatsuki Games Inc.6プログラミング言語学習の恩恵ゲームQAエンジニアのスキルセット47技術的スキル(関連技術)テストスキルテスト自動化技術* Airtestなどのテストフレームワーク* 自動テストをCI/CDに組み込む技術* Jenkins, AWS, GCPなどテストそのもののスキル* JSTQB などゲーム開発技術* クライアント* Unity、UE4などのゲームエンジン* サーバ* AWS, GCPなどのインフラも含む
©Akatsuki Games Inc.6プログラミング言語学習の恩恵開発エンジニア、QA、QAエンジニアの連携48開発エンジニアの言ってること、やってることが理解できる。
©Akatsuki Games Inc. 49開発エンジニアの領域に踏み込むことができる
©Akatsuki Games Inc.6● Airtestだけを使うと、アプリに影響を与えずにテストを自動化することができる● ただ、自動化後のメンテナンスコストがかかりすぎるプログラミング言語学習の恩恵Airtestだけでテストを自動化するとどうなるか50「おもしろい」の定義 = ?「ゲーム」構成要素の組み合わせ = ∞増え続ける機能 =増え続けるコスト更新頻度 x 更新量 =QAのコストゲームQAの難易度を高めている4つの要因
©Akatsuki Games Inc.6● Pocoと合わせてAirtestを使うことで自動化の幅が広がる○ UIオブジェクトの操作○ ヒエラルキー情報の取得○ PRCで内部関数呼び出し● ゲーム開発の更新頻度の高さによるメンテナンスコストを下げることができるプログラミング言語学習の恩恵Airtest + Pocoでテストを自動化する51では、Pocoを導入するのは誰なのか?
©Akatsuki Games Inc.6● Poco導入のためには以下の知識が必要○ ゲームエンジン○ クライアントコード● 上記の知識を持っていれば、導入自体はそこまで難しくはない○ Pocoの公式ドキュメントを見ることで1日もあれば導入可能● ドキュメントを見ることもエンジニアの重要なスキル○ ドキュメントを見る技術も、プログラミング技術○ (エラーを読み解くとかも、一緒)プログラミング言語学習の恩恵Poco導入は開発エンジニアの領域52
©Akatsuki Games Inc.6プログラミング言語学習の恩恵開発エンジニア、QA、QAエンジニアの連携53開発エンジニアの領域に踏み込み、QAエンジニアの自由度が上がる。
©Akatsuki Games Inc. 54QAスキルを底上げすることができる
©Akatsuki Games Inc.6プログラミング言語学習の恩恵エンジニア視点を持つことのメリット、デメリット55● テスト精度が向上する ○ 欠陥の偏在を見つけることができる ○ エラー推測の精度が向上する ○ ソースコード変更の影響範囲が分かる ● エンジニアとより深い議論ができる ○ ユニットテストに対して適切に突っ込める ○ テストカバレッジを測定できる ○ 不具合の修正方針を提案できる メリット ● 内部構造を知りすぎてしまう ○ エンジニアの確証バイアスをQAでカバーできない ○ テストの抜け漏れが発生する デメリット QA Tech Night vol.2. QA組織が最後の砦から脱却するために
©Akatsuki Games Inc.6プログラミング言語学習の恩恵開発エンジニア、QA、QAエンジニアの連携56エンジニア的視点を持つことで、 QAスキルが底上げされる。
©Akatsuki Games Inc. 57最新技術をテストに活かすことができる
©Akatsuki Games Inc.6● 技術的に難しい内容でも臆することなく、キャッチアップしにいける○ 冒頭の対話型AIも最新技術の一つ● キャッチアップする技術というよりは、いかに自分で壁を作らないかが重要● アイデアを増やし、それらを組み合わせて良いものを作り上げるのは人間の強みであるプログラミング言語学習の恩恵最新技術をキャッチアップする技術58
©Akatsuki Games Inc.6プログラミング言語学習の恩恵開発エンジニア、QA、QAエンジニアの連携59最新技術をキャッチアップし、 新時代のQAを描くことができる。
©Akatsuki Games Inc.61. 開発エンジニアとの連携が取りやすくなる開発エンジニアの言ってること、やってることが理解できる。2. 開発エンジニアの領域に踏み込むことができる開発エンジニアの領域に踏み込み、QAエンジニアの自由度が上がる。3. QAスキルを底上げすることができるエンジニア的視点を持つことで、QAスキルが底上げされる。4. 最新技術をテストに活かすことができる最新技術をキャッチアップし、新時代のQAを描くことができる。プログラミング言語学習の恩恵学ぶことによって得られる4つの恩恵まとめ60
©Akatsuki Games Inc.プログラミング言語を学ぶ最初の一歩論761
©Akatsuki Games Inc. 62プログラミングに興味を持つQAの方たちは社内でも多いです。
©Akatsuki Games Inc. 63でも、みんなこう言います。「何から始めたらええんかわからんのよ。」
©Akatsuki Games Inc.7プログラミング言語を学ぶ最初の一歩論何でも良いからやれよ、ではない64なんでも良いから技術本買って手を動かしたら?プログラミングは情報という学問だ!基礎から学習!さぁ、まずは基本情報技術者試験だ!!作りたいものを描くこと、そして作りたいという意思を持つこと経験の積み上げサイクル動くものから得られる情報は多い
©Akatsuki Games Inc.71. 不安定な土台の上でも良いので、ハイスピードで積み上げる2. 積み上げて、見えた世界(解像度が上がった状態)で土台を固めるプログラミング言語を学ぶ最初の一歩論ハイスピードで積み上げてから土台を固める65経験の積み上げサイクルどれだけ高速回転させることができるか?
©Akatsuki Games Inc.7プログラミング言語を学ぶ最初の一歩論ハイスピードで積み上げるコツ66メンテナンスから始めよう● すでに動いているものをベースに改修を加えると良い● 「動くものから得られる情報は多い」ので、改修前にシステムの全体像をつかみやすい● 0 → 1ではなく、まずは、1.0 → 1.1 を実現することを目指す
©Akatsuki Games Inc.プログラミング言語学習のここが難しい867
©Akatsuki Games Inc. 68「作りたいものは決まった、さぁやるぞ!」で、はじめにつまずくポイントはどこか?
©Akatsuki Games Inc. 69環境構築
©Akatsuki Games Inc.81. 黒い画面(コンソール)での操作を伴うことが多い2. お手本と環境がずれる要因が多い○ OSの種類(Windows, Mac, Linux)○ 言語バージョン(メインバージョンのずれ)○ マシンアーキテクチャ(Intel CPU、Arm CPU)3. 環境構築のための技術、がある○ プログラミング言語を学習したいのに、そのためにまず環境構築の技術を習得するのは酷プログラミング言語学習のここが難しいなぜ環境構築でつまずくのか70膨大なネットの情報だけ見ても、それが正解かどうか判断できない事が多い
©Akatsuki Games Inc. 71環境構築を理解するのは今じゃなくていい。
©Akatsuki Games Inc. 72では、どうするか?
©Akatsuki Games Inc. 73回避。
©Akatsuki Games Inc.81. 環境構築が不要な言語で作る○ 業務改善にも使えるので、GASはおすすめ2. 自分の環境と同じ環境で学習できる書籍を買う○ 愚直に、全部真似る3. ウェブで提供されている構築済みの環境を利用する○ いわゆる、オンライン統合開発環境(replitなど)を利用する4. 仮想環境を構築する○ Dockerなどを用いると実現できるが、難易度高しプログラミング言語学習のここが難しい環境構築を、避ける74https://replit.com/
©Akatsuki Games Inc.まとめ975
©Akatsuki Games Inc.9まとめゲームQAはノーコードの自動化で救えるか?76● ゲーム業界では、簡単に扱える自動化ツールが発展しきっていない○ スクリプトをコーディングするテストフレームワークが有名● ゲームQAの難易度の高さをノーコードで吸収しきれない可能性がある● コードを書くことによって得られる恩恵があるノーコードで自動化はしなくても良い、と思っている。
©Akatsuki Games Inc.9まとめノーコード時代にプログラミングを学習する理由771. 開発エンジニアとの連携が取りやすくなる開発エンジニアの言ってること、やってることが理解できる。2. 開発エンジニアの領域に踏み込むことができる開発エンジニアの領域に踏み込み、QAエンジニアの自由度が上がる。3. QAスキルを底上げすることができるエンジニア的視点を持つことで、QAスキルが底上げされる。4. 最新技術をテストに活かすことができる最新技術をキャッチアップし、新時代のQAを描くことができる。
©Akatsuki Games Inc.9まとめプログラミング学習の最初の一歩に必要なこと781. 作りたいものを描くこと、作りたいという意思を持つことモチベーションを維持し続ける。2. 経験の積み上げサイクルを高速に回すことすでに動いているシステムのメンテナンスから始めるのがコツ。3. 環境構築で無駄につまらないことできるだけ、避ける。
©Akatsuki Games Inc.9興味があればやってみよう。それが大事だ。まとめ一番伝えたいこと79
©Akatsuki Games Inc. 80一緒にQA自動化を推進してくれる仲間を募集しています。私(@tomo_tk11)まで気軽に Twitter DM ください。