功能:LoadRunner是一种适用于许多软件体系架构的自动负载测试工具,从用户关注的响应时间、吞吐量,并发用户和性能计数器等方面来衡量系统的性能表现,辅助用户进行系统性能的优化。
组成:LoadRunner主要包括三个前台功能组件,分别为VuGen(Virtual User Generator虚拟用户脚本生成器)、Controller(测试控制器)和Analysis(结果分析器)。系统会自动调用后台功能组件LG(负载生成器)和Proxy(用户代理)来完成性能测试工作。
三个组件:
LoadRunner性能测试过程:
主要有以下内容:分析应用程序、确定测试目标、计划怎样执行
LoadRunner 使用虚拟用户的活动来模拟真实用户来操作Web 应用程序,而虚拟用户的活动就包含在测试脚本中,所以说测试脚本对于测试来说是非常重要的。
开发测试脚本要使用 VuGen 组件。测试脚本要完成的内容有:
运行场景描述在测试活动中发生的各种事件。一个运行场景包括一个运行虚拟用户活动的Load Generator 机器列表,一个测试脚本的列表以及大量的虚拟用户和虚拟用户组。
一切配置妥当,开始运行测试。在运行过程中,需要监视各个服务器的运行情况(DataBase Server、Web Server等)。
所有前面的准备都是为了这一步。我们需要分析大量的图表,生成各种不同的报告,最后会得出结论。
LoadRunner用3个主要功能模块来覆盖性能测试的基本流程。(从上到下依次执行)
其中Virtual User Generator使用在创建VU脚本阶段,Controller用在定义场景阶段和运 行场景阶段,Analysis用在分析结果阶段。
选择StartServer.bat进行启动:
虚拟用户及密码的管理:
可以选择火狐浏览器或者IE:
新建脚本
创建脚本:因为要测试的是web项目,所以选择协议为Web-HTTP/HTML,点击创建后,进入主窗体(还可以在Single Protocol里面找)
在init中初始化,end中释放资源,在action中录制脚本
注意:在重复执行测试脚本时,vuser_init 和vuser_end 中的内容只会执行一次,重复执行的只是Action 中的部分。
脚本录制
最后结束录制
也可以在录制脚本中插入事务
法1.在点击插入事务处右击
2.法2
3.法3
注:对于事务要有始有终;
在进行压力测试时,为了检查Web 服务器返回的网页是否正确,VuGen 允许我们插入Text 检查点,这些检查点验证网页上是否存在指定的Text,还可以测试在比较大的压力测试环境中,被测的网站功能是否保持正确。检查点的含义和unittest中的断言功能基本上一致。找页面里面的文本利用快照,做快照时一定要放到鼠标要点击做快照的代码处;
找快照:
文本检查:在想要检查的文本处右击
文本检查:
生成代码:此时应该确定页面加载好后在进行文本检查,加上"SaveCount=reservation_Count"
编译运行:
如果用户在录制脚本过程中,填写提交了一些数据,比如要增加数据库记录。这些操作都被记录到了脚本中。当多个虚拟用户运行脚本时,都会提交相同的记录,这样不符合实际的运行情况,而且有可能引起冲突。为了更加真实的模拟实际环境,需要各种各样的输入。
参数化输入是一种不错的方法。
用参数表示用户的脚本有两个优点:
① 可以使脚本的长度变短。
② 可以使用不同的数值来测试你的脚本。例如,如果你企图搜索不同名称的图书,你仅仅需要写提交函数一次。在回放的过程中,你可以使用不同的参数值,而不只搜索一个特定名称的值。
参数化包含以下两项任务:
① 在脚本中用参数取代常量值。
② 设置参数的属性以及数据源。
过程:
创建关联
出现关联:
把让jojo出现的地方都用参数替换:
此时脚本中所有的jojo用{username}替换掉了
添加虚拟用户:
首先确保虚拟用户在下面文件中存在,可以自行添加
选中username右击:
出现:
先查看username.dat里面的内容,发现只有一个用户
添加虚拟用户:
两种方法:这种方法比较麻烦,需要一次一次的添加
第二种:
最后查看文件,用户名已经添加进去了
这里要加上"NotFound=warning",否则运行会出错,因为长度有溢出
这样的话,还是不行的,知只是让一个用户去执行,只运行了一次,还需要更改运行时逻辑:
此处下面没有确定按钮,直接enter即可:
以日志形式输出:
先加上一句话:lr_output_message("username=%s",lr_eval_string("{username}"));
用log日志:
打印符号,让结果更加明显:
效果:后面几个是一样的,就是用户名是他自己的用户名
1.控制脚本流程
if { } else { }
for{ }
while{ }
2.字符串函数
strcmp 比较两个字符串
strcat 连接两个字符串
strcpy 拷贝字符串
注意:在VuGen 中,以char声明的字符串是只读的,如果试图给char类型的字符串赋值的话,编译会通过,但在运行时会产生“Access Violation”的错误。解决这类问题,就是把字符串声明为字符数组,比如char[100]。
3.输出函数
lr_output_message 输出一条消息
4.LoadRunner提供的标准函数
lr_eval_string 该函数功能是得到参数(参数化输入中)当前的值
exg: lr_output_message("temp = %s", lr_eval_string("{WCSParam2}"));
lr_save_string 该函数功能是把一个字符串保存到参数中
操作:判断用户是否为jojo
结果:
在VuGen中,把之前的用户数改为1进行controller
因为电脑不太行,所以虚拟用户数只设置了3个人(同时做这个操作的人数有3个)
自动进入Controller
进行的是并发测试
一般用本台电脑上的loadrunner测服务器上的系统,进行配置:
加完之后点击ok后,还要去检查能不能连接上,点击Connect
场景的设置:
从上到下分别设置初始化虚拟用户、虚拟用户开始运行的方式、运行时间、停止运行方式
有多个组的时候选择group:
1.第一个场景:初始化
选择中间的,初始化一个用户需要多长时间
2.第二个场景:启动用户
3.第三个场景:持续运行的时间
4.第四个场景:退出
右边的图形曲线的走向和左边的设置是相关的
场景的运行
两种方法
方法1:
方法2:
四个窗口
到达集合点时,点击率最高
错误率=(错误用户数+失败的用户数)/所用的并发用户数
用户运行时间:在运行时和当初设置的不一样(因为系统复杂性)
点击率:每秒钟并发用户向服务器发送请求的个数
信息处理量:
事务的总结:
(还有表和图,没有列完)
增加条目:
合并图: