我有一個datadriven單元測試,它從一個訪問數據庫中讀取並執行數據庫中的所有行。當我將這添加到一個負載測試並使用5個併發用戶執行時,所有記錄在數據庫中執行5次。我在這裏面臨的問題是,當數據庫中有更多記錄時,測試需要更多時間來執行。有沒有辦法限制測試只執行一個數據行?VSTS加載測試每個數據行一次運行
1
A
回答
1
您是否試圖在數據庫中每行運行一次測試,然後停止?如果是這樣,你應該避免使用你的網絡測試作爲負載測試。
我想你有兩個選擇,但我沒有我的工作電腦在我面前來確認。
選項1:像您已經完成的那樣創建Web測試,包括將它連接到訪問數據庫,就像您可能已經擁有的那樣。然後將測試轉換爲編碼的網絡測試。並更改代碼,以便爲數據源中的每個記錄運行一次(換句話說,將外部循環添加到編碼的webtest中)。
選項2:編輯您的本地測試運行配置運行測試N次。從主菜單轉到測試/編輯測試運行配置,選擇您的測試配置,從左側窗格中選擇Web測試,然後將固定運行計數更改爲5.我現在無法確認,但我相信每次測試運行它將前進到下一個記錄而不是停留在第一個記錄。
0
我假設你只想在有一行數據可用時運行數據測試。
我會改變數據驅動測試讀取與原子TRANSATION存儲過程像這樣的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而不是訪問,因爲我認爲它不能很好地處理併發(可以在這裏打開)。
如果您需要在負載測試中所發生的控制,考慮creating a load test plugin,讓你實現從下面的負載測試事件代碼:
- LoadTestStarting
- LoadTestFinished
- LoadTestWarmupComplete
- TestStarting
- TestFinished
- ThresholdExceeded
- 心跳
- LoadTestAborted
0
後來我想通了測試迭代在負載測試場景的屬性來控制的,你想運行每個用戶的測試次數。
在運行設置,設置 使用測試迭代=真 測試迭代= XXX(你需要的迭代次數)
也讓每個迭代之間的停頓, 在你的方案屬性負載測試,設置下面的屬性
1)Think Profile = On 2)Think Test迭代間的思考時間= 1
相關問題
- 1. 在VSTS中運行負載測試
- 2. VS2010負載測試:如何執行在每次負載測試之前運行一次的自定義操作
- 3. 每次圖像加載完成後運行一個函數
- 4. 如何每次運行一個功能一個UIViewController加載
- 5. VSTS部署後運行測試
- 6. Django單元測試無需每次運行時創建測試數據庫
- 7. 將測試結果添加到VSTS中的測試運行(測試用例)
- 8. 量角器 - 每次測試前和每次測試後都運行代碼
- 9. 每個數據庫行NUnit測試?
- 10. 每次在CodeIgniter中加載一個頁面時運行一個函數
- 11. 從另一個測試多次運行測試
- 12. 多個單元測試項目 - 一次運行所有測試,但每次只有一個項目
- 13. Mongo數據庫未能準備好每隔一次測試運行
- 14. 多次運行NUnit測試
- 15. 我如何每5分鐘運行一次硒測試?
- 16. 每次測試前加載SQL數據庫
- 17. 無法進行單元測試:$ _SESSION在每次測試運行前清空
- 18. TFS CI構建運行每個單元測試兩次
- 19. 如何爲每個測試運行重新創建一個數據庫?
- 20. 執行集成測試時的彈簧啓動只在整個過程中加載測試數據一次
- 21. 我是否必須運行rake db:test:在運行測試之前手動加載每次?
- 22. 哪個測試運行器適用於VSTS和ASP.NET Core?
- 23. 在黃瓜運行測試前運行一次代碼
- 24. Ansible每個數據庫名稱運行一次任務
- 25. 每頁加載只運行一次Greasemonkey腳本?
- 26. 如何爲R數據框的每一行運行二項式測試?
- 27. 運行多個,如果每一次
- 28. log4net每次運行一個文件
- 29. log4j - 每次運行一個文件
- 30. 大同考試運行測試兩次