2

クライアントがホストする外部Webサービスの負荷テストを依頼されました。

基本的に、サービスに複数のWebリクエストを送信し、サービスがそれらすべてを処理するのにかかる時間を測定します。異なるマシンからWebサービスにアクセスする複数の異なるユーザーをシミュレートすること。テストでは、Webサービスがこれを処理できることを確認して、基本的にクライアントにいくつかのメトリックと例を提供します。たとえば、応答するのに50リクエストかかる時間などです。

これは、SoapUI/LoadUIなどのツールを使用して実現できることを認識しています。

とにかくC#を使用して負荷テストを作成できることを知りたいですか?

現在、私は次のようなものを持っています:

    [Test]
    public void TestService50Requests()
    {
        List<WebRequest> requests = CreateMultipleRequests(50); //Creates web request objects

        string timeSpan = TimeMultipleRequests(requests);

        Console.WriteLine("50 Requests runtime: " + timeSpan);
    }

    private void TimeMultipleRequests(List<WebRequest> requests)
    {
       var stopWatch = new Stopwatch();
       stopWatch.Start();

       foreach (var request in requests)
       {
            request.GetResponse();
       } 

       stopWatch.Stop();
       var timeSpan = stopWatch.Elapsed;
       return String.Format("{0:00} hours, {1:00} minutes, {2:00} seconds, {3:00} milliseconds", timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds / 10);           
    }

私はこれを行うためのより良い方法があると思いますか?改善のための提案はありますか、それともこれは完全に間違っていますか?

4

3 に答える 3

3

それは本当にあなたが何をテストしようとしているのかに依存します。負荷テストは、システムにストレスを与える(システムを破壊するのに必要な同時ユーザーの数)またはソーク(長期間の中程度の負荷)に使用できます。コードはシステムに同時リクエストを送信しないため、ユーザーの実際の動作を模倣する優れたテストとは見なされません。

これらを実現するための優れたツールはありますが、コストがかかる可能性があります。Visual Studio Ultimateを自由に使用できる場合は、含まれている負荷テストツールが非常に優れています。同様のことを行うツールであるWAPTも見ることができます。

それで、私はあなたに要件を与えた人に戻って、具体的に何をテストする必要があるかを尋ねます。システムが処理できる同時ユーザーの数、メモリリーク、システムの可用性、またはパフォーマンスはありますか?

于 2013-01-31T10:20:06.530 に答える
1

SoapUIの別の代替案を提示するために、C#で実行しようとするのではなく、JMeterを使用します。

フロントページから:

ApacheJMeterの機能は次のとおりです。

  • 多くの異なるサーバータイプをロードしてパフォーマンステストできます。

    • 石鹸
于 2013-01-31T10:14:05.220 に答える
0

VisualStudioでWebサービスの負荷テストを作成する方法を説明します。負荷テストプロジェクトの作成負荷テストプロジェクトを作成する最初のステップ。これを行うには、次の手順を実行します 。手順:

VisualStudioインスタンスを開きます

[新規]>[プロジェクト...]をクリックして、新しいプロジェクトを作成します。

「テスト」をクリックし、C#で「Webパフォーマンスと負荷テストプロジェクト」を選択し、適切な名前を入力して「OK」をクリックします。

プロジェクトを作成した後、レコーダーを使用してパフォーマンステストを作成する2番目のステップは、レコーダーを使用して作成するか、ここでHTTPリクエストを直接呼び出すことができるパフォーマンステストを作成することです。ここでは、レコーダーを使用してHTTPリクエストを記録します。手順:パフォーマンステストを追加するにはプロジェクトを左クリックして、[追加]>[Webパフォーマンステスト]を開きます。

注:Webテストは自動的に追加され、必要に応じて名前を変更することもできます。レコーダーが開いている場合は閉じます。それ以外の場合は、テストを左クリックして[Webサービスリクエストの追加]をクリックします。

左側のペインのプロパティから、ローカルホストのPOSTメソッドをユーザーのWebサービスアドレスに変更します

本文のプロパティで[コンテンツタイプ]を[テキスト/XML]として選択し、[文字列]で本文にXMLを入力します。例:.net frame work 4.0または4.5を使用しているため、SOAP1.2リクエストを使用することに注意してください。[OK]をクリックします。

スクリプトのパラメータ化負荷テストでわかっているように、複数のユーザーをシミュレートするため、場合によってはすべてのユーザーが一意のデータセットを必要とするため、リクエストのパラメータ化が非常に重要です。これを行うには、次の手順を実行する必要があり
ます。パラメータをExcelまたはSQLServerテーブルのデータにバインドするデータソースが必要です。これを行うには、強調表示されたアイコンをクリックしてデータソースを作成します。

CSVファイルからパラメータのデータを取得する場合はCSを選択し、そうでない場合はデータベースを選択します。

SQL Serverの場合は、必要な手順を実行し、最後にテーブルを選択して、DBとの接続を作成します。次に、Webサービス本体のXMLを開き、そのタグでパラメータータイプをパラメーター化するために。CSVファイルの名前。フィールド名}}例

{{DataSource1.test#csv.ID}}

このようにして、Webサービスに必要なすべてのパラメーターをパラメーター化します。

負荷テストの追加 パフォーマンステストを作成した後、それに対して負荷テストを作成する必要があります。これを行うには、次の手順を実行します。手順:プロジェクトを左クリックして開きます

ウィンドウが開きます次へをクリック

シナリオに名前を付け、[思考時間]を選択して、[次へ]をクリックします

要件とテストマシンの仕様に従ってユーザー数を選択します。

テストモデルを選択

負荷テストに含まれる追加をクリックして、パフォーマンステストを追加します

テストを選択してください

このようにして、負荷テストを構成して続行します

負荷テストを実行しています。すべての構成を行った後、負荷テストを開始するだけです

負荷テストが開始されると、次のグラフが表示されます

レポート の生成負荷テストレポートを生成する方法はいくつかあります。1つはExcelを使用してレポートを自動的に作成する方法、もう1つはレポートを作成する方法です。通常必要なデータは応答時間とそのグラフだけです。このようなレポートを作成するだけです。下記のメールフォームに記載されていますが、必要に応じて異なります。

あなたはこのリンクで基本的なturtorialを見つけることができます

于 2015-07-01T08:01:56.977 に答える