ロードテストは、アプリケーションがユーザーの要求に耐えられることを保証する重要な作業ですが、事業にとって重要なアプリケーションを運用する際には特に重要です。AndroidアプリケーションやAPIにおける負荷増加のパフォーマンスへの影響を測定することで、実際のユーザー環境下で安定して動作することを確認できます。ロードテストツールを使用すると、DevOpsチームは特定のテストを簡単に設定でき、開発プロセスの早い段階でボトルネックを特定し、リリース時の問題を回避できます。数人から数千人まであらゆる種類のユーザーロードをテストできる高いスケーラビリティを持つソリューションが必要です。また、実際のAndroidデバイスを使ってクライアントの視点からアプリケーションの品質を測定することが重要で、クライアントが実際にどのような体験をしているかを正確に把握できます。
セットアップからテスト実行までわずか数分。
Androidアプリケーションロードテストとは?
ウェブアプリケーションとモバイルアプリケーションのロードテストの違いは何でしょうか?目的は同じで、予想されるトラフィックの下でアプリケーションが信頼性を持って動作することを確保することですが、モバイル環境ではネットワークの変動やデバイスの性能など追加の考慮事項があります。いずれにせよ理由は同じかもしれませんが、Androidアプリケーションの実行に関してはいくつかの興味深い点があり、重要なミスを犯しやすい場合があります。本記事では、Androidアプリケーションのロードテストのベストプラクティスをご紹介し、ロードテストを実行する手順を解説します。
ロードテストが必要な理由
ロードテストはシステムパフォーマンスと信頼性に自信をもたらします。また、負荷が高い状況下でのボトルネックを特定し、異なるユーザー数でのパフォーマンス低下を防ぐための保護になります。たとえば、プロモーションを実施する組織は、トラフィックの急増にアプリケーションが耐えられ、パフォーマンスの低下が起こらないことを確認したいでしょう。ロードテストはシステムに負荷(ユーザー)をかけ、その応答を記録するプロセスです。ロードテストツールの戦略と種類には以下が含まれます:
手動によるロードテスト
ロードテストを実行する方法の一つですが、再現可能な結果は出ず、定量的な負荷レベルは示されず、正規の調整もありません。
社内開発のロードテストツール
ロードテストの重要性を理解し、必要なインフラとリソースがある組織は自社でテストツールを構築できます。
オープンソースのロードテストツール
多くのオープンソースのテストツールがウェブ上で無料利用可能ですが、無料であるため、問題や質問が発生した場合の専任サポートチームがいない場合があります。
ロードテストのアプローチ
ロードテストのアプローチには通常以下のステップが含まれます:
- パフォーマンス受け入れ基準の評価
- 重要なシナリオの特定
- ワークロードモデルの設計
- 目標負荷レベルの特定
- テストの設計
- テストの実行
- 結果の分析
モバイルアプリケーションの場合は、API依存、ネットワーク条件、デバイス固有の挙動も考慮に入れるべきです。
ロードテストの目的
ロードテストの目的は企業やテストによって異なりますが、一般的には以下の主要指標を測定します:
- 応答時間
- スループット
- リソース使用率
- 最大ユーザーロード
- ビジネス関連の指標
計画段階後のロードテスト
QAおよびDevOpsチームは負荷量や負荷分散方法を設定し、テストスクリプトを準備してテストを実施します。その後、テストツールは一定期間APIにリクエストを送信し、テスト中に記録します。ロードテスト中に、ビジネスが計画段階で収集した非機能要件とテスト結果を比較できます。さらに、関係性(ユーザーのどの応答が動的で、どの応答が静的か)を識別する手法も適用でき、静的コンテンツ(例:ホームページ)のテストでは省略可能です。
大規模トラフィックイベントの準備
例えばブラックフライデーのような大規模なトラフィックイベントに備える際には、通常より多くの人が普段より長く滞在すると予想され、その点をテスト計画に反映させる必要があります。この場合、応答時間、スループット、レイテンシー、接続時間のKPIだけでなく、これらのKPIの相関関係も調査してシステム容量の向上方法を検討します。改善や変更があれば、再度テストを行いたいと考えます。
ロードテスト後の考慮事項
ロードテストを実施してデータと指標を収集した後、さらなる改善のためのステップを検討する場合があります。たとえば、アプリケーションがユーザー数やデータ量の通常の増加を処理できない場合、スケーリング戦略を適用します。システム、プロセス、データベースが増加した需要に対応できない場合は、インフラの改善、容量の段階的増加、ロードバランサーの利用を検討できます。また、要件を満たすために第三者のサービスを利用することもあります。特定のテストツールは、エンジニアチームがシステムの健全性を確認し、高負荷時の問題発生を特定することを可能にします。有用なロードテストツールには以下の機能が必要です:
- ソフトウェア内でのパフォーマンステストのセットアップが可能
- 高レベルのパフォーマンステストに対応し、構築とテストのサイクルを短縮
- エンジニアとQAの協力を可能にする
ロードテストの目的とは?
安定かつ高速なパフォーマンス
ページやアプリケーションの読み込みが遅いと、顧客を失い、最終的に収益に影響します。多くの人は迅速なページ読み込みを好むためです。Googleの調査によると、ユーザーの50%以上が3秒以上かかるアプリやページを離脱することが分かっています。アプリケーションのロードテストを早期に実施すれば、ユーザーやビジネスニーズを満たし、ボトルネックの発生箇所を特定して本番環境への展開前に問題を修正できます。
安定性
アプリケーションがユーザーの要求に応答しなくなったり、バグが発生すると、ユーザーはすぐにそのアプリの使用をやめます。アプリケーションのパフォーマンスは主にAPIの性能に依存しているため、定期的なロードテストの実施が推奨されます。
ページ読み込み時間の短縮
ユーザー体験において速度は重要です。遅いアプリはユーザーを苛立たせ、離脱を促します。収益に直結するページであれば、ロードテストは問題特定と修正の優先順位付けに役立ち、マイナスの影響を最小限に抑えられます。
ボトルネックの発見
開発段階のアプリやサイトはCPU、メモリ、ネットワーク使用などのボトルネックを明らかにし、エンジニアが本番導入前に対処できます。
地理的ロケーションからのテスト
主要顧客の所在地を知っていれば、その地域からテストを実施して特定の問題を発見できます。これにより、どこからアクセスしても一貫したユーザー体験を提供できます。
SLA(サービスレベル合意)の設定
スコープ定義は、あらかじめ定義された要件内で必要なハードウェアやソフトウェアリソースを明確にします。ロードテストにより高負荷時の性能予測や今後のインフラ投資の必要性を把握できます。
KPI(主要業績評価指標)の測定
ロードテスト中に反応時間の詳細データを集め、APIの要件を満たしているか確認します。例えばAPIの応答時間の要件が2秒以内である場合、その指標が満たされているかを測定します。最小、平均、最大応答時間、エラー数、アプリケーションが1秒あたりに処理するリクエスト数などを含み、これによりアプリケーションのバックエンドが通常の負荷を処理できるかを判断できます。
ロードテストのシナリオ
ロードテストには多くの計画が必要です。プロジェクトの初期段階でビジネス担当者は非機能要件を収集し、パフォーマンス指標と対比します。これに基づいてテストスクリプトや複数のテストシナリオを作成します。計画により適切な戦略と要素を専門家が決定し、2つの戦略で実行可能です。
耐久テスト
一つ目の方法は耐久テストで、一定で中程度の負荷を長時間にわたりシステムが耐えられるかを検証します。
ボリュームテスト
もう一つはボリュームテスト(フラッドテストとも呼ばれ)、システムに短時間で大量の負荷をかけて試験します。
耐久テストとボリュームテストの両方はパフォーマンスのボトルネック、バグ、リソース制約を明らかにします。例えばバックエンドは高速CPUを持つがメモリ制約があるため、パフォーマンスが低下する場合があります。ロードテストにより、同時に稼働可能なアプリケーションやプロセスの数を把握できます。期待される使用ケースやAPIリクエストの変動も考慮されます。
一般的に、大規模企業アプリケーションには安定したAPI性能が必要であるため耐久テストを行い、大量のデータを処理する場合はボリュームテストを使用します。買い物やオンラインチケット予約アプリケーションにはボリュームテストが推奨されます。
Androidアプリケーションのロードテストツール
Androidアプリのテストにはオープンソースおよび商用の多くのツールやソリューションが使えます。JMeter、MonkeyRunner、Gatlingなどのツールがあり、LoadViewはこれらと比較してロードテストに最適です。本記事後半でAndroidアプリのロードテストに使える代替ツールのメリット・デメリットも紹介します。
LoadView
LoadViewはウェブベースのロードテストソリューションで、ウェブページ、ウェブアプリケーション、ウェブサービス/API、ストリーミングメディアを負荷テストできます。実際のブラウザを使い、数百から数千の同時接続を迅速に立ち上げることが可能です。LoadViewユーザーは多様なロードカーブや地理的ロケーションなど、多数の設定から選んでロードテストを作成できます。すべてのアプリはモバイルAPIエンジンを使うため、複雑なコーディングなしで簡単に負荷テストを設定でき、必要なだけ多くの仮想ユーザーを起動可能なソリューションを探したいところです。LoadViewはSOAPや認証・マルチステップ実行が必要なWeb APIに加え、REST API(JSONとXML)をサポートしています。
LoadViewによるAPIロードテスト
パフォーマンス指標
各テストセッションのデータを確認し、APIが期待される結果を常に返すことを保証します。
グローバルテスト
実際のユーザーに最も近い地域を選び、地域ごとのパフォーマンスを比較します。
ボトルネックの発見
物理的またはソフトウェアのボトルネックがAPIの効率的な処理を妨げているかどうかを判断します。
詳細なデータ分析
エラーコードを評価し、ウォーターフォールチャートやパフォーマンスレポートなど追加のレポートを用いてAPIパフォーマンスを計測します。
LoadView: EveryStep Web Recorder
LoadViewはEveryStep Web Recorderを利用しています。このスクリプト作成ツールはウェブトランザクションの各ステップを記録し、実際のブラウザでそのスクリプトを再生します。録画はChrome、Internet Explorer、Android、iOS、iPhone、iPad、Google、Samsungなど40以上のデスクトップ/モバイルブラウザおよびデバイスに対応しています。
EveryStep Web RecorderはAJAX、Java、HTML5、Flash、PHP、Rubyなどの動的アプリケーション作成をサポートするフレームワークと言語にも対応しています。Web Recorderを使えば、ユーザーのようにアプリケーションを操作しながらトランザクションを記録でき、録画後のスクリプト編集も簡単です。ユーザーは遅延設定、ネットワークフィルター、パラメータ設定なども利用でき、これは実際のユーザー動作を再現するのに重要です。例えば、異なるユーザーのログインや商品検索など動的URLテストもパラメータで設定可能です。
ロードテストツール:LoadView
モバイルアプリケーションのロードテスト
どの企業も内部または顧客向けアプリケーションのパフォーマンスと信頼性を軽視できません。応答時間が要求を下回るとユーザーはアプリを使わなくなり、他のより信頼性の高いシステムに移ってしまいます。モバイルアプリのパフォーマンスは必須条件です。アプリストアには数十億のアプリがあり、ユーザーは簡単により高速で効率的なアプリに切り替えられます。潜在的なユーザーは、アプリの使い勝手が悪いと感じると離れてしまう可能性が高いです。企業は開発・QA・運用段階でのパフォーマンス軽視がビジネスリスクになることを理解する必要があります。ロードテストは面倒で時間のかかる作業であってはなりません。特にLoadViewのような先進的なソリューションを使えばなおさらです。以下ではLoadViewでモバイルアプリのロードテストを計画し実行する流れを説明します。
ロードテスト準備
ロードテストの最初のステップの一つは、非機能要件を監査してテスト設計と計画の支援を行うことです。望ましい応答時間、同時にアプリを使用するユーザー数、ユーザーが実行するステップ数に注目します。これらが示されていない場合は、ビジネス関係者やモデラーに確認してください。詳細が揃ったら、アプリを使用する同時モバイルユーザー数を計算します。性能エンジニアは以下のLittleの法則を利用します:
仮想ユーザー数 = 時間あたりのユースケース数 × セッション時間(秒) / 3600
実際と将来のユーザーシナリオやステップを模擬することを確実にします。利用が増加すると応答時間の上限も確かめることが重要です。最後の計画ステップとして、テスト仕様書を作成し、環境説明、予定テスト、負荷パターン、パフォーマンス要件や責任をまとめます。
実装とテスト設定
スクリプトと再生レコーダー、EveryStep Web Recorderを使ってモバイルアプリ上での手動クリックをキャプチャします。iPhone、Android、Nokiaなど多数のデバイス種別が選べ、テスト時の画面向きも選べます。録画開始後、選択したデバイス種別を使ってアプリをユーザーのように操作し、動作をスクリプト化します。ステップの録画が終わったら、記録した操作を保存して、最初の実行テストを行いエラーがないか確認します。
時には広範囲のデータを使ったアプリ動作を模擬する必要があります。EveryStep Web Recorderはそのパラメータ化を非常に簡単にします。スクリプトのステップを選び遅延やコンテキストパラメータ、ネットワーク制限などを変更できます。変更後は情報を含むファイルをアップロードし、LoadViewプラットフォームでテスト実施に使えます。
スクリプト作成後、LoadViewにアップロードすると、テスト設定を案内します。実行計画を示し、同時ユーザー数やテスト時間を指定します。負荷を注入する地域も選べるため、実際のユーザーネットワークから見た応答時間をより正確に測定できます。
モバイルロードテストの実行とレポート
LoadViewはテスト実行を簡単にします。テストスクリプトを世界中のロード注入マシンに配信し、テスト計画に従ってモバイルユーザー動作を再現、テスト結果を収集しリアルタイムの応答時間を提供します。テスト完了後は詳細レポートがメールで届き、発生した問題箇所のレビューが可能で、数クリックで開発チームと共有できます。
LoadViewを使ったAndroidアプリケーションのロードテスト方法
LoadViewは完全にウェブベースで直感的です。他のツールのような日単位の準備やコーディングの煩わしさはありません。アカウントを開設して、すぐにロードテストを開始できます。LoadViewプラットフォームは複雑なロードテストの設定、実装、実行、分析を大幅に簡素化します。DevOpsの専門家であっても、性能テスト初心者でも、スクリプト作成からテスト開始まで数分で完了します。LoadViewは以下の4ステージでロードテスト全体を案内します。
負荷シミュレーションスクリプトまたはデバイスの作成
アプリに対して多数のロードテストスクリプトを実行する必要はありません。通常、利用ケースの20%が全トランザクション負荷の80%を生み出します。重要なユーザーの接続箇所を決めたら、適切なユーザーシミュレーション手法を選択します。LoadViewは柔軟でカスタマイズ可能で、ユーザー行動調整、3種類の負荷曲線タイプ、負荷発生元の地理的位置選択などが可能です。最終的にはロードテストの目的とアプリの技術に基づき適したシミュレーション方式を選びます。オーバーヘッドが低いため、1台のロード注入機器で多数の仮想ユーザーを効率的に動かせます。

