アクセスデータベースから読み取り、データベース内のすべての行に対して実行するデータ駆動型の単体テストがあります。これを負荷テストに追加して5人の同時ユーザーで実行すると、データベース内のすべてのレコードが5回実行されます。問題Iここで直面するのは、データベースにレコードが多い場合、テストの実行に時間がかかることです。代わりに、テストを1つのデータ行のみを実行するように制限する方法はありますか?
3 に答える
データベースの行ごとに1回だけテストを実行してから、停止しようとしていますか?その場合は、Webテストを負荷テストとして使用することはおそらく避けてください。
選択肢は2つあると思いますが、確認のために仕事用のコンピューターを目の前に置いていません。
オプション1:おそらくすでに持っているように、アクセスデータベースに接続するなど、すでに行ったようにWebテストを作成します。次に、テストをコード化されたWebテストに変換します。また、データソース内のレコードごとに1回実行されるようにコードを変更します(つまり、コード化されたWebテストに外部ループを追加します)。
オプション2:ローカルのテスト実行構成を編集して、テストをN回実行します。メインメニューから[テスト/実行構成の編集]に移動し、テスト構成を選択し、左側のペインから[Webテスト]を選択して、[固定実行数]を5に変更します。現在これを確認することはできませんが、テストを実行するたびに信じています最初のレコードに留まるのではなく、次のレコードに進みます。
利用可能なデータの行がある場合にのみデータテストを実行する必要があると思います。
テストを駆動するデータを変更して、次のSQLコードなどのアトミック変換を使用してストアドプロシージャを読み取ります。
BEGIN TRANSACTION
DECLARE @Id UNIQUEIDENTIFIER
SET @Id = (SELECT top 1 ID from #TestData WHERE TestRun = 0)
SELECT top 1 * FROM #TestData WHERE ID = @Id
UPDATE #TestData SET TestRun = 1 WHERE ID = @ID
COMMIT TRANSACTION
これにより、テストが実行されるたびに一意のデータ行が取得され、負荷テストでテストを使用できるようになります。
同時実行性をうまく処理できないと思うので、アクセスの代わりにSQL Expressを使用する必要があります(ここで修正できます)。
負荷テスト中に何が発生するかをさらに制御する必要がある場合は、次の負荷テストイベントからコードを実装できるようにする負荷テストプラグインを作成することを検討してください。
- LoadTestStarting
- LoadTestFinished
- LoadTestWarmupComplete
- TestStarting
- TestFinished
- ThresholdExceeded
- ハートビート
- LoadTestAborted
後で、負荷テストでシナリオのテスト反復プロパティを理解して、ユーザーごとにテストを実行する回数を制御しました。
実行設定で、[テストの反復を使用] =trueのテストの反復=xxx(必要な反復の数)を設定します。
また、各反復の間に一時停止するには、負荷テストのシナリオプロパティで、以下のプロパティを設定します
1)プロファイルを考える=オン2)テストの反復間の時間を考える= 1