mobile application performance testing guide
モバイルアプリケーションのパフォーマンステストガイド:
これで パフォーマンステストチュートリアルの明示的な範囲、 私たちはの概念を探求しました クラウドパフォーマンステスト 前回のチュートリアルで。
ここでは、モバイルアプリケーションとは何か、モバイルアプリケーションの種類、モバイルアプリケーションのパフォーマンステストアプローチ、モバイルアプリケーションのパフォーマンステスト環境のセットアップ方法、モバイルアプリケーションのパフォーマンスの問題のトラブルシューティング方法、関連する課題、利用可能なツールなどについて学習します。詳細に。
=> 完全なパフォーマンステストチュートリアルシリーズについては、ここをクリックしてください
学習内容:
- 概要概要
- モバイルアプリケーションとは何ですか?
- モバイルアプリケーションのアーキテクチャ
- モバイルアプリケーションパフォーマンステストアプローチ
- モバイルアプリケーションのパフォーマンス戦略
- モバイルアプリケーションパフォーマンステスト環境
- モバイルアプリケーションのパフォーマンステストの課題
- モバイルアプリケーションのパフォーマンス問題のトラブルシューティング
- モバイルアプリケーションパフォーマンステストツール
- 結論
- 推奨読書
概要概要
今日のテクノロジーの世界では、モバイルアプリケーションは通常のデスクトップアプリケーションよりも広く使用されています。デスクトップやラップトップを使用するよりも、ほとんどのアプリケーションにアクセスするためにスマートフォンを使用するユーザーの数は大幅に増加しています。
また、エンドユーザーは、アプリケーションを使用しているときに、アプリケーションからの良好な応答を期待します。したがって、モバイルアプリケーションを構築する開発者は、アプリケーションを開発する際にこれを念頭に置く必要があります。
現在、パフォーマンステストは、通常のWebアプリケーションまたはモバイルデバイス上のアプリケーションのいずれかで重要です。アプリケーションがパフォーマンステストなしで稼働し、エンドユーザーが応答の遅さなどのパフォーマンスの問題に直面した場合、彼はより良い方法で実行される別のより良いアプリケーションを見つけようとします。
パフォーマンステストは費用がかかり、時間もかかります。したがって、多くのクライアントはパフォーマンステストに行くことを避けますが、これは本番環境の問題に大いに役立ちます。したがって、アプリケーションをエンドユーザーが利用できるようにする前に、アプリケーションを徹底的にテストする必要があります。
モバイルアプリケーションとは何ですか?
モバイルアプリケーションは、スマートフォン、タブレット、その他のフィーチャーフォンなどのモバイルデバイスで動作するように設計された事前定義された機能のセットです。すべてのモバイルアプリケーションが同じというわけではありません。3つの異なるタイプのモバイルアプリケーションがあり、これらはそれらのアプリケーションの開発に使用されたテクノロジーに基づいています。
3種類のモバイルアプリケーションは次のとおりです。
- ネイティブモバイルアプリケーション
- Webベースのモバイルアプリケーション
- ハイブリッドアプリケーション
#1)ネイティブモバイルアプリケーション:
ネイティブモバイルアプリケーションは、独自のスマートフォンまたはタブレットで実行されるアプリケーションであり、モバイルデバイスのオペレーティングシステムで実行されます。それらは高性能を提供し、非常に信頼性もあります。これらのタイプのアプリケーションは、写真、名簿など、スマートフォンデバイス上の他のアプリケーションにもアクセスします。
ネイティブアプリケーションは、モバイルアプリケーションストアで入手できます。 Androidの場合はPlayストアがあり、iPhoneの場合はiTunesがあります。したがって、これらのアプリケーションはそれぞれのストアからダウンロードされ、モバイルデバイスにインストールされます。
例 ネイティブアプリケーションの中には、電卓、カレンダー、Facebookアプリケーションなどがあります。
#2)Webベースのモバイルアプリケーション:
Webベースのモバイルアプリケーションはブラウザから直接実行され、モバイルデバイスにはインストールされません。
例 Webベースのモバイルアプリケーションの多くは、オンラインゲーム、ソーシャルネットワーキングサイトなどです。
#3)ハイブリッドアプリケーション:
ハイブリッドアプリケーションはネイティブアプリケーションに似ており、ネイティブコンテナ内で実行されます。両方のアプリケーションが混在しており、実際のブラウザではなくデバイスブラウザを使用してアプリケーションのWebページをレンダリングします。
例 ハイブリッドアプリケーションのは、Instagram、Yelpなどです。
モバイルアプリケーションのアーキテクチャ
上の図では 、 スマートフォンとタブレットはクライアント側にあります。これには、スマートフォン、タブレット、3G、4Gなどのネットワークなど、私たちが通常使用するデバイスが含まれます。Android、iOS、Windowsなどのデバイスのオペレーティングシステム。
モバイルセルネットワーク 、ワイヤレス、インターネット、ファイアウォールはネットワークに分類されます。セルネットワークの場合、信号強度、ネットワーク輻輳、ドロップアウトなどが表示されます。ワイヤレスネットワークの場合、信号強度、速度などが表示されます。
Web、アプリ、およびDBは、作業の大部分が行われるサーバー側にあります。
モバイルアプリケーションパフォーマンステストアプローチ
モバイルアプリケーションのパフォーマンステストは、Webアプリケーションのパフォーマンステストとは異なります。 Webアプリケーションへのアクセスに使用されるラップトップまたはデスクトップは、パケット損失や遅延などのネットワーク状態の悪化にそれほど悩まされることはありません。
モバイルアプリケーションのネットワーク状態では、パケット損失、遅延、スマートフォンやスマートデバイスなどの使用しているデバイスの種類、帯域幅がすべて重要であり、モバイルアプリケーションのパフォーマンステストを検討する際にこれらすべての要素を無視するべきではありません。
パフォーマンス戦略を立てる前に、モバイルデバイスで実行しているアプリケーションの種類を理解する必要があります。
アプリケーションには次の3つのタイプがあります。
- ブラウザベースのアプリケーション
- ネイティブアプリケーション
- ハイブリッドアプリケーション
#1)ブラウザベースのアプリケーション:
これらのタイプのアプリケーションは、モバイルブラウザから直接アクセスでき、デバイスにダウンロードまたはインストールするために追加のソフトウェアを必要としません。
それらは軽量で、Android、iPhoneなどのすべてのタイプのデバイスで同じスタック上に構築されています。また、 レスポンシブウェブデザイン 移動により、アプリケーションをさまざまな画面サイズにレンダリングできるため、マルチブラウザベースのアプリケーションをさらに簡単に作成できます。
これらのタイプのアプリケーションには、インターネット接続がないとアクセスできない、デバイスにすべての機能が組み込まれていない、ユーザーには遅く見える傾向があるなどの欠点があります。
そう。このタイプのアプリケーションのパフォーマンステストでは、モバイルブラウザからのユーザー負荷を複製することが重要です。また、ターゲットデバイスでのWebページのレンダリングをテストすることも重要です。
#2)ネイティブアプリケーション:
これらのタイプのアプリケーションは、デバイスに直接インストールされているソフトウェアを使用して、特定のプラットフォーム上に構築されます。
ネイティブアプリケーションは、デバイス上にローカルに構築されているため、より高速で応答性が高くなります。 iPhone、Androidなど、各デバイスのコードは異なるため、パフォーマンステストでは、各プラットフォームでのテストを検討する必要があります。
#3)ハイブリッドアプリケーション:
ハイブリッドアプリケーションは、ブラウザアプリケーションとネイティブアプリケーションの両方を組み合わせたものです。これらは、高速に統合されたエクスペリエンスを提供するネイティブシェルで構成されています。
パフォーマンステストは、サーバー側でこのようなハイブリッドアプリケーションのユーザーによって生成された負荷を対象とし、エンドユーザーの観点からデバイス上のアプリケーションのパフォーマンスを測定します。
では、これらのモバイルアプリケーションをどのようにテストするのでしょうか。
このようなモバイルアプリケーションをテストするには、エミュレーターと実際のデバイスを備えた環境を構築する必要があります。モバイルエミュレータは、モバイルアプリケーションまたはモバイルプラットフォームを模倣するラップトップまたはデスクトップにインストールする必要があるソフトウェアです。
したがって、これらのエミュレーターを使用すると、負荷テスト用に大量の負荷を生成できます。
もう1つの方法は、実際のデバイスを使用することです。ここでは、デバイスを物理的に取得し、各デバイスでアプリケーションがどのように実行されているかを確認できます。実際のデバイスを使用する場合、主な目標である負荷を生成するオプションはありませんが、そのためには複数の実際のデバイスが必要です。
ただし、特定のデバイスでアプリケーションの動作をテストする場合は、実際のデバイスを使用できますが、負荷を生成するには、エミュレーターを使用する必要があります。
モバイルアプリケーションをテストする際に注意すべき次のポイントは、エンドユーザーのアクセス場所を知ることです。ユーザーが同じ都市、同じ国からアクセスしているのか、それとも世界中に広がっているのかなどを知ることは非常に重要です。これを考慮せずにテストや環境を計画すると、テストは間違ってしまいます。
スマートフォンやスマートデバイスなどのモバイルアプリケーションでのアプリケーションパフォーマンスは、通常、デバイスパフォーマンス、サーバー/ APIパフォーマンス、およびネットワークパフォーマンスの観点から測定されます。
各公演で以下を確認する必要があります。
デバイスのパフォーマンス:
- アプリケーションの起動時間
- アプリケーション使用中のバッテリー時間
- メモリ消費
- ハードウェアとソフトウェアのバリエーション
- 他のアプリケーションでの使用
- バックグラウンドで実行されているアプリケーション
サーバー/ APIのパフォーマンス:
YouTubeビデオをwavファイルに変換する方法
- サーバーとの間のデータ。
- 生成されたAPI呼び出し
- サーバーのダウンタイム
ネットワークパフォーマンス:
- パケットロス
- ネットワーク速度
したがって、モバイルアプリケーションのパフォーマンステストのアプローチを作成する際には、上記のすべての点を考慮し、プロジェクトの範囲と要件に一致させる必要があります。
モバイルアプリケーションのパフォーマンス戦略
パフォーマンステストのアプローチは、モバイルアプリケーションの種類ごとに異なります。各アプリケーションは異なるコンポーネントで開発され、処理メカニズムはそれぞれ異なるため、アプローチはアプリケーションごとに異なります。
ブラウザベースのモバイルアプリケーションは、通常のWebブラウザアプリケーションとは動作が異なります。この動作は、エンドユーザーが使用しているデータプランの帯域幅によるものであり、モバイルデバイスの構成にも依存します。
このタイプのブラウザベースのアプリケーションを開発するコストは、開発作業がモバイルデバイスで利用可能なブラウザとの互換性を確認することになるため、少なくなります。
したがって、モバイルブラウザベースのアプリケーションなどのパフォーマンステストでは、ブラウザのユーザー負荷を複製する必要があります。これは、エミュレーターまたはその他の追加コンポーネントを使用して行うことができます。モバイルブラウザでのユーザーの負荷とは別に、デバイスでのWebページのレンダリングもテストする必要があります。
ネイティブモバイルアプリケーションの開発コストはそれ以上です。アプリケーションはデバイスに直接インストールされるため、ユーザーエクスペリエンスが向上しますが、アプリケーションはプラットフォームに依存します。
したがって、これらのタイプのアプリケーションでパフォーマンスをテストする場合は、Android、iOS、Windowsなどのモバイルデバイスのすべてのプラットフォームと、スマートフォン、タブレットなどのすべてのタイプのデバイスでテストする必要があります。
ハイブリッドモバイルアプリケーションは、ブラウザベースのモバイルアプリケーションとネイティブモバイルアプリケーションの両方を組み合わせたものであるため、ここではサーバーのユーザー負荷をテストする必要があります。また、すべてのモバイルデバイスとプラットフォームで完全なパフォーマンステストを実行する必要があります。
モバイルデバイス上のアプリケーションの場合、エンドユーザーのパフォーマンスに影響を与える主な要因は2つあります。
- モバイルデバイスでのリクエスト
- モバイルデバイスでのページレンダリング
#1)モバイルデバイスでのリクエスト:
この場合、リクエストはサーバーに配信され、受信したリクエストに基づいてサーバーの応答が生成されます。サーバーで応答が生成されると、この応答は最初の要求を送信したモバイルデバイスに返送されます。
ここで調べる必要のあるパラメータは、サーバーの負荷、3G、4Gなどのさまざまなネットワークタイプ、各ネットワークの負荷、およびその他のコンポーネントです。
エミュレーターを使用してこれらをテストできます。つまり、スクリプトを生成し、エミュレーターを使用してサーバーのユーザー負荷を模倣できます。
#2)モバイルデバイスでのページレンダリング:
モバイルデバイスでのページレンダリングは、モバイルアプリケーションから送信したリクエストに対してサーバーから受信した応答に他なりません。
ここで調べる必要のあるパラメータは、デバイスのオペレーティングシステム、モバイルデバイスの構成設定などです。実際にモバイルデバイスにログインして監視することで、これらをテストできます。
ここで、上の図に示されている各ステップを詳しく見てみましょう。
a)リアルタイムユーザーシナリオの作成:
通常のWebブラウザアプリケーションと同様に、サーバーで予想されるシナリオまたは条件をリアルタイムで特定する必要があります。テストするシナリオはたくさんあります。
デスクトップとモバイルデバイスの両方で利用できるWebアプリケーションがあり、AndroidデバイスとiOSデバイスでもネイティブであるという条件を想定します。ここでは、アプリケーションのアクセスタイプに基づいてテストスクリプトを開発する必要があります。したがって、各デバイスで個別にテストする必要があります。
また、そのシナリオのワークロードパターンを考慮する必要があります。つまり、負荷が各デバイスにどのように分散されるかを理解する必要があります。 例えば、 500人のユーザーがWeb経由でアプリケーションにアクセスし、約100人がiOSデバイスでネイティブアプリケーションを使用し、別の200人がAndroidアプリケーションでネイティブデバイスからアプリケーションにアクセスします。
サーバー上の負荷の地理的な場所も考慮する必要があります。 例えば、 ユーザーの30%は米国から、50%はインドから、残りの20%は他の場所からアクセスしています。サーバーに非常に大きな影響を与えるため、異なるユーザーの場所を模倣する必要があります。
1つの場所からすべてを100%テストすると、間違った結果が得られます。したがって、別の場所を指定してサーバーの負荷をテストすることをお勧めします。クラウドソリューションは、さまざまな地理的位置を模倣するために使用できます。
b)リアルタイムネットワーク条件を作成します。
ここでは、さまざまなネットワーク条件と、3Gネットワーク、2Gネットワーク、最高速度、平均速度、低速のWi-Fiなどのネットワークの品質を作成する必要があります。ネットワーク条件を作成するには、ネットワークエミュレーションを実行する必要があります。
また、50%の帯域幅条件を与えることでパフォーマンスをテストする必要があります。これは、ネットワークエミュレーションを実行することで実現できます。風洞や春羅など、どんな道具でも使えます。
また、バンガロールの3Gネットワークなどのさまざまな地域に関してネットワークをテストします。ハイデラバードなどの4G。ここでも、適切なツールを使用してネットワークエミュレーションを行う必要があります。
c)リアルタイムデバイス条件の作成:
これは、シンクライアントアプリケーションかシッククライアントアプリケーションか、モバイルデバイスのオペレーティングシステム、iPhone、Nokiaなどのデバイスタイプ、その他のアプリケーションなど、モバイルデバイス上のアプリケーションのタイプに他なりません。この特定のアプリケーションなどの使用中に並行して実行されるものも、シナリオの一部としてテストする必要があります。
d)各コンポーネントのパフォーマンスをテストします。
上記のすべてのシナリオを作成した後、すべてのソフトウェアとハードウェアを含むアプリケーションのパフォーマンステストを行う必要があります。次に、負荷テスト中に必要なすべてのメトリックを収集します。
収集する必要のあるサーバー側のメトリックには、CPU使用率、CPU負荷、処理時間、使用可能な合計バイト数、送信されたパケット、受信されたパケットなどがあります。
収集する必要のあるネットワークメトリックには、ネットワーク経由で送信されたパケットとバイト、ネットワーク経由で受信されたパケットとバイト、ドロップされたパケット、合計平均遅延などがあります。
収集されるデバイスメトリックは、CPU、メモリ使用率、応答時間などであり、すべてのトランザクション応答時間とスループットも測定します。
モバイルアプリケーションパフォーマンステスト環境
モバイルアプリケーションのパフォーマンステスト環境をセットアップする前に、テストするモバイルアプリケーション、テストするすべてのオペレーティングシステムまたはデバイス、および地理的な場所を理解する必要があります。
したがって、最初に、エミュレータと実際のデバイスで構成される環境を作成する必要があります。 では、エミュレーターとは何ですか? エミュレーターは、ラップトップまたはデスクトップマシンにインストールできるソフトウェアであり、これらはモバイルデバイスとして機能します。これらのエミュレーターを使用して巨大な負荷を生成できるため、モバイルアプリケーションの負荷テストに使用するのが最適です。
一方、実デバイスは物理的なモバイルデバイスです。したがって、各デバイスと各ネットワークでのアプリケーションの動作を確認する必要があります。ただし、複数のデバイスが同じネットワークに接続され、同じアプリケーションにアクセスしている場合、帯域幅やパケット損失などをテストすることはできません。
次に考慮すべきことは、アプリケーションデバイスの地理的な場所です。これは、考慮すべき必須で非常に重要な側面です。そうしないと、テスト結果が実際のシナリオで発生するものとは異なります。
したがって、上記のすべてを分析したら、それぞれの負荷テストツールを選択してパフォーマンステストを実行します。
モバイルアプリケーションのパフォーマンステストの課題
モバイルアプリケーションのパフォーマンステスト中に直面する課題は次のとおりです。
- さまざまなモバイルデバイスでアプリケーションをテストする必要がある場合は、IOS、Android、Windowsなどのすべてのデバイスを整理する必要があります。
- ネットワークシミュレーションは、私たちが直面するもう1つの課題です。つまり、3G、2G、4G、wifiネットワークなどのネットワークをシミュレートする必要があります。
- テスト実行を処理するためにモバイルデバイスで使用可能なメモリ。
- モバイルデバイスのバッテリー寿命。
モバイルアプリケーションのパフォーマンス問題のトラブルシューティング
テスト実行が完了したら、テスト実行中に特定されたパフォーマンスのボトルネックを収集します。問題が統合されたら、問題の根本原因を特定して修正する必要があります。
モバイルアプリケーションのパフォーマンスの問題をいくつか見てみましょう。
- モバイルアプリケーションからの応答の遅延: この遅延は通常、メモリまたはキャッシュが原因で発生します。このような場合は、キャッシュをクリアしてテストを再実行することをお勧めします。
- アプリケーションが再起動、ハング、またはフリーズする場合があります。 このような場合は、更新が必要かどうかをソフトウェアで確認し、アプリケーションコードで最適化を確認してください。キャッシュの処理については、調査が必要な領域がいくつかあります。
モバイルアプリケーションパフォーマンステストツール
ツールは、デバイスとプラットフォームのタイプによって異なる場合があります。
最も一般的に使用されるツールのいくつかを以下に示します。
Androidデバイスの場合:
ロボット: このツールを使用すると、テストを実行するためのいくつかの手順を記録して再生できます。 クリック Robotiumチュートリアルはこちら 。
モンキーランナー : このツールを使用して、デバイスをデスクトップに接続することにより、デバイスでテストを実行できます。ツールのインターフェースを使用して、スマートフォンにアクセスできます。
iOSデバイスの場合:
Automator: このツールを使用して、ワークフローをドラッグアンドドロップして自動化できます。
結論
この有益なチュートリアルを通じて、モバイルアプリケーションと、モバイルアプリケーションで負荷テストを完璧な方法で実行する方法について詳しく学んだことでしょう。
今後のチュートリアルでは、手動パフォーマンステストを簡単に実行する方法について簡単に説明します。
=> 完全なパフォーマンステストチュートリアルシリーズについては、こちらをご覧ください