実ブラウザベースのテストはエンドツーエンドの応答時間をテストするのに適しています。先述の通り、LoadViewはEveryStep Web Recorderを使い、手動でスクリプトを書くことなく行動を簡単に記録できます。ユーザーがアプリケーション内を簡単に移動し、操作を自動で記録するため、多くのユーザーに支持されています。記録後はカスタム動作や検証ステップを追加し、録画したスクリプトを再生できます。EveryStep Web RecorderはAndroidアプリのロードテストに不可欠で、他の単純作業の自動実行にも再利用可能です。

ロードテストのキャリブレーション
ロード注入機器によってエンドツーエンドの応答時間は異なります。そのためLoadViewは検証ステップを提供し、テストスクリプトの単一ユーザーテストを実行し、最適なユーザー数を算出します。これにより負荷注入機器のボトルネックによるテスト結果の矛盾を防ぎます。
ロードテストデバイス設定
APIのURLを指定し、テストAPIの名前を設定します。APIコールのHTTPメソッド(GETやPOSTなど)を設定してください。Create Deviceボタンをクリックします。

ロードテストの実行
最後に、設計したロードテストを実行開始します。LoadViewの利点の一つは、テスト実行前にコストを確認できることです。メールアドレスを認証すれば、LoadViewはテストを実行キューに投入します。

