ある晴れた日曜日の夕方、お気に入りのテレビシリーズの最新シーズンが戻ってきて、私たちは待ちに待ったシリーズを最初に消費するためにすぐに飛びつき、ネタバレが来る前に楽しもうと準備をします。消費者にとって、携帯電話を取り出してモバイルアプリケーションまたはWebアプリケーションでコンテンツを楽しむことは非常に簡単になりました。ストリーミングメディアはほんの数回のクリックやタップでアクセス可能です。アプリを開いて再生を押すだけ。簡単で速くて即座に楽しめますよね?
オンデマンドビデオやライブストリーミング消費は世界中で普及しています。みんながDVDやケーブルプロバイダから離れ、オンデマンドのビデオストリーミングサブスクリプションに置き換えています。この需要の急増により、一貫した高性能と品質が重要な関心事となります。これらのオンデマンドプラットフォームのどれも、消費者に退屈な体験をさせたくはありません。しかし、ユーザーがストリーミングメディアをシームレスに少ないバッファリングで最高品質で利用できるように、異なる地理的場所にいる大量のユーザーと長時間のストリーミングコンテンツでこれらのメディアコンテンツのロードテストを行わなければなりません。メディアや品質のわずかな遅延でも顧客体験を損ね、ユーザーベースを失うことにもなります。
ストリーミングメディアと主要なロードテスト指標
まずは、ストリーミングメディアのパフォーマンスに影響を与える重要な指標について話しましょう。
ビットレート
ビットレートは通常、ユーザーに転送される平均バイト数で計算されます。ビットレートが高いということは、ユーザーがオーディオとビジュアルグラフィックスの両方で高解像度のコンテンツを消費できることを意味します。時にはコンテンツの取得元(ストリーミングメディアサーバー)とユーザーが異なる地理的位置にあることでレイテンシが発生し、全体のビットレートに影響を与えることがあります。
プレイ率
プレイ率は実際に動画を再生したユーザーの数または割合を計算するために使用されます。ビットレートが低い場合、プレイ率も低くなる傾向があります。したがって、この2つの指標は密接に関連しています。最初の30秒間にコンテンツがロードされない場合、ユーザーはストリーミングサービスを閉じる傾向があり、これがプレイ率の大幅な低下につながります。
バッファ時間
バッファ時間はコンテンツの読み込みにかかる時間で、ネットワークの遅延とユーザーのデータダウンロード速度に依存します。バッファ時間の計算はユーザーがコンテンツの読み込みを待つ時間の量を示します。バッファ時間の増加は全体のユーザー体験を損ね、閾値以下になると視聴をやめることもあります。動画再生中にもバッファリングが発生し、バッファリングが完了してからメディアが再生開始されます。このバッファ済みコンテンツとメディア再生の間の時間をラグ時間と言います。ラグ時間はメディアがストリーミングされている際に重要な役割を果たし、ラグ時間が増えるとストリーミングの連続性に影響を与えます。
再生時間
再生時間はユーザーがコンテンツを消費した時間で、ユーザーがプラットフォームでどれだけ時間を費やしているか把握するのに役立ち、またストリーミング動画に対する全体的なユーザーの体験と関心を示します。再生時間が最近減少している場合は、プラットフォーム上のメディアコンテンツを改善する時期です。
ラグ比率
ラグ比率はユーザーが実際に視聴したコンテンツに対して費やしたバッファリング時間の割合です。これによりストリーミングメディアの全体品質を評価できます。ゼロに近いほど良いですが、完全にゼロにはなりません。常に初期の遅延はありますが、長時間のストリーミングの一貫性と連続性が維持される必要があり、これによって長い再生時間が得られます。
上記の指標について説明しましたが、これらはメディアアプリケーションが負荷下でどのように動作しているかを監視するのに役立ち、全体的なパフォーマンス改善のための指標としても使われます。
なぜ異なる地理的場所からテストする必要があるのか?
異なる地理的な場所でテストする理由を答える前に、リクエストがどのように処理されるかを一般的な言葉で説明しましょう。ユーザーが再生ボタンをクリックすると、リクエストはインターネットサービスプロバイダ(ISP)に送信されます。ISPはそれをウェブサイトを処理する専用サーバーに転送し、サーバーは応答を返し、それがユーザーのコンピュータに伝達されて結果となります。何百万時間ものビデオコンテンツがインターネットを介してサーバーとすべてのユーザー間に送られる大手ストリーミングプロバイダの場合、パフォーマンスを維持するためにはるかに大きなサーバーネットワークが必要です。
しかし、もしユーザーがロサンゼルスにいて、アジアのサーバーにあるコンテンツをストリーミングしようとしているとしたら、これによりレイテンシが増加し、全体のメディアパフォーマンスに影響する可能性があります。この問題を解決するために、ストリームプロバイダはコンテンツ配信ネットワーク(CDN)を使用します。CDNは元のウェブサイトとその中のメディアコンテンツを世界中に分散された何百ものサーバーにコピーします。例えば、ブダペストからログインするユーザーは、米国のメインサーバーに接続する代わりに、ブダペストに最も近いCDNサーバーからその正確なコピーをロードします。これによりリクエストと応答の間の時間、すなわちレイテンシが大幅に削減され、すべてが非常に高速に読み込まれます。
ストリームは何人のユーザーを処理できるのか?
実際のユーザーがプラットフォームに来る前に、ストリーミングメディアのロードテストを行い、異なる場所に分散したユーザーベースのどの規模までがビットレートやプレイ率が最高で、バッファリングやラグ比率が最低の状態で管理可能かを判断したいと考えています。ユーザー数の測定には、まずx人のユーザーがストリーミングメディアを閲覧し始めるスクリプトが必要で、その後、接続タイムアウトや平均ビットレートの低下が始まるまでユーザー数を徐々に増やしていきます。同時接続ユーザー数を増やし、接続タイムアウトを追跡することで、現在のインフラが処理可能な最大ユーザー数を把握できます。
ストリーミングメディア上のリアルタイムに近いユーザー行動を模倣するスクリプトの計画と作成は、正確な結果を得るために非常に重要です。スクリプトが壊れないように負荷を生成できる専用ツールも必要です。ここではLoadViewを利用して、100以上の異なるメディアストリーミングコーデックをテストできる方法を理解します。
次に、これらのCDNの実行速度をロードテストし、多数の同時ユーザーでストリーミングメディアを実行した際に遅延が発生するかどうかを見ます。これにより、異なるユーザーロケーションからのユーザーベースが増加しても、コンテンツがあるサーバーの場所に対して、パフォーマンス指標を検証し、ほぼリアルタイムのシナリオを得ることができます。
LoadViewと機能
LoadViewはSaaS(Software as a Service)アプリケーションで、ウェブページ、ストリーミングメディア、バックエンドAPIサーバー、その他複雑なウェブアプリケーションのクラウドベースの負荷テストを実行するためのロードテストツールとサポートを提供します。
ストリーミングメディアのパフォーマンス実行と管理を支援するために、LoadViewはインフラとテストスクリプトを提供し、どれだけの同時ストリームをインフラが処理できるかをロードテストします。100以上のメディアストリーム監視コーデックおよびメディアストリームファイル形式をサポートしており、テストするメディアに基づいたオーディオやビデオのコーデックの範囲を提供します。
LoadViewはストリーミングメディアテストの複数のオプションを有しており、一つはストリーミングメディアURIを直接指定する専用テストで、もう一つはEveryStep Web Recorderを利用してブラウザのユーザーセッション全体をメディアと共に記録し、その記録を用いてロードテストをより大規模に再実行する方法です。
LoadViewの特徴
接続時間
現在の同時ユーザー数のもとでインフラがどのように振る舞うかを示す接続タイムアウトカウントのリアルタイムレポートを提供します。
フレームレート
ビデオの画像表示速度などの詳細を提供し、ちらつきや視聴エラーが発生していないか確認します。
バッファリング時間
バウンス率や視聴時間とバッファリングの閾値、アラートの値を理解するのに役立ちます。
平均バイト毎秒
LoadViewはストリーミングメディアやビデオの出力の画質を監視し、ユーザーが消費しているビットレートなどの指標を共有します。
LoadViewを使ったストリーミングメディアのロードテスト
前述のように、LoadViewはストリーミングメディアのロードテストに2つのオプションを提供します。一つは静的なメディアURLを渡してロードテストを実行する専用のストリーミングメディアURIを用いる方法、もう一つはスクリプトレコーダーを用いてメディアとのリアルタイムブラウザ操作をキャプチャし、すべてのユーザー操作を登録してスクリプトを作成し、そのスクリプトで大規模にロードテストを実行する方法です。
ここでは、2つの異なる方法のセットアップ手順と、LoadViewを用いたストリーミングメディアのロードテストの実行について詳細に説明します。LoadViewは主要なメディアストリームのファイル形式すべてに対応しています。
LoadViewストリーミングメディア構成
ストリーミングメディアのロードテストスクリプトを作成するには、重負荷下で検証したいターゲットのストリーミングメディアが必要です。ストリーミングメディアのURLとプロトコルのパス(メディアリソースURI)が必要で、これらをテストシナリオに指定します。ストリーミングメディアのロードテスト実行時の全体的なステップは以下の通りです:
ストリーミングメディア構成:ステップ1
ユーザーがストリーミングメディアURLとメディアタイプを入力します。
ストリーミングメディア構成:ステップ2
テスト対象のメディアに基づいて、ロードジェネレータはストリーミングメディアURLからコンテンツを取得し消費しようと試みます。
ストリーミングメディア構成:ステップ3
ストリームは品質、コーデック、ビデオ、オーディオなど複数の属性を持ちます。これらはサーバーから取得され、テスト実行中に各属性の指標が計算されます。
ストリーミングメディア構成:ステップ4
テストシナリオには接続タイムアウトの設定があり、ストリーミングメディアサーバーが指定時間内にコンテンツを送信できなければ、エラーが生成されテスト結果に表示されます。
LoadViewメディアストリーミングパフォーマンステスト設定
ストリーミングメディアロードテストを実行するための手順を見てみましょう。
新規テストの作成
LoadViewテストのホームページを開きます。新しいロードテストの作成を始めるにはNew Testをクリックします。

