LoadRunner(2)
一、性能测试的基本概念
1、并发和在线的区别:并发的压力是一种瞬时压力,一般针对同一类型业务;在线的压力是一段时间的压力,没有并发那么集中。
规律:一般20用户并发产生的压力相当于200用户在线的压力(近似1:10的比例)
制定性能测试计划,作为参考,比如设计的在线用户数最多10000个,建议最多测试1000~2000用户的并发。
(并发测试)
对比:两种常用性能测试策略(面试题)
并发测试:严格的并发、瞬时压力 1000~2000人并发
在线综合场景测试:日常在线的压力 10000人在线
2、请求响应时间 = 客户端时间 + 网络时间 + 服务器时间
被测系统 SUT
__________________________________
Client --网络-- Web Server --网络-- DB Server
请求Request ---1--> 处理 ---2---> 增删查改 SQL
响应Response <--4--- <---3----
常用方法:排除法
Internet: 互联网/广域网
Intranet: 内联网/局域网 一般速度更快
建议1:可以通过内网测试规避掉网络的问题,客户端一般不会成为性能瓶颈(客户端性能问题一般出现在JavaScript程序--Web前端动态技术,比如客户端验证等),所以大部分情况下,如果请求响应时间长,性能瓶颈出现在服务器端;
建议2:Web服务器和数据库服务器最好分开部署(分布式),既可以让负载(压力)更加均衡,又可以便于LR对系统资源的监控。
3、事务响应时间:用户完成某个具体操作(动作)所需的时间。 Transaction Response Time
事务也称为交易
比如:登录、订票、转账、抢红包 都可以是一个事务
一个事务范围内很可能包含多个请求,包含了若干个请求响应时间的综合效果。
4、点击率:Hits Per Second 越大,对服务器压力越大
含义:每秒钟用户向Web服务器提交的HTTP请求数。
不是指鼠标点击的次数,比如:点击一个超级链接,服务器返回一个页面,页面中包含了5个图片,则当前发起的点击数(请求数):1+5 = 6个 Http请求
因为:<img src="图片的资源路径名"/>
自动向服务器发起请求,获取图片的响应
目前录制脚本使用:Web[HTTP/HTML] 协议
Web: 就是使用浏览器访问服务器的一种方式、技术 B/S
采用HTTP协议通信、在响应返回结果中带有HTML源代码
HTTP: 超文本传输协议
HTML: 超文本标记语言 网页语言、浏览器解释的语言
形式:*.html 或 *.htm 文本文件
编辑文本、标签(标记)等表示页面的元素
<html> 根标记 头
<head> 头
<title>浏览器标题</title>
</head>
<body> 主体 浏览器正文部分
文本、其它标签表示不同页面元素
</body>
</html> 根标记 尾
5、吞吐量:Throughput
含义:用户在任意给定一秒从服务器获取的全部数据量,单位是字节Byte,累计时间的全部数据量。
吞吐率:吞吐量 / 测试时间 单位:Byte/sec 体现效率
每秒字节数
TPS: Transaction Per Second 每秒事务数
比如:一般系统TPS达到50个、100个 不错了
好的系统天猫双十一 峰值TPS:
2016: 12万
2017: 25万
6、请求和响应:都遵循Http协议
Http Request: 客户端向服务器发请求
Http Response: 服务器向客户端返回响应(应答)
7、系统资源利用率:一般指系统中CPU、Memory内存、Disk磁盘、Network网络等主要资源的使用情况。
CPU中:%Processor Time CPU忙的时间的百分比
CPU使用率 70~80%
(yu4)阈值:超过该值容易出现性能瓶颈
二、熟悉三大组件基本协作关系
需求:测试用户登录在8个用户访问时的性能情况
关注性能指标:平均事务响应时间、TPS、点击率...
<3秒
其它:脚本:login 账户:jojo和bean
VU数:8个
用户加载方式:每隔2秒加载1个VU
运行持续时间:所有VU运行完脚本
1、使用VuGen录制login
对脚本进行增强:添加事务 login
录制、调试、回放通过才能使用
D:\work\script\day02\login
注意:如果脚本修改过了,一定要保存并编译,才是最新版本!
2、使用Controller 设置场景 Scenario
开始 -> 所有程序 -> HP LoadRunner -> Applications-> Controller
默认使用场景类型:手工场景 Manual Scenario
将Use the Percentage Mode to... 去除打钩
目的:VU数量的分配目前不用百分比方式,采用具体人数
-> Browse按钮 选择脚本 day02\login -> OK
-> 场景设置界面:
-> 设置8个VU: Run Mode中选择Basic Schedule
将Quantity 改为8 VU数量
-> 设置VU的行为:
1)Initialize: VU初始化,默认运行前初始化
好比:运动员的热身活动
2)Start Vusers: VU的加载方式,何时启动VU
Start all Vuser simultaneously 同时
默认同时加载8个VU
需求:每隔2秒加载1个VU 递增效果
双击 -> 改为:1 Vusers every 00:00:02(HH:MM:SS)-> OK
关注Schedule Graphics 计划预览图
横坐标:Time 测试时间 纵坐标:Vuser 虚拟用户数
锯齿状:每隔2秒加载1个VU
虚线:运行时间 不确定
3)Duration: 运行持续时间
<1> Run until completion 运行直到结束(脚本结束)选择
<2> Run for __ days and __(HH:MM:SS) 具体运行多久
<3> Run indefinitely 无限运行,直到手工停止
建议及时保存场景文件: ctrl+s
C:\work\scenario\day02\8VU_login *.lrs Scenario
说明:目前暂时忽略Windows Resources 系统资源监控
后续统一添加
设置好场景,可以运行场景:Start Scenario 按钮
-> 从Desion视图 切换到 Run视图
设计 运行
如果运行场景出错,要查看错误信息 Details 详细描述:
脚本 12行 错误 连接服务器失败
Action.c(12): Error -27796: Failed to connect to server "localhost:1080": [10061] Connection refused 连接被拒绝
原因:服务器未开启 或 服务器停止运行
3、点击控制台Run视图中,倒数第3个按钮
打开Analysis 结果分析器
Report 报告
Summary Report 总体报告
重点分析事务:
Transaction Name Minimum Average Maximum
Std. Deviation 90 Percent Pass Fail Stop
事务名 最小 平均 最大 标准方差 90%时间 通过 失败
login 0.409 0.512 0.811 0.142 0.811 8 0 0
重点关注平均事务响应时间:0.512s
如果性能需求中规定时间不能超过3s,目前符合需求
最小、最大值作为参考
Std. Deviation 标准方差:0.142 查看稳定性的依据
规律:越接近于0,说明不同结果值越接近,说明系统运行越稳定。
90%时间:绝大部分VU在该时间内完成,辅助分析
通过率:100% 功能不能模拟实现,性能结果无法生效
事务错误率一般控制在0.3%以内:
1000个事务,如果出错了3以内,可以接受
HTTP响应状态码:(面试题:列举出常见的)
Response Status Code
不同响应码表示不同的响应状态
2xx 成功
3xx 重定向(正常)
4xx 客户端错误
5xx 服务器端错误
200 OK 表示服务器成功返回响应
302 重定向响应(是一种正常的技术手段)
404 客户端问题:资源找不到 比如访问地址不对
500 服务器问题:服务器端程序有错误、异常
Error 错误
Exception 异常 XxxException
ArrayIndexOutOfBoundsException
数组下标越界异常
int[] arr = {1,2,3,4,5}
0 1 2 3 4
arr[-1] arr[5] 正常下标 0~4
Graphs 图表
Running Vusers 正在运行的虚拟用户数
Hits per Second 点击率
Throughput 吞吐量
Transaction Summary 事务摘要
Average Transaction Response Time 平均事务响应时间
技巧:合并图比较 右击A图 -> Merge Graph -> 选择B图
练习:将点击率 和 吞吐量 合并
规律:趋势相当,点击率是起因,吞吐量时结果,点击率提高了,在正常范围内吞吐量也会提高,如果达到了性能瓶颈,就难以提高。使用拐点分析法找到性能的瓶颈,比如达到多少点击率时,吞吐量无法继续上升。
如何获取TPS? 添加新选项-> 新的图
右击Graphs -> Add New Item -> Add New Graph
-> 事务中 -> Trnasaction per Second 0.121
建议将结果文件保存:ctrl + s
D:\work\result\day02\8VU_login_r1 *.lra analysis
后续可以打开分析
练习题:熟悉LR三大组件的基本运行
测试计划:针对9个VU各完成一次购票操作
效果:9个VU为jojo账号一共订到9张票
1)使用VuGen录制buy脚本:关键有login、buy事务、录制完成了
2)使用Controller加载buy脚本
设置脚本组:组名默认、脚本路径、VU数 9个
VU行为:默认运行前初始化
每隔1s加载1个VU
运行直到结束
使用Run视图运行并监控,获取结果报告
3)使用Analysis关注几个重要性能指标:
平均事务响应时间、TPS、点击率
归纳:
1、脚本基本组成、读懂脚本和业务流程的对应关系
2、熟悉常见的概念:
事务、点击率、吞吐量、TPS...
3、熟悉LoadRunner三大组件基本协作关系
VuGen -> Controller -> Analysis
脚本 场景 结果
LoadRunner(2)的更多相关文章
- 老李分享:性能测试你不应该只知道loadrunner(1)
老李分享:性能测试你不应该只知道loadrunner(1) poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest测试 ...
- LoadRunner(三)——LR相关概念&组成部分
参考学习感谢:<精通软件性能测试与LoadRunner实战> 一.运行机制和主要组成部分 1.LoadRunner主要由VuGen.Controller和Analysis三部分构成: 2. ...
- LoadRunner(一)——性能测试基础及性能指标概述
参考学习感谢:<精通软件性能测试与LoadRunner实战> 一.典型的性能测试场景 某个产品要发布了,需要对全市的用户做集中培训.通常在进行培训的时候,老师讲解完成一个业务以后,被培训用 ...
- LoadRunner(8)
一.脚本关联技术 引入: 打开WebTours首页,点击administration连接: 具有大量管理项,LR为了模拟一些特效设置的选项,实际项目中不存在. -> 选择第三项: Set LO ...
- LoadRunner(4)
一.LoadRunner工具的组成 1.VuGen 虚拟用户脚本生成器 脚本好比:武器 VuGen好比:兵工厂 VU好比:士兵 2.Controller 压力调度控制台 好比:总指挥部 3.Analy ...
- LoadRunner(1)
性能测试:HP LoadRunner11 一.初步概念: 1.功能测试:测试产品的功能是否满足功能需求. 如:ATM取款(在线取款)是否成功或转账操作是否成功 -- 一个用户 2.性能测试:测试产品的 ...
- LoadRunner(7)
一.参数化策略 1.Select next row(How? 如何取?)取值方式 选择下一行 1)Sequential:顺序的 每个VU都从第一行开始,顺序依次向下取值: 数据取完可以从头循环重复使用 ...
- LoadRunner(6)
一.脚本录制技术细节 1.选择合适的协议: 1)B/S架构:常用Web[HTTP/HTML]协议,如果项目中使用了其它技术,比如Ajax.JDBC.FTP等,就需要选择多协议: 2)C/S架构:常用W ...
- LoadRunner(5)
一.在线综合场景测试:号称能更真实模拟实际生产环境 又称为:混合交易测试 (交易就是事务 Transaction) 1.三要素: 1)多用户:根据需求指定VU数 压力的来源 2)多任务:根据需求结合多 ...
随机推荐
- POJ3259 Wormholes 【spfa判负环】
题目链接:http://poj.org/problem?id=3259 Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submis ...
- [bzoj3060][Poi2012]Tour de Byteotia_并查集
[Poi2012]Tour de Byteotia 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3060 题解: 这类题有一个套路,就是 ...
- 三维空间建模方法之LOD模型算法
什么是LOD LOD也称为层次细节模型,是一种实时三维计算机图形技术,最先由Clark于1976年提出,其工作原理是: 视点离物体近时,能观察到的模型细节丰富:视点远离模型时,观察到的细节逐渐模糊.系 ...
- [转帖]yaml语言格式
yaml语言格式 YAML是"YAML Ain't a Markup Language"(YAML不是一种标记语言),强调这种语言以数据做为中心,而不是以置标语言为重点. 转载2篇 ...
- 报表工具ActiveReports开发实例——物联网智能供水云平台
一.公司简介 山西汾西电子科技股份有限公司(以下简称:汾西电子)是经中国船舶重工集团批准,在原汾西重工电子科技公司基础上重组的专业从事智能电能表.水表.热量表及电动汽车充电设备研发生产的高科技公司. ...
- 基于DBMS_METADATA.GET_DDL函数批量导出索引的创建语句
/* 首先要说的DBMS_METADATA.GET_DDL是个好函数呀!新项目不知道哪个缺心眼建的同构库,只是见了表结构,并没有健非主键外的索引,领导让追加一版,以前只是会用视图拼sql创建,今天有学 ...
- Proxy 和aop
Proxy 就是代理,意思就是 你不用去做,别人代替你去处理 先来个静态代理 public interface Hello { void say(String name); } 被代理类 public ...
- Python【列表 字典 元组】
列表列表用中括号[ ]把各种数据框起来,每一个数据叫作“元素”.每个元素之间都要用英文逗号隔开各种类型的数据(整数/浮点数/字符串)————————————————————————————从列表提取单 ...
- [http]HTTP请求过程
我们在浏览器输入http://www.baidu.com想要进入百度首页,但是这是个域名,没法准确定位到服务器的位置,所以需要通过域名解析,把域名解析成对应的ip地址,然后通过ip地址查找目的主机.整 ...
- HTTP的请求方法
. OPTIONS - 获取服务器支持的HTTP请求方法: 用来检查服务器的性能.如:AJAX进行跨域请求时的预检,需要向另外一个域名的资源发送一个HTTP O ...