なぜ弱いネットワーク環境のテストを行うのですか?
ユーザー自身のネットワーク環境の変動、または比較的劣悪なネットワーク環境により、予期しない機能しないバグが発生し、ユーザーの健康診断に影響を与える可能性があります。例えば
実現するには、Fiddler、Charles などのプロキシ サーバー機能を備えたネットワーク トラフィック分析ソフトウェアを使用します。
フィドラーシミュレーションの速度制限の原理
Fiddler の速度制限は、ネットワーク遅延、ネットワーク遅延時間 * ネットワーク速度 = 送信バイト数の形式で実装されます。
Fiddler は本来プロキシです。クライアントがリクエストする前、サーバーが応答する前にコールバック インターフェイスを提供します。これらのインターフェイスのロジックをカスタマイズできます。Fiddler のアナログ速度制限は、クライアント要求の前にカスタム速度制限のロジックであり、データの送受信時間を遅らせることでネットワークのダウンロード速度とアップロード速度を制限し、速度制限の効果を実現します。
Fiddler を使用して過酷なネットワーク環境をシミュレートするにはどうすればよいですか?
1.「モデム速度のシミュレート」を有効にする
ルール – パフォーマンス – モデム速度のシミュレート
デフォルトではチェックが外れており、ネットワークは正常です。このオプションをチェックすると、Fiddler プロキシを経由するすべてのトラフィックは、何年も前に 56k の子猫がいたときのインターネット アクセスと同じくらい遅くなります。
注:速度制限をオンにする前後で、速度テストツールspeedtest(海外speedtest.net / 国内speedtest.cn)と連携すると、図に示すようにping、ダウンロード、アップロードに影響があることがわかります。下:
制限速度の前に
制限速度を超えた後
2. 速度制限パラメータ(ネットワーク環境パラメータ)を設定する
デフォルト設定ではシミュレートされた環境が過酷すぎて、必ずしも要件を満たしていない場合は、制限速度のパラメータを調整する必要があります。
(法一)ルール – ルールをカスタマイズ…
CustomRules.js ファイルはテキスト エディタで開きます。このファイルはデフォルトでユーザー ディレクトリのドキュメント ディレクトリの下の \Fiddler2\Scripts の場所にあり、サフィックス名は js です。次に、m_SimulateModem フラグ (下図を参照) を見つけて、要求遅延と対応する遅延をミリ秒単位で設定します。
上記の通り、oSession の 2 つのパラメータです。request-trickle-lay の値は、アップロード時に 1KB のデータが遅延するミリ秒数を表し、response-trickle-lay は、ダウンロード時に 1KB のデータが遅延するミリ秒数に対応します。たとえば、アップロード速度 500KBps のネットワークをシミュレートする場合、アップロード遅延は 1KB/500KBps=0.002s=2ms となるため、これを 2 に変更します。
(方法 2) または、次のように、右側の監視パネルの [FiddlerScript] タブを直接開きます。
ネットワーク速度が非常に速い場合、ここで設定した値は、シミュレーションをオンにした後のアップロードおよびダウンロードの帯域幅を概算できます。たとえば、デフォルトのアップロード遅延は 300 ミリ秒、ダウンロード遅延は 150 ミリ秒です。おおよそのシミュレーション帯域幅は次のように計算できます。 :
→ アップロード帯域幅=(1 * 8/1000) /0.300 ≈ 0.027Mbps
→ ダウンロード帯域幅=(1 * 8/1000) /0.150 ≈ 0.053Mbps
ただし、実際にはこの値の 2 倍の帯域幅が得られます。Fiddler の内部実装と記述との間に何らかの差異があるのではないかと推測されます。なぜこの現象が発生するのかはあまり明確ではないため、上式を修正する必要があります。係数 2.0、つまり:
→ アップロード帯域幅=((1*8/1000)/0.300)*2.0≈0.053Mbps
→ ダウンロード帯域幅=((1*8/1000)/0.150)*2.0≈0.106Mbps
ポピュラーサイエンス 1: 帯域幅の測定に使用される単位は、1 秒あたりに送信される 2 進数の桁数を指します。
Mbps はミリオンビット プロ セカンド (100 万ビット/秒) です。
Kbps はキロビット プロ秒 (1 秒あたりの千ビット) です。
bps はビットプロ秒 (ビット/秒) です。
1Mbps =1000Kbps =1000000bps
Popular Science 2: 通常、ソフトウェアに表示される速度は 1 秒あたりに送信されるバイト数 (Byte) を指し、通常は B (大文字) で表されます。
MB はメガバイトを意味し、メガバイトとも呼ばれます。
KB はキロバイトを意味します。
Bはバイトです。
1MB=1024KB=1024*1024Bの関係;
1B=8b;
→ したがって、1M 帯域幅は 1Mbps=1000Kbps=1000/8KBps=125KBps を意味します。
3. カスタム スクリプトを作成する
つまり、CustomRules.js のロジックを拡張または追加します。たとえば、ランダムな遅延を追加して、前の手順のようにネットワーク帯域幅が低速値で一定ではなく、特定の範囲内でランダムにジッターが発生するようにするには、次のように、コード セグメント 1 をコード セグメント 1 に変更します。
コードスニペット 1:
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = "500";
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "500";
}
コードスニペット 2:
static function randInt(min, max) {
return Math.round(Math.random()*(max-min)+min);
}
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = ""+randInt(1,500);
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = ""+randInt(1,500);
}
PS: 変更後、構成ファイルを保存する (Ctrl+S) かキャッシュをクリアし (ルール –> パフォーマンス –> キャッシュを無効にする)、速度測定のためにルール –> パフォーマンス –> モデム速度のシミュレートを再度チェックします。注: 毎回設定ファイルを編集して保存すると、[モデム速度のシミュレート] オプションがキャンセルされます。もう一度確認してください。
発生した問題: 上記の改訂後、[ルール] –> [パフォーマンス] メニューが表示されなくなり、ロールバックまたは再起動するだけになる場合があります。
過酷なネットワーク環境をシミュレートする Fiddler の制限
Fiddler を使用して過酷なネットワーク環境をシミュレートするのはシンプルかつ直感的ですが、欠点は、通信と対話に HTTP を使用するサービスのみをサポートでき、他のプロトコルのアプリケーションはサポートできないことです。
最後に、私の記事を注意深く読んでくださった皆さんに感謝します。互恵性は常に必要です。それはそれほど価値のあるものではありませんが、必要な場合はそれを取り上げることができます。
これらの資料は、[ソフトウェア テスト] の友人にとって、最も包括的かつ完全な準備倉庫となるはずです。この倉庫は、最も困難な旅を乗り越える何万人ものテスト エンジニアにも同行してきました。お役に立てれば幸いです。パートナーは下の小さなカードをクリックしてください。受け取る