#はじめに
この記事は、グリー品質管理Advent Calendar 2021の12日目になります。
筆者がモバイルゲームアプリ(以下アプリ)の新規リリースに携わった際、クライアント側のパフォーマンス計測の依頼を対応した備忘録を記録していきます。
同じような対応をされる方の参考になれば幸いです。
#パフォーマンステスト実施の経緯
私の担当しているアプリでは、比較的リッチなホーム画面演出や3Dモデルを採用しており、起動後のロード時間や低スペック端末でのFPS値の低下が課題として存在していました。
しかし、あくまでプロダクトチーム内での体感値が元となっていたため、改善の具体的な目標を定義するため、定量的な数値を計測し、他アプリとの比較を行うこととなりました。
#パフォーマンステストの実施
今回アプリでパフォーマンステストを実施した際の一連の流れを記載していきます。
##要件定義
テストの要件をプロダクトチームとすり合わせます。
###計測箇所調整
アプリ内でパフォーマンスを計測する箇所を具体的に定義します。
プロダクトチームの要望をヒアリングしたり、機能テストやユーザテストの結果をもとに計測箇所を決めるとよいと思います。
私の担当タイトルでは、次のような箇所をテストしました。
- アプリ起動からロードを挟み、ホーム画面遷移までの所要時間
- バトル開始ボタンタップから、実際にバトル画面へ遷移するまでの所要時間
- インゲーム/アウトゲーム各画面のFPS値
注意点としては、テストの条件をすり合わせておくことが挙げられます。
ゲームの進行状況やキャラクター編成によって描画するオブジェクトの量が増えたりする場合、ロード時間やFPSに影響を及ぼすかを確認し、必要に応じて複数パターンのテスト項目を設ける必要があります。
###計測端末調整
アプリリリース時の推奨端末や下限端末、市場シェア等をもとに計測対象とする端末を選定しましょう。
Android端末は種類が膨大にあるので、メーカーやチップセット、RAMサイズの組み合わせで範囲を絞っていく必要があります。
海外でのリリースを行う場合はAndroidの低スペック帯を厚めにする、MediaTek製チップセットを盛り込む等、アプリのターゲットを考慮して調整できるとよいと思います。
###成果物の定義
計測結果をどのような形で提出するかを決めておきます。
例えば私が対応したケースでは、シートへの計測結果記載+計測時の動画提出を行い、
数値での定量的な指標と、動画を見た際の定性的な指標をもとに、プロダクトチームにパフォーマンス改善の指針を定めてもらいました。
##テスト準備
すり合わせた要件に沿ったテストを実施する上での事前準備で実施したタスクを記載していきます。
###テストスケジュールの策定
通常のテストでもスケジュールは引くと思いますが、後述の各タスクを調整する必要があるので、普段より早めにスケジュールは調整する必要があります。
###デバッグ機能/ダミーデータの準備
FPSの計測や、テストの条件を満たすために必要なデバッグ機能やダミーデータの準備をプロダクトチームに対応してもらう必要があります。
今回はFPS値の表示や、検証に必要な条件を整えるためのデバッグコマンド(ホーム画面のオブジェクトを増やす)を準備してもらっています。
###端末準備
事前に決定したテスト対象端末の準備です。
###計測結果記載シートの作成
テスターさんが計測結果を記入するシートです。
事前にどんな端末で何を計測するかは決めてあると思うので、それらの項目が網羅されていればOKだと思います。
検証シートの作成例です。
アプリ起動からホーム画面までの遷移を以下の条件で検証しました。
・最小限の範囲をプレイした状態
・ある程度ゲームを進行させて、ホーム画面の処理を増やした状態
端末はチップセットのメーカーや、RAMサイズでパターンを分けています。
##テスト実施
基本的にはここまで準備ができていれば、テスト実施の上で困ることはない…はずです。
##結果報告~改善後の再実行
今回のゴールは、パフォーマンス改善の目標値を定義し、改善を実施するところまでとなっています。
そのため、結果の報告後はプロダクトチームによる改修結果の再確認が必要となります。
今回の自社タイトルの例では、プロダクトチームが考える対象スペックの計測数値を他タイトルの計測数値を比較し、画面遷移の所要時間や低FPS状態の発生が浮き彫りになりました。
その結果、ホーム画面への遷移時間の改善と、低スペック端末向けのFPS改善のための低画質モードが実装されました。
#今後の展望
パフォーマンステスト以外の多端末での動作テストでも言えることではあるのですが、Androidはスペックの幅が広く、手広くやろうとするとテスト実施工数の増加が課題となってきます。(端末の確保も大変ですが…)
これらのテストは実施内容をあらかじめスクリプト化しておくことが可能なので、Airtest等のUIテストツールを使用することで、工数の削減余地があるのではないかと考えています。
今後の目標として、内製でのスクリプト作成や、UIテストに強いテストベンダーさんと連携して、効率的にテストを実施する方法を模索しています。
進捗があれば記事をアップデートしていきたいと思います!