モバイル アプリのパフォーマンス テスト

⚡ スマートサマリー

モバイルアプリのパフォーマンステストでは、アプリケーションの起動速度、バッテリーとメモリの消費量、APIの応答速度、不安定なネットワーク環境での動作の安定性などを測定します。

  • 🔘 3つのカテゴリー: デバイスのパフォーマンス、サーバーまたはAPIのパフォーマンス、そしてネットワークのパフォーマンスが合わさって、あらゆるモバイルのボトルネックを網羅します。
  • ☑️ デバイス信号: 起動時間、バッテリー消費量、メモリ使用量、ハードウェアのばらつき、バックグラウンド復元は、主要なデバイスチェック項目です。
  • サーバー信号: ペイロードサイズ、アクションごとのAPI呼び出し回数、およびサーバーダウン時のフェイルオーバー計画(文書化済み)。
  • 🧪 ネットワーク信号: ジッター、パケットロス、速度変化はすべて、画面がフリーズするのではなく、明確なメッセージとして表示されるべきです。
  • 🛠️ ツーリング: RobotiumMonkeyRunnerとAutomatorもここに掲載されていますが、最初の2つは現在メンテナンスされていません。
  • 📊 準備状況: RAM、応答時間、同時実行性、クラッシュ耐性に関するチェックリストに基づいて、ビルドが出荷されるかどうかが決定されます。

デバイス、サーバー、ネットワーク層全体にわたるモバイルアプリのパフォーマンステスト

モバイルアプリにとって、パフォーマンスは非常に重要です。アプリのパフォーマンスが悪ければ、エンドユーザーはアプリをアンインストールし、よりパフォーマンスの良い別のアプリを探すでしょう。

モバイル アプリケーションは、エンド ユーザーにリリースする前に徹底的にテストする必要があります。

モバイルアプリケーションのテスト戦略

携帯電話やスマートデバイス上のアプリケーションのパフォーマンスは、通常、次の 3 つのカテゴリで測定されます。

  • デバイスのパフォーマンス
  • サーバー/APIのパフォーマンス
  • ネットワークパフォーマンス

下の図は、これら3つの層とそれぞれのチェック項目を対応付けたものです。

モバイルアプリケーションテスト戦略チャート:デバイス、サーバー、ネットワークのパフォーマンスチェックを分割

デバイスのパフォーマンス

アプリの動作が遅いと、クライアントはイライラしてしまいます。

デバイスのパフォーマンスについては、以下の点を確認してください。

  • アプリの起動: アプリの起動にどれくらい時間がかかりますか? これは、ユーザーが判断する最初のパフォーマンスパラメータです。 経験則として、ユーザーがアプリのアイコンをタップした後、1 ~ 2 秒以内に最初の画面が表示されるはずです。
  • アプリ使用時のバッテリー駆動時間: モバイルアプリによっては、継続的に使用するとバッテリーを大量に消費し、端末が発熱することがあります。これは通常、アプリが必要以上にリソースを使用しているためにプロセッサに負荷がかかっている場合に発生します。
  • メモリ消費量:    テスト アプリを使用する場合は、アプリによるメモリ消費量を確認する必要があります。アプリに特定の機能を実装すると、メモリ消費量も増加します。たとえば、 Android アプリにプッシュ通知が実装されると、メモリ消費量が増加します。

    場合によっては、OS 全体のメモリ使用量がわずか 14% であるにもかかわらず、新しいアプリが 11% を消費していることが観察されています。 したがって、アプリを現実世界に展開する前、またはクライアントに提供する前に、これらの要素を処理する必要があります。

  • ハードウェア/ソフトウェアのバリエーション: モバイル アプリをテストするときは、さまざまなデバイスでアプリを確認することが必須です。あるデバイスではアプリがスムーズに動作しても、別のデバイスではスムーズに動作しない場合があります。さまざまなベンダーと同様に、 Android デバイスでは、Samsung、HTC、Lenovo の携帯電話でアプリを確認できます。同様に、アプリは 1 GB や 2 GB などのさまざまな RAM とプロセッサ仕様でテストする必要があります。
  • 他のアプリとの併用: テスト対象のアプリが他のアプリと並行して実行されている場合、干渉は発生しないはずです。 それを確認する最良の方法は、テスト中のアプリと他のアプリを切り替えることです。
  • バックグラウンドでアプリを実行中: バックグラウンドで実行されているアプリが取得された場合、アプリは以前と同じ状態を維持する必要があります。このシナリオが適切に処理されない場合、データが失われます。関連するライフサイクルケースについては、以下で説明します。 割り込みテスト.

サーバー/APIのパフォーマンス

