0

現在、初めての負荷テストを開発中ですので、ご容赦ください〜

負荷テスト自体は、HTTPハンドラーにさまざまな要求をPOSTする一連の単体テストを実行しています。負荷テストが実行されているエージェントに応じて、リクエスト自体が開発/ステージング環境に対して行われ、リクエストを「処理」するダウンストリームサービスに渡され、INSERTいくつかのデータベースに対してステートメントが実行されます。イベントハンドラーILoadTestPlugin用の独自の一連の命令を実装および提供する単純なプラグインを構築して含めたかったのです。LoadTestCompletedこのプラグインは現在、負荷テスト自体を収容しているのと同じソリューションに含まれている別のクラスライブラリプロジェクトに含まれています。

問題の説明に入る前に、現在、IISで設定したのと同じハンドラーに対してローカルで負荷テストを実行していることを指摘しておきます。

イベントが発生したときに問題が発生し、メソッドがターゲットデータベースコンテキストへのエンティティ接続を確立しようとします(現在はEntity Framework 4を使用しています)。プラグインコードが、負荷テストプロジェクトに含まれているapp.configを見つけられないようです。例外メッセージ/スタックトレースは、接続文字列が無効であることを示していますが、問題は接続文字列が見つからないことです。その上、この同じ接続文字列は、コードベース全体のさまざまな場所で使用されています。

同じ構成ファイルを使用して同じコードを実行する単純な単体テストメソッドを作成すると、問題なく機能するため、接続文字列が無効になる可能性を排除できます。これは、負荷テストエージェントがプロジェクトのディレクトリとは異なるディレクトリに含まれているために与えられたものであり、構成ファイルの検索に問題はありません。

また、スタートアッププロジェクトの出力ディレクトリにコピーされた構成ファイルを、展開アイテムとして.testsettingsファイルに追加してみました。ブエノはありません。また、プラグインプロジェクトにアプリ構成ファイルを作成しました。これは、それが機能するかどうかを確認するために使用しようとしているファイルの正確なコピーです。まだブエノはありません。

誰かがこの問題に遭遇しましたか?構成ファイルのセクションを使用しようとしている場合<connectionString>、負荷テストプラグインを取得してそれらを検索/使用するにはどうすればよいですか?

リフレクションとgoodole'を使用しConfigurationManagerて、アセンブリを呼び出してパス(および最終的にはProjectName.dll.configファイル)を見つけようとしましたが、StackOverflowのプロに少し質問したいと思いました。先に進む前にアドバイス。

また、これがそれほど単純なEFコードではなかった場合(または、次のポイントを超えていた場合var dbContext = new dbContext( myConnectionString );) 、コード例を提供します。

ヘルプ/フィードバックは大歓迎です。

4

2 に答える 2

0

負荷テストプラグイン内でアプリケーションの構成ファイルを使用する方法がわかりませんでしたが、負荷テストと対応するプラグインはQTAgent.exeディレクトリで実行されるため、負荷テスト後のデータベースをクリーンに実装できました。 -2つの方法でステップアップします。

  1. 環境に基づいた接続文字列の一意の要素を含むコンテキストパラメータの使用([設定の実行])。これにより、接続文字列自体の一意の要素(たとえば、データソースなど)をプラグインでプログラムで使用できるようになります。

  2. エンドポイントに対してリクエストを発行した単体テストクラスで、[ClassCleanup]属性でフラグが付けられた静的メソッドを作成しました。これは、そのクラスの単体テストを含むテストミックスの実行が終了したときに実行されます。テストクラスはプロジェクトのoutディレクトリに含まれており、エンティティ接続文字列を使用してアプリの.configファイルにアクセスできます。

[TestClass]
public class MyEndpointUnitTests()
{
   [TestMethod]
   public void SubmitRequestType1()
   {
       //DoStuff for request type 1
   }

   [TestMethod]
   public void SubmitRequestType2()
   {
       //DoStuff for request type 2
   }

   [ClassCleanup]
   public static void Cleanup()
   {
       EndpointLoadTestCleanup.DoCleanup( dbContext = new DbContext( ) );
   }
}
于 2013-03-14T13:25:06.983 に答える
0

カスタムの負荷テストプラグインを作成できます。Initializeメソッドでは、接続文字列をxml / app.configファイルから取得して、コンテキストオブジェクトに追加し、単体テストプロジェクトで使用できます。将来的にはより堅牢で保守が容易になります。

于 2015-04-01T20:57:58.083 に答える