ロードテストタイプの選択
LoadViewでサポートされているすべてのロードテストタイプ(Web Applications、Web Pages、Streaming Media、HTTP/Sなど)が表示されます。今回はStreaming Mediaを選択してロードテストを実行します。

ストリーミングメディアの設定タスク
Streaming mediaを選択した後、メディアタイプやストリーミングメディアURLなどの情報を入力します。さらにテスト対象アプリのタイムアウト時間も設定します。何らかの理由でアプリが応答しなくなった場合、LoadViewは設定した間隔待機し、その後適切なエラー情報とともにテストを終了します。設定が完了したらCreate Deviceボタンをクリックします。

テストシナリオ設定
負荷テスト実行に使用するデバイスの設定が完了すると、さまざまなオプションがあるTest Scenario画面にリダイレクトされます。ここではConcurrent Users、Ramp Up time、Ramp Up speed、Warm Up time、Geo-distributionなどの値を設定できます。これらの値はアプリケーションの種類によって異なり、負荷テストのニーズに応じて設定します。


ストリーミングメディアの同時ユーザー数
Test Scenario画面で、負荷テストを実行するために必要な同時ユーザー数を追加します。ロードインジェクターはテストに必要な同時ユーザー数に基づいて起動されます。テスト完了後には詳細な分析とレポートが生成され、パフォーマンスの問題点やシステムの挙動が評価できます。
接続時間
接続時間はストリーミングセッション開始から最初のフレームの再生までの時間差で、先に述べたラグ比率の指標に加算されます。
継続時間
継続時間はユーザーがコンテンツを消費した合計時間で、コンテンツをキャプチャするエンジンの処理時間も含みます。
品質
品質はユーザーが消費したビットレートで算出され、ストリーミングメディアの視覚的表現を把握するのに役立ちます。
フレームレート(FPS)
フレームレートはテスト実行中にダウンロードされたフレーム数を測定するのに役立ちます。
EveryStep Web Recorderを利用したストリーミングメディアのロードテスト
このセクションでは、通常のウェブサイトコンテンツとともにストリーミングメディアを持つリアルなブラウザセッションをロードテストする方法を説明します。LoadViewにはEveryStep Web Recorderがあり、コンテンツのあるウェブアプリケーション上での実際のユーザー行動に基づいたテストシナリオを作成できます。これには音声、動画の再生/一時停止、動画プレイヤーの縮小や拡大などの操作が含まれます。スクリプトレコーダーはすべての操作を記録し、同じ操作で大規模にロードテストを再実行するためのスクリプトを生成します。 recorderは主要なブラウザをサポートし、ブラウザごとの結果を出せます。必要に応じてEveryStepで作成されたスクリプトは修正・設定可能で、Flash、JavaScript、WebSockets、HTML5、Java、PHP、Ruby、Silverlightなど複数のウェブアプリケーションに対応します。セットアップは先述の手順によく似ていますが、EveryStep Web Recorder使用時は若干異なります。スクリプトレコーダー利用時のロードテスト設定手順は次の通りです:
- LoadViewで新しいテストを作成し、Web Applicationsオプションを選択します。
- 記録ブラウザウィンドウにリダイレクトされ、ここでブラウザやアプリケーションURLを選択します。アプリの詳細を入力しRecordをクリックします。
- 記録が完了したら、エンドユーザーのようにウェブアプリケーションを操作し、スクリプトレコーダーが操作を記録してスクリプト作成を支援します。
- 作成されたスクリプトの最後の行を右クリックして遅延設定を追加できます。これによりテストシナリオがメディアの読み込み待機時間を含められます。
- 完了後、Create Scriptをクリックすると、テストに必要なジオロケーション、同時ユーザー数、ランプアップ/ダウン速度を入力できるTest Scenario画面にリダイレクトされます。


まとめ:ストリーミングメディアのロードテスト方法—サーバー、スクリプトなど
ビデオやライブストリーミングメディアの需要とトラフィックの増加により、業界は最高のサービスと品質を提供し続けることが求められています。ストリーミングメディアを事前にしっかりと負荷テストすることは必須で、決して無視できません。LoadViewを使ったストリーミングメディアアプリケーションのテストシナリオ設定とロードテスト実行のステップバイステップガイドを見てきました。LoadViewはオーディオ、ビデオコーデックならびに複数のメディアフォーマットに幅広く対応しています。また、用途に応じたテストアプローチも紹介しました。LoadViewはEveryStep Web Recorderを用いたストリーミングメディアコンテンツのロードテストおよび専用のストリーミングメディアURIロードテストをサポートしています。
ストリーミングメディアのロードテストについて詳しくはこちら。さらに無料トライアルに登録して最大5回の無料ロードテストを試すことができます。