アプリがAPIを介してサーバーとやり取りする場合、応答時間はパフォーマンスにとって非常に重要になります。サーバーのパフォーマンスについては、以下を確認してください。

  • サーバーとの間のデータ: アプリはサーバーから送信されるデータを効率的に処理する必要があります。データの読み込みに時間がかかりすぎてはいけません。アプリによっては、データが特定の形式で送信されるため、アプリに表示する前に適切な形式に変換する必要があります。この処理によって、アプリの動作が遅くなり、応答時間が長くなる場合があります。
  • アプリから生成されたAPI呼び出し: テスト対象のアプリから生成されたサーバーへの呼び出しの数は少なくなるはずです。 場合によっては、同じ機能に対して複数の API 呼び出しが行われることがあります。 パフォーマンスを向上させるには、より少ない呼び出し数でこれを処理する必要があります。
  • サーバーダウン時間: 何らかの理由でサーバーがダウンしたりアクセス不能になったりした場合でも、ネイティブデータベースにデータを保存できます。そのため、サーバーがダウンした場合でも、ネイティブデータベースに保存されているデータを表示できます。別の解決策としては、フェイルオーバーデータベースサーバーが考えられます。つまり、いずれかのサーバーがダウンしたりメンテナンス中になったりした場合、バックアップサーバーが切り替え可能になっている必要があります。フェイルオーバー/バックアップサーバーは、メインサーバーと継続的にレプリケーションおよび同期を行う必要があります。

ネットワークパフォーマンス

さまざまなネットワークおよびネットワーク プロパティでのアプリのパフォーマンスを測定する必要があります。

ネットワークパフォーマンスについては、次の点を確認します。

  • 不安: ネットワーク上で情報を受信する際に遅延がある場合、それはジッターと呼ばれます。 これは、コネクションレス ネットワークまたはパケット スイッチ ネットワークの問題です。 情報がパケットに分散されると、パケットは送信者から受信者まで異なるパスを通過する可能性があります。 データが目的の場所に到着すると、最初に送信されたものよりもスクランブルがかかります。 ジッターの場合、モバイル アプリはそれを処理するのに十分な能力を備えている必要があります。

    エンドユーザーには、リクエストを再送信するか、システムが再び応答するまで待つかのいずれかを促す適切な通知を表示する必要があります。

  • パケットロス: パケットが完全に失われた場合、アプリは情報の要求を再送信するか、それに応じてアラートを生成できる必要があります。データが完全でない場合、ユーザーはアプリに表示される情報を理解できません。これはユーザーにとってストレスになる可能性があります。そのため、適切なメッセージを表示するか、ユーザーに再試行を促す方がよいでしょう。
  • ネットワーク速度: アプリは、速度の異なる様々なネットワークで動作確認を行う必要があります。3G、4G、5Gネットワ​​ークでテストを実施してください。Wi-Fiとモバイルネットワークの両方が含まれます。また、特に両方のネットワークが利用可能な場合や、ネットワークが切り替わった場合など、アプリの動作を監視する必要があります。

    例えば、ユーザーがスマートフォンのネットワークを4GからWi-Fiに切り替えたり、その逆を行ったりする際に、アプリに問題が発生する場合があります。この場合、アプリが応答しなくなり、使用するにはアプリを再起動する必要が生じる可能性があります。

モバイル アプリケーションのパフォーマンスのトラブルシューティング

問題点を発見した後、 性能試験そろそろ trace および不具合を修正します。

問題 1) モバイルアプリの応答が遅い、または遅い。

この遅延の原因は、RAM、キャッシュなどである可能性があります。

不要なプロセスを強制終了するか、キャッシュをクリアする必要があります。 接続の問題をトラブルシューティングすると、遅延の原因となっている問題の一部が解決される可能性があります。

問題 2) アプリの再起動、ロックアップ、フリーズ、または無応答。

以下の手順で解決できる可能性があります

  • アプリケーションコードの最適化
  • ソフトウェアにはパッチを適用して更新する必要があります。
  • 自動復元
  • 外部カード使用時のRAM、場合によってはROMの管理
  • Wiping キャッシュパーティショニング
  • アプリが他のサードパーティ製アプリやAPIと連携して動作することを確認する
  • 地図ping デバイスに応じたモバイルアプリケーション

便利なモバイルアプリテストツール

モバイルアプリのテストツール デバイスやモバイル OS によって異なります。 一般的なモバイル アプリのパフォーマンス テスト ツールには、次のようなものがあります。

