本篇博客
1.事务
-
1.1 事物的作用
-
1.2 响应时间
-
1.3 添加事务
-
1.4 事务时间
-
1.5 判断事务结果
-
1.6 函数
2.检查点(检查业务是否成功)
2.1 检查点作用
2.2 函数
-
2.2.1文本检查
-
2.2.2图片检查
3.思考时间
-
3.1作用
-
3.2设置策略
-
3.3函数
4.集合点
-
4.1作用
-
4.2设置策略
-
4.3函数
5.Vugen常见函数
6.Controller控制器
1.事务
通过事务可以查看服务器的响应时间以及事务通过/失败率
1.1 事物的作用
测试人员可以将一个或多个操作步骤定义为一个事务,
可以通俗的理解事务为"人为定义的一系列请求(请求可以是一个或者多个)"。
在程序上,事务表现为被开始标记和结束标记圈定的一段代码区块。
Loadrunner根据事务的开头和结尾标记,计算事务响应时间、成功/失败的事务数。
1.2 响应时间
组成:浏览器---服务器整个处理过程
解释
1.网络时间
客户端发出请求首先通过网络来到Web Server上(消耗时间为N1);然后Web Server将处理后的请求发送给App Server(消耗时间为N2);App Server将操作数据指令发送给Database (消耗时
间为N3);Database服务器将查询结果数据发送回App Server(消耗时间为N4);App Server将处理后的页面发给Web Server(消耗时间为N5);最后Web Server将HTML转发到客户端(消耗
时间为N6)。 这里的Nx都是网络传输上的时间开销,没有计算业务处理所需要花费的时间。
2.服务器处理时间
各个服务器处理所需要的时间WT、AT、DT。
响应时间 = WT+AT+DT +(N1+N2+N3)+(N4+N5+N6) 也可以简单认为响应时间由网络开销(前端)和服务器开销(后端)两大部分组成,
1.3 添加事务
开始事物
结束事务
1.4 事务时间
1.5 判断事务结果
1.自动判断:此处判断的是状态码
2.手工判断:
1)通过状态码判断
//获取服务器http协议返回码函数
HttpRetCode = web_get_int_property(HTTP_INFO_RETURN_CODE);
//判断返回码是否
if (HttpRetCode == 200)
//lr_output_message("The script successfully accessed the discuz home page--- ----- -------------- -----------------");
lr_end_transaction("open", LR_PASS);
else
//输出信息到日志的函数
//lr_output_message("The script failed to access the discuz home page-------- ----- -------------- ----------------- ");
lr_end_transaction("open", LR_FAIL);
2)通过检查点判断
if(atoi(lr_eval_string("{num}"))>0)
lr_end_transaction("login", LR_PASS);
else
lr_end_transaction("login", LR_FAIL);
1.6 函数
lr_start_transaction("事务名")
lr_end_transaction("事务名",事务状态)
注意: 正常情况下,事务内只存放目标请求,其他的检查点,关联,思考时间 等函数一般放在事务函数的外面
练习:iwebshop登录并检查验证
2.检查点(检查业务是否成功)
2.1 作用:检查请求触发的业务有没有真正成功
2.2 函数
1)文本检查
web_find与web_reg_find区别
- 1、 这两个函数函数类型不同,WEB_FIND是普通函数,WEB_REG_FIND是注册函数;
- 2、 WEB_FIND使用时必须开启内容检查选项,而WEB_REG_FIND则不没有此限制;
- 3、 WEB_FIND只能用在基于HTML模式录制的脚本中,而WEB_REG_FIND没有此限制;
- 4、 WEB_FIND是在返回的页面中进行内容查找,WEB_REG_FIND是在响应中进行查找;
- 5、 WEB_FIND在执行效率上不如WEB_REG_FIND;
web_find()
web_reg_find()
"Text=Welcome, <b>jojo</b>", 查找的字符串
"Search=Body", 查找范围
"SaveCount=num", 查找到的次数保存的参数名
LAST);
2)图片检查
web_image_check()
通过Alt属性
通过Src属性
3.思考时间
3.1作用:更加真实模拟用户发出请求之间的延迟,也就是用户暂停发请求的时间
3.2设置策略
3.3函数
lr_think_time(秒数)
注意:
1.实际情况下,获取真实场景的系统的性能指标时一般加入思考时间(1-2S) 如果是做压力测试获取系统的峰值指标时,一般忽略思考时间
2.一般情况下,思考时间函数不要放入事务内,以免后期影响计算事务响应时间
4.集合点
4.1作用:
设集合点是为了更好模拟并发操作。设了集合点后, 运行过程中多个用户可以在集合点等待到一定条件后再一起发后续的请求。
4.2设置策略
Controller---scenario--Rendezvous--policy
1.当%x的全部用户到达集合点时,开始释放
2.当%x的正在运行的用户到达集合点时,开始释放
3.当x个的用户到达集合点时,开始释放
限制虚拟用户之间的超时时间为xxS
图示1
图示2
4.3函数
lr_rendezvous("集合点");
5.Vugen常见函数
web_url();
web_submit_data();
web_link();
web_submit_form();
web_custom_request();
web_reg_save_param()
lr_eval_string();
lr_save_string();
lr_output_message()
lr_paramarr_idx();
lr_paramarr_random();
lr_paramarr_len()
web_reg_find()
web_find()
web_image_check()
atoi();
itoa();
lr_think_time()
lr_start_transaction();
lr_end_transaction();
lr_rendezvous()
web_get_int_property()
获取状态码函数
6.Controller控制器
6.1 性能测试的分类
性能测试:对系统进行施加压力,与预定目标进行比较
负载测试:属于性能测试的一种,通过逐步增加系统负载,确定在满足性能指标情况下, 系统所能承受的最大负载量,找系统挂之前的那个点
压力测试:属于性能测试的一种,确定在什么负载条件下长时间运行,系统失效
6.2 负载和压力设置的曲线图(见word文档)
6.3手工场景
1)用于设计用户的添加和减少过程,模拟真实用户请求模型
2)设置用户负载方式
1.通过Scenario Schedule中的Schedule by和Run Mode来设置的
2.画曲线图
Initialize
Start Vusers:选1.表示以多少个并发数开始运行的
Duriation:选2.表示持续运行多长时间
Stop Vusers:1.Simultaneously:立即结束 选择2.每多长时间结束几个
点击Add action添加action
3.设置的几种组合
3.1 多个脚本间按照相同模式跑,运行轨迹时一样的:
Scenario+Real-world schedule
3.2 多个脚本之间按照独立设置模式跑
Group+Real-world schedule
3.3 Basic schedule不常用
4.Scenario Groups中的设置
4.1 view Script 用来打开代码,可进行修改代码
4.2 Details---Refresh---script:修改完代码之后要进行刷新下代码
4.3 Details--Run-time Settings
- 1.和代码中的不一样
- 2.Run Logic 设为1
- 3.Log 选择Enable logging -----忽略log
- 4.Think Time选择lgnore think time------忽略think time
- 5.Miscellaneous 选择Run Vuser as a thread------以线程运行
- 6.线程和进程区别(6个用户)
- 按照进程跑:任务管理器中(mmdrv.exe)有6个进程
- 优点:进程独立运行,不发生抢占资源
- 缺点:耗费资源
- 按照线程跑:任务管理器中(mmdrv.exe)有1个进程,在1个进程中有6个线程
- 优点:节省资源,CPU内存
- 缺点:彼此抢占资源,导致有些线程会失败
4.4 Add Group:添加代码
4.5 Vusers----Add Vusers:添加用户