- アプリの起動
- フォアグラウンドとバックグラウンド間の遷移
- メモリを大量に消費する操作
- UI操作
- ビデオの再生品質
前提条件
アプリのUIとビデオストリーミングの滑らかさを測定する前に、次の手順を完了してください。-
Vega Videoアプリをダウンロード、ビルド、インストールします。
Vega Videoアプリのドキュメントの手順に従ってください。
アプリをダウンロードしたら、
samplesディレクトリにあるサンプルのテストシナリオを確認します。アプリ固有の要件に合わせてガイダンスに従ってください。 - AppiumサーバーとAppium Vegaドライバーをインストールします。 Vegaとの統合に向けたAppiumのインストールにあるステップ1~4に従って作業します。 Appiumは、スクリプトを記述してアプリの滑らかさを測定するために必要となる自動化ツールです。
- Appium Inspector(英語のみ)をダウンロードします。
UI操作の記録
-
Appium Inspectorによるアプリの検査の手順1~6に従います。
-
[Start Recording] アイコンをクリックして、アプリでのUI操作を開始します。
- 画面の左側のパネルで、[Tap/Swipe by Coordinate] ([+]) アイコンをクリックします。
テストシナリオスクリプトの生成
KPIを正確に測定するには、テストシナリオを作成して、次の目的に合ったUI操作を定義します。- フォアグラウンドメモリのモニタリング
- UIの滑らかさの評価
- ビデオの滑らかさの評価
スクリプトの生成
-
VS Codeでコマンドパレットを開きます。
Mac:Shift+Command ⌘+P
Linux:Shift+Ctrl+P
-
「Vega: Generate test scenario template」と入力します。
-
テストシナリオスクリプトのファイル名を指定します。
テンプレートを生成すると、VS Codeにメッセージが表示されます。
このテンプレートの言語はPythonです。テンプレート内には、次の2つのメンバーを含むTestRunnerクラスがあります。
- prep(青の枠内)
- run(赤の枠内)
テスト中、各メンバーは次の役割を果たします。
-
prep- 実際のテストシナリオを実行する前に必要な準備をすべて行います。 たとえば、ビデオを再生するには、このメンバー関数内でナビゲーションと再生コードを定義します。prepの例は、テストシナリオの作成に示されています。 -
run- テストケースのUI操作とアクションを定義します。 たとえば、一定期間におけるビデオ再生の滑らかさを測定するには、sleep関数を呼び出して、必要な時間が経過するまで待機します。
テストシナリオの作成
以下の各タブに、アプリ内でのUI操作とビデオストリーミングをシミュレートするテストシナリオを示します。- D-Padキーイベントの記録
- ビデオストリーミングの記録
Amazon Fire TV Stickには、黒い円形の方向パッド(D-Pad)が付いたリモコンが付属しています。
このセクションでは、D-Pad入力をシミュレートして、アプリ内のUIコンポーネントを切り替えるテストシナリオを作成します。リモコンのD-Padの機能を模倣するコードを記述します。アプリユーザーは、D-Padを押すことでオプションを切り替えたり、選択を特定の方向に移動したりできます。アプリのUIを操作する場合と同じナビゲーションエクスペリエンスを、コードで実現する必要があります。D-Pad入力をシミュレートするには、次の手順を実行します。

このセクションでは、D-Pad入力をシミュレートして、アプリ内のUIコンポーネントを切り替えるテストシナリオを作成します。リモコンのD-Padの機能を模倣するコードを記述します。アプリユーザーは、D-Padを押すことでオプションを切り替えたり、選択を特定の方向に移動したりできます。アプリのUIを操作する場合と同じナビゲーションエクスペリエンスを、コードで実現する必要があります。D-Pad入力をシミュレートするには、次の手順を実行します。
- Appium Inspectorで [Commands] タブに移動し、[Execute Script] > [executeScript] を選択します。 これにより、Appium InspectorからVegaデバイスにUI操作コマンドが送信されます。
-
リモコンのD-Padキーを押す操作をシミュレートするには、
executeScriptメソッドに次の引数を指定します。-
executeScriptCommand - D-Padキーの押下を表すキーイベントを送信するには、
jsonrpc: injectInputKeyEventを使用します。 -
jsonArgument - 次のプロパティを持つJSONオブジェクトを指定します。
- inputKeyEvent(文字列)- D-Padの方向を表すキーイベントの値。D-Padに対応するコードを調べるには、「Appiumコマンド」のD-Padナビゲーションのセクションを参照してください。
- holdDuration(数値)- D-Padキーを押したままにした状態をシミュレートする時間(ミリ秒単位)。単一の押下を表すには0を使用します。
例:
-
executeScriptCommand - D-Padキーの押下を表すキーイベントを送信するには、
- テストシナリオテンプレートを生成し、Appium Inspectorから記録されたUI操作をテンプレートにコピーします。 テストシナリオスクリプトの生成の手順に従ってください。
- Appium Inspectorに戻ります。
- [Recorder] タブを選択して、記録されたコードを確認します。
テストシナリオの目標
- アプリを準備完了状態で起動する。この段階ではUI操作は必要ありません。
- D-Padキーを送信してページ上でUIフォーカスを動かしながら、アプリのUIの滑らかさを測定する。
prepメンバー関数には何も定義する必要はありません。Recorderは、記録セッション中にユーザーが実行したアプリのUI操作をキャプチャします。記録されたUI操作を表すコードをrunメンバー関数に貼り付けます。このコードにより、テストの実行中にアプリ上で同じUI操作が実行されます。次の画像では、同じD-Padキー押下イベントをループ処理で5回送信することで、ユーザー入力の繰り返しをシミュレートしています。
アプリの滑らかさの測定
- VS Codeでコマンドパレットを開きます。 Mac:Shift+Command ⌘+P Linux:Shift+Ctrl+P
-
「Vega: Launch App KPI Visualizer」と入力します。
-
コマンドパレットからユースケースを選択します。
-
[Record CPU Profiler] のチェックボックスがオフになっていることを確認し、[OK] をクリックします。
-
[Custom Test Scenario] ダイアログボックスで、[Yes]をクリックします。
- テストシナリオスクリプトの生成で生成したテストシナリオを選択します。
- テストを実行します。