アンドロイド

  • Robotium まるで Selenium モバイルアプリ向け。 テスターは、テストの実行に必要ないくつかのステップを記録および再生できます。
  • モンキーランナー MonkeyRunner は、PC またはエミュレータに接続された実際のデバイスでテストを実行できます。このツールにはAPIがあり、外部からスマートフォンやタブレット、エミュレータを制御することができます。 Android コー​​ド。

⚠️ バージョンノート: 両方 Android 記載内容は過去のものです。 Robotium 2016年以降リリースされておらず、 Google MonkeyRunner はメンテナンスされていないとマークし、チームに UI Automator とその ウイオートマビューア 代わりに検査官を。

アップル

  • Automator(Mac) AutomatorはAppleが開発したアプリケーションです。 macOSこの機能により、ポイント&クリック(またはドラッグ&ドロップ)でワークフローを作成し、反復作業をバッチ処理で自動化することで、より迅速な変更が可能になります。これにより、各ファイルを個別に手動で変更するよりも時間と労力を節約できます。

チャレンジ

パフォーマンス テスト中に直面する主な課題は次のとおりです。

  • さまざまなモバイルプラットフォームとそのオペレーティングシステムを整理する
  • 3G、4G、5G、Wi-Fiなどの接続性をシミュレートする。
  • バッテリーやリソースの消費などのモバイルデバイスの制約
  • 携帯電話の使いやすさ
  • 同じアプリを実行するさまざまなサイズのモバイル デバイス

モバイル アプリのパフォーマンス テスト環境をセットアップする

テスト環境を構成するには、次のことを行う必要があります。

  • テストが必要なモバイルアプリの理解
  • アプリを実行する必要があるさまざまな OS の識別
  • テストセットアップの構築
  • エミュレータまたはシミュレータを構築する
  • プロトタイプping 実際のセットアップ
  • テストに適切なツールの選択

モバイルアプリのパフォーマンステストのチェックリスト

モバイル アプリのパフォーマンスをテストすることは、リリース前の重要な手段です。 パフォーマンステストはチェックのために行われます

  • このアプリを利用するにはどれくらいの RAM が必要ですか?
  • さまざまなネットワークや状況下でアプリの速度と応答時​​間を検証します。
  • さまざまなネットワーク条件下で現実的なユーザー エクスペリエンスを確保
  • 複数の接続の場合に必要な結果が確実に達成されるようにする
  • アプリケーションがクラッシュしないようにしてください。
  • データ、Wi-Fi、その他の接続を使用しているときにモバイル アプリケーションが適切に動作することを確認する
  • 稼働時間とモバイル API 使用のボトルネックの監視
  • 同時接続ユーザー数を最大限に確保するため
  • 最後に、モバイルアプリを限界までチェックします

よくあるご質問

ミドルレンジ端末の場合、2秒未満が一般的な目標値であり、上記のルールに合致する。実際の苦情の多くは端末の応答速度の遅さに関するものであるため、平均値ではなく95パーセンタイル値を測定する。

ANR はアプリケーション応答なしイベントで、 Android メインスレッドがブロックされます。クラッシュフリー率は、クラッシュせずに終了したセッションの割合です。 Google Playは、いずれかの項目について、公表されているしきい値を超えるアプリの優先順位を下げます。

スクロールやアニメーションの基準は毎秒60フレームで、最新のディスプレイは90フレーム以上を目指している。フレーム落ち(いわゆる「ジャンク」)は、たとえ画面がクラッシュしなくても、画質の悪さとして認識される。

機械学習はデバイスモデルごとに各指標のベースラインを設定するため、回帰は単一のグローバルな数値ではなく、類似のハードウェアに対してフラグ付けされます。また、遅いクラスタリングも行います。 tracつまり、どのボトルネックが最も多くのセッションに影響を与えるかをランク付けするということです。

Copilotは、ロードスクリプトの骨組みやメモリサンプルをキャプチャするループなど、繰り返し使用される処理を適切に生成します。しきい値とデバイスの選択は製品に合わせて調整されるため、生成されたアサーションを信頼する前にすべて確認してください。

両方を活用しましょう。エミュレータは、パイプライン内で安価かつ再現性の高いネットワークおよびAPI実行を実現します。一方、バッテリー消費、熱による性能低下、ベンダー固有の動作など、エミュレータでは忠実に再現できない要素については、実機が必要です。

JMeter は、アプリケーションが使用するエンドポイントと同じ場所で同時リクエストを処理するための一般的なオープンソースツールです。これは、デバイス側のツールでは決して見ることができないサーバー容量を測定します。

起動時間、メモリ使用量、バンドルサイズなどに関する記録された制限値で、ビルド時に自動的にチェックされます。この制限値を超えるとビルドが失敗するため、リリース後ではなくマージ時に不具合が検出されます。