我有一个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. 大同考试运行测试两次