リアルタイムテストパフォーマンスの確認
テスト中、LoadViewはオンラインダッシュボードで応答時間とスループット指標を表示します。テスト完了後は、応答時間、仮想ユーザー数、セッション数、セッションエラーなどの要約を含む詳細レポートをメールで受け取ります。負荷テストで閾値を超えるとエラー率は高くなり、チューニングや運用チームはその原因を調査します。LoadViewはサイトの応答時間の詳細をキャプチャするため、同様のテストを繰り返す必要はありません。ウォーターフォールチャートを用いて機能レベルの分解を把握したり、ロード条件下のサイトの動作を映像で視覚的に検証することもできます。
セッションレポート
テストを実行し詳細なレポートを得ました。レポートは直感的でブラウザを使って結果を確認できます。また結果ページのURLを共有することで開発チームとの情報共有が行いやすくなっています。さらに、過去のテスト結果も保存され、環境変更後のパフォーマンス評価に活用できます。
LoadViewのユースケースは?
LoadViewはパフォーマンス目標を下回るAndroidアプリの原因把握に役立つ代表的なシナリオがいくつかあります。
スケーラビリティの問題
新しいアプリが遅くなって原因不明の場合、LoadViewはどの程度のユーザー数まで対応可能かを明らかにします。
キャパシティプランニング
新規サイトに必要なハードウェアを検討する場合、自力で試算可能ですが失敗のリスクが高いです。過剰なインフラ追加は無駄になりますし、不足すると大幅なパフォーマンス低下を招きます。
非機能要件の見直し
チームがパフォーマンス要件を文書化済みですが、単一ユーザー条件では十分な速度でも、実際の負荷環境で新サイトがどう動作するかは未知数です。
同時ユーザー
実際のテストチームは、新機能の一部がユーザー入力に反応しないことを発見しました。この問題は断続的かつ頻繁に発生します。LoadViewは多数ユーザーによる同時使用時の問題を特定できます。
サードパーティコンテンツ
開発者は動的なサードパーティコンテンツ満載の新しいサイトを作りましたが、これらの外部アプリが通常やピーク負荷時にどう動作するか未知数です。
Androidアプリのロードテスト代替ツール
JMeter
JMeterはウェブサイト、サーバー、アプリのパフォーマンステストに使えるオープンソースのJavaアプリケーションです。ただしLoadViewとは異なりブラウザではなく、ウェブアプリ内でのJavaScript実行はできません。JMeterは高度な技術知識が必要であり、このツールの習得曲線が高いです。ロードテストでモバイルアプリの操作を記録する際は独自のプロキシを使うため、ネット接続の追加設定が必要です。大規模テストは複雑な環境構築が必須で実施が困難です。多くのロードテストツールは特にオープンソース系で機能が限定的で、現代のアプリには不十分です。
MonkeyRunner
MonkeyRunnerはAndroidデバイスを遠隔制御したり、Androidコードベース外からエミュレートするスクリプト作成用APIを提供するツールです。主に機能・回帰テストに使用されます。MonkeyRunner、MonkeyDevice、MonkeyImageのAPIクラスセットを提供し、開発者はJythonプログラムを作成してテストを実行し、エラーを報告できます。デメリットは低レベルのAPIベースでユーザーインターフェースがなく、スクリプトがデバイスごとに書き直しが必要で再利用できません。
Gatling
GatlingはScalaで書かれたオープンソースのパフォーマンステストツールで、EveryStep Web Recorderのようなスクリプトツールではなくコードによるテスト定義が可能です。開発者はコードでテストを扱い、CI/CD環境の自動化が容易になります。ただしコードベースなので技術的な知識が必要です。またGatlingはプロトコルベースのテストのみで、実際のユーザー行動の多くのパフォーマンスを見逃す可能性があります。大規模な地理的分散テストを行うにはエンタープライズ版の購入が必要です。
なぜLoadViewを選ぶのか?
デジタル化が進む現代では速度が重要です。大小の組織がユーザーの望みを確実に満たすために多大な資源を投じています。LoadViewプラットフォームはスムーズかつ効率的なパフォーマンステストを目的としています。お客様がLoadViewを選択した主な理由は以下の通りです。
正確なユーザーパフォーマンスデータ
世界中のユーザーが体験する応答時間を測定できます。
使いやすさ
複雑なセットアップやオンプレミスのロードテストツールで起きるような、実環境を模擬するのに十分なテスト生成ができない問題はありません。LoadViewプラットフォームにログインし、テスト設定を決めて、即座にロードテストを実行できます。
経済的かつ効率的
LoadViewは最も重要なテストに注力でき、テスト対象アプリへの負荷分だけの課金です。
スクリプトの再利用性
稼働監視にロードテストスクリプトを再利用できます。これによりウェブアプリへの投資から最大限のリターンを得られます。
24時間365日のサポート
当社の専門家が常に質問にお答えします。
まとめ:Androidアプリケーションのロードテスト
LoadViewはブラウザベースのトップクラスのロードテストを提供します。複数のユーザーシミュレーションタイプの実行と、EveryStep Web Recorderによる簡単なスクリプト作成・再生が単一プラットフォームで実現できるため、優れたテストツールです。長期契約不要で、ウェブサイト、ウェブアプリ、ウェブサービス、APIのロードおよびストレステストが可能で、ユーザーの期待に応え安定したユーザー体験の保持を保証します。使いやすく環境に合わせて設定可能で、Androidアプリのテストに理想的です。APIロードテストを検討中の方はぜひお問い合わせください。
LoadView無料トライアルに登録して無料のロードテストを始めるか、予定されたライブデモでパフォーマンスエンジニアと話してください。プラットフォームの案内や質問への回答をいたします!