概念
性能测试: 功能是否能做 ,性能是做的如何,怎么样?
并发 :同时访问一个功能 ,一个操作或一个服务器
响应时间 :快慢问题
需求 : 响应时间不超过3s
验证 :验证预期结果是否达到性能需求的要求
工作原理
Vugen生成脚本,由Controller将脚本分发到每台压力机上, 压力机模拟虚拟用户向服务器发送请求,服务器接收请求, 作出相应的响应,Controller监控整个过程服务器的指标, 最后生成报告发送给analysis
录制脚本过程 :
开始-->HP LR-->virtual user generator -->new
新建脚本选择网络协议
2.1如何选择协议
通过抓包工具抓取
查看性能需求文档
查看接口文档
询问开发
凭经验-web-http
2.2 单协议脚本
2.3 多协议脚本
录制框选择
3.1 选择被测系统的类型 :
-浏览器 -非浏览器
3.2 录制时采用的浏览器
-IE : 7,8,9,10
-Firefox : C:\Program Files(x86)\HP\LoadRunner\bin\firefox\firefox.exe(LR自带,最好将自己高版本firefox卸载)
3.3 被测服务器地址-图
3.4 设置录制选项
3.4.1 General----Recording
HTML-based script :
(1) weblink、websubmit_form(示范) 依赖上下文关系 ; 编写规则:
(2) weburl、websubmit_data(示范) 不依赖上下文关系编写规则: ;
URL-based script
抓取全部的http请求,适合基于非浏览器的脚本录制
LR脚本开发
LR脚本增强
录制脚本参数化
步骤:
1、首先确定脚本中需要参数化的对象/数据(变化的)
2、选中目标数据,右击选择
3、填写参数名称,点击确定
4、右键再点击选择参数属性或按下ctrl+L(右上角的P)打开参数设置界面,增加或修改数据,可点击进行编辑,设置参数取值策略(默认)
注意:参数化文件中的测试数据最后一行不能有空行
5、迭代次数设置: 50次
总结 :
参数化核心 :1.参数 2.修改运行次数
检查点
;
注册检查点
(1)打算要检查什么告诉脚本, 脚本先声明变量把要检查的东西放进去, 如果在下面的响应中出现就找到了, 找到的次数也会记录。
(2)放在要检查的请求前面就行
什么时候要加检查点
验证业务逻辑
登陆是否登陆上 200-登陆不成功状态响应码也200
不加
LR验证协议状态响应码如果是200就通过 200:只要有响应就是200
登陆成功不成功,检查点区别出现
不重要
性能关心是吞吐量,只要吞吐量没有大变化,数据是否正确不太关心
实际操作 :
插入检查点函数 ;
insert ->new step 插入检查点函数: ;
检查点参数化 ;
总结 :
检查点核心 :
1.检查点函数 ;
2.参数化
3.一定要放在 注册事件函数之前 可以在注册函数之后}
以上代码:
事物
为了记录响应时间 ;
① 开始事物
lrstarttransaction("xxx_");
② 结束事物
//添加结束事物, 时间结尾值减去时间开始值,就是中间经历的响应时间
③ 检查点
注意事项:
不要把开始时间放在思考时间和检查点外面, 要放在具体的action之间
思考时间
函数名 :
-模拟真实
-等待加载
-不加-测试最大压力
关联 (session)
Tree视图 :
背后做了三件事:
注册 session函数
Usersession 参数参数化
查找session函数放置的位置很重要(和检查点有点类似)
场景设计(前脚本要满足的条件)
脚本回放没问题
加参数化
可以加检查点
检查点的参数化
4. 加事务
开始
结束
5. 如果需要关联加关联
注册没有关联 ,
登陆脚本有关联,
订票脚本没有session .
LR配置及选项
run-time settings
(一):Run logic
如何模拟实现真实网站在运行时不同的人访问不同的模块?* 用户建模 *
int
action
random 设置随机概率 , 概率总和必须为100%
Block(代码块): 让脚本更加灵活,可单独设置某 几个脚本的运行规则
针对Run和Block都有properties属性设置 - sequential 设置运行顺序
end
(二):pace步长
(三):Log
如果用户有10个,怎么能从日志中看出哪个用户登录? 如何看出参数的替换的变化值,怎么看到服务器响应的数据?
扩展日志打钩可以看到登录的用户—log
runtimesetting-log--expand log
(1) Enable logging启用日志
log options:
当错误出现时发送日志
始终发送日志
标准日志
扩展日志
(四):其他
进程与线程 ???
一个程序一般一个或多个进程,一个进程包含一个或多个线程 ,进程消耗资源大,线程小 ,选择线程可以多加几个虚拟用户
录制选项
Html : WEB基本选择这个选项 , 包含明确的URL脚本---走底层协议,请求
URL : 如果页面上面有 , ,等,回放不成功,可能需要选择这个录制。
general option常规选项
(1)录制选项选择
Html : WEB基本选择这个选项 , 包含明确的URL脚本---走底层协议,请求
URL :
如果页面上面有js,ajax,等,回放不成功,可能需要选择这个录制。
(2)解决乱码问题
实践
任务:录制登陆脚本,参数化,关联,检查点,及检查点的参数化,添加事务开始与结束,进行场景设计:找到本机并发登陆最大的临界点,场景策略中日志策略为只有错误才打日志,思考时间策略是忽略思考时间,执行的策略,先是10人,20,。。。50人,70人,等。将最高一次并发保存场景结果并生成分析报告。
场景计划策略,每10秒中上去5个人,持续5分钟,每10下来10个人。
生成报告 13张,包括window的资源加上。
LR场景设计监控
设计
进入方式 ,场景分类;
设计场景
(0) 场景组脚本
(1) 设置用户负载方式
(2) 基本练习
(3) 如何实现这两张图的效果?
场景设计策略
SLA(服务水平协议)
压力机
场景时运行时设置策略
截图 :
异常情况解决
原理扩展
运行
(1) 状态
(2) 监控界面显示的表
运行结果的调整和分析
信息
分析与调整
超时-第一步调优,放开超时时间
分析报告
常用的13项指标截图
.性能指标及原理
响应时间
吞吐量
资源利用率
总结:
. 每个图表分析
概要报告
要加图的顺序和个数
running vusers
错误图
TPS-重要的性能指标之一
Hits
connection
硬件资源
web
. 分析与定位过程
按顺序看图将每个图中有问题的部分标记下来
我们从图中的标记的得到一些信息
submit分析报告
分析原则
webTours项目的性能测试过程
常见问题 :1. 录制弹框无法打开浏览器
指定浏览器的位置, 选择loadRunner自带的浏览器
2. UTF-8解决乱码问题
HTTP Properties—Advanced Support Charset UTF-8
3. 如果没有事件
把类似代理的全部关闭
浏览器代理需要设置回自动蓝灯关闭
4. IE不能启动
检查杀毒软件是否关闭
检查IE版本是否是8/9/10
更换为火狐浏览器(自带)
如果始终解决不了,放弃录制,选择手写脚本
5. 更换 submit_data函数
6. 查看图片器View->test result 查看报告 , 日志
7. 点击录制无响应
方法一:
设置浏览器点工具--Internet选项---高级,把“启用第三方浏览器扩展”去掉,保存。
方法二:
右击我的电脑,选择“属性”,进入“高级”选项卡页面,点性能处的“设置”按钮,选择“数据执行保持”,添加两个程序:IE和vugen.exe.
1)添加IE。点添加按钮,选择IE的安装路径。如我的是C:\Program Files\Internet Explorer\InternetExplore (浏览器看个人喜好选择就行)
2)添加vugen.exe。点添加按钮,选择vugen.exe的安装路径。如我的是
D:\Program Files\HP\LoadRunner\bin\vugen.exe
8. 注册函数
9. 登录函数
10. http高级选项
录制请求头 :
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1
11. Loadrunner Controller运行不了,提示cannot create Vusers
执行场景时显示: Loadrunner Controller cannot create Vusers.Ensure that your load generators are available and that your scripts are valid.
解决:在设置场景页面的第一个模块里有个属性列为Load Generators,点击后下面会显示有一个add,点击add,添加Name:localhost (一般为本机IP),点击OK就可以运行了
12. 关于解决LoadRunner中Controller里面Scenario菜单下的Rendezvous还是灰色,不能被选择
出现如下问题, Rendezvous还是灰色:
出现这个问题的原因是在录制脚本或自己编写脚本的时候,没有插入“集合点”(只有在对应的VU脚本中插入集合点之后,该按钮才能被选择)。
解决办法有两种:
1、录制脚本过程中插入集合点,这样在录制完成后会自动在代码中插入集合点。 2、利用函数lr_rendezvous("xx"),手动在代码中插入集合点;
集合点插入成功后,Remove之前的用户组,重新添加你修改过的用户组脚本,这时候你就看到Controller里面Scenario菜单下的Rendezvous变为可选
13. server setting
14. 专家模式
15. 修改配置,压力还是无法增大
END
领取专属 10元无门槛券
私享最新 技术干货