如何在LoadRunner测试场景中添加负载生成器

如何在LoadRunner测试场景中添加负载生成器,第1张

从概念上说

前者(web_concurrent_start)是语句的并发 后者(lr_rendezvous)是user的并发

这是两件完全完全不同的事情 没有什么可以比较的 仅仅只是都有“同时执行”的意思而已

详细来说

URL-based 方式 默认是将每个请求录制成一条语句 而一条语句只建立一个到服务器的连接

比方说 一个page上面 有 有文本 有音视频 有编辑框 有按钮 有链接 有复选框 等等等等……

那么请求 请求文本 请求音视频…… 就上面所有那些 都各自分别是一条语句

如果不写web_concurrent_start和web_concurrent_end函数 就默认按语句的顺序执行请求

而写了web_concurrent_start和web_concurrent_end函数之后 就会将这些请求同时发送

容易想象的是 并发请求时的压力 会比顺序请求的时候 要大

集合点 或者也有叫同步点的 它的概念比较容易理解 就不解释了

下面针对你的问题:

“1用户下,使用web_concurrent_start(end)一次性提交20请求;

和20用户下,通过rendezvous来集合后,每用户提交1个请求;

这两种场景应该是一样的,因为都是一次向服务器同时提交了10个请求。”

这是不准确的 原因至少有两点:

第一 单用户多请求的并发性 要强于多用户的集合点

这是因为 集合点是多线程的并发 它的并发性是有限的 宏观上是并发 微观上不可能并发

因为如果你的电脑是单CPU的 那么你就不可能获得严格意义上的并发执行

按照 *** 作系统中 进程和线程的关系 在某一个时间点 严格上讲 就只有一个人得到执行

除非你给每个用户配备一个CPU 才能达到真正的并发 但显然这是不可能的

第二 你的每个请求的开销并不一定是相同的 这也导致测试结果的不可控

最简单的 请求一段文字 与请求一段音视频 产生的系统开销肯定是不一样的

你使用的web_custom_request函数 并不是发送完了就完了 而是返回完毕才算完成

返回一段几KB的文字 与返回一段几MB的音视频 对网络的压力肯定是不一样的

当然还可以有其他的理解 你可以自己继续分析

而且可以预见的是 你这种测试 每一次都有可能获得不同的结果

我指的是你请求的东西不一样的情况下 比如你换一个站点进行测试 结果就有可能是相反的

原因就是我上面说的第二点

解决办法有两种:

1、录制脚本过程中插入集合点,这样在录制完成后会自动在代码中插入集合点。

2、利用函数lr_rendezvous("xx"),手动在代码中插入集合点;

集合点插入成功后,Remove之前的用户组,重新添加你修改过的用户组脚本,这时候你就看到Controller里面Scenario菜单下的Rendezvous变为可选

以上就是关于如何在LoadRunner测试场景中添加负载生成器全部的内容,包括:如何在LoadRunner测试场景中添加负载生成器、用loadrunner录制脚本吗、[loadrunner]Action.c(53): Error -27987: Requested image not found [MsgId: MERR-27987]等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9513156.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存