SoapUI中的LoadTest用于在您所需的持续时间内使用多线程(与“虚拟用户”相同)时重复运行现有的功能TestCase来断言您的目标服务。LoadTests在导航器中显示为此TestCase的子项;
(这里可以看到“Test and Buy TestCase”TestCase有四个LoadTests定义)。
您可以从TestCase右键菜单或TestCase工具栏中使用New LoadTest选项为您的TestCase创建任意数量的LoadTests 。在导航器中双击LoadTest窗口(新创建的LoadTest将自动打开)。
SoapUI允许您使用您的硬件可以负担的多个线程(“虚拟用户”)运行LoadTest,主要取决于内存,CPU,目标服务响应时间等。设置所需的值并启动LoadTest在LoadTest窗口的左上角使用“run”按钮。
TestCase在loadtest内部针对每个配置的线程进行克隆,并使用其自己的上下文,脚本,属性等启动。TestCase将访问TestCase及其TestSteps的唯一“复制”,它可以避免在TestStep和TestCase级别(但不是更高级别)的线程问题。
如果您的TestCase修改了Test Suite或项目属性,这将在公共共享的父对象上完成。
“Thread Startup Delay”在负载测试选项对话框中设置可用于每个线程的开始之间的延迟。
根据选择的限制和策略,LoadTest将按照配置运行,直到由于以下原因之一终止:
如果限制是基于时间的,则LoadTest选项对话框中的“ Cancel Running”选项允许您控制正在运行的线程在达到界限是否应该被允许完成或取消当前testcase。在同一个界面中,“Cancel Excessive”选项可控制当线程计数减少时(例如使用突发策略)时是否应取消过多的线程。
多个LoadTests可以并行执行,以测试更高级的场景,只需一次打开几个窗口并并行运行。一个示例场景可能是一个负载测试,包括一个simple策略的LoadTest生成基线流量,另一个LoadTest使用Burst策略,它在突发中创建高流量; 在每个突发之后,基准LoadTest可以断言系统根据需要处理和恢复。
统计数据的收集和计算是异步执行的(即独立于实际的TestCase执行),因此它不会直接影响实际的LoadTest执行。此外,“ LoadTest选项”对话框中的“ Statistics Interval”设置控制从基础统计模型更新统计信息表的频率,如果需要更多或更少频繁的更新,请更改此值。
快速提示: 几个策略还允许您在执行期间更改线程数,从而使您可以在LoadTest进度时交互地更改负载并监视结果。如果要在线程数量更改时重置计算的统计信息(因此avg和tps等数字不会与以前的结果相违背),请确保选中“LoadTest选项”对话框中的“ Reset Statistics”。
对于除TPS(每秒事务)和BPS(每秒字节数)之外的所有列,统计表中不同值可以通过两种不同的方式直接计算的(由LoadTest选项对话框的“Calculate TPS/BPS”设置);
为了更好地了解这两者之间的差异,我们来创建一个小例子; 一个具有两个groovy脚本的TestCase,第一个睡眠900ms,第二个为100ms。我们将用10个线程运行10秒,理论上应该导致100次执行我们的TestCase;
根据传递的时间计算TPS,两个测试步骤的值相同,因为它们在10秒钟内执行相同次数。它们的单独执行速度不会影响该值。
现在让我们改变TPS的计算方式是基于平均值(在LoadTest选项对话框中):
当我们现在运行测试时,我们得到以下内容:
这里,第一个测试步骤的假设TPS计算为11,因为使用10次平行运行,平均时间为909ms。第二个测试阶段得到100 TPS,再次用10个平行运行计算,平均运行99ms(如果这是持续的性能,我们理论上可以在每秒钟内“挤压”100个请求)。
这两个使用哪一个取决于你; 使用单步TestCases,您应该从两者获得大致相同的结果,但是当您的TestCases包含许多步骤时,两种方式都有其优缺点(如上所示)。
在执行期间,LoadTest工具栏有两种类型的图表可供选择:统计和统计历史。这些的主要目的是随着时间的推移可视化选定的统计数据,以便能够发现突发和意外的变化。显示统计数据是相对的(不是绝对的),因此图形对于分析精确数据不是很有用。两个图都有一个频率设置,用于控制图形更新的频率; 将其设置为“data”将以与统计表相同的间隔更新图形。或者,如果您想要其中一个固定频率选择。
该统计图表显示了所选步骤或随着时间的推移,整个测试用例所有相关的统计数据,让你看到价值如何变化,当你增大一定比例的线程数:
正如你可以看到,绿色线(线程)在测试一半后跳转,这也导致平均预期跳跃和每秒事务的微小变化,尽管我们增加了我们没有获得的线程数,吞吐量相应增加(因为平均响应时间增加)。
该统计数据历史图表显示让你对它们进行比较及查看所有步骤选定的统计值是否随着时间的推移变化。对于相同的测试,我们可以比较avg的变化:
以上图表包含TestCase中每个TestStep的一行,其显示与我们的Statistics表中的TestStep相同的颜色:
当线程数增加时,我们可以看到两个TestSteps的平均更改类似。
LoadTests的多线程执行有一些TestStep特定的含义,您应该在设计和运行LoadTest时注意: