1.1 事务响应时间(平均事务响应时间)
何为事务?
在数据库中就是对数据库进行操作的sql语句(增、删、改、查)
操作:提交事务(commit)、回退事务(rollback)
在被测软件中就是业务操作,比如注册、登录、搜索、下单、支付等
组成:请求+响应
事务响应时间统计:从发送请求到接收到响应所消耗的时间
事务响应时间是最能反应服务器性能的指标之一,也是用户最关心的业务体验。
比如登录网站时,只消耗2s以内钟,用户体验是美好的。在2~5秒,用户体验是满意的,在5~8秒用户是勉强可以接收,超出8s用户就不太能接受,所以在进行性能测试时,需要监控对事务响应时间(Transaction Response Time)来分析服务器的瓶颈。
1.2、吞吐量
吞吐量:表示单位时间内能够完成事务数量或者处理事务的能力
1.3、TPS(transaction per second)
每秒钟系统能够处理的操作或者事务的数量,是衡量系统处理能力的重要指标
事务失败率 <3%
1.4、点击率
每秒用户向web服务器提交的http请求数。
点击率越大,对服务器的压力就越大,点击率只是一个性能参考的指标,重要的是分析点击率变化时产生的影响。
需要注意的是,这里的点击率并非指鼠标的一次单击操作,因为一次单击操作中,客户端可能向服务器发出多个 HTTP请求。
1.5、并发用户数
做并发测试时,考察服务器能负载(承受)多少用户数,并发用户数越大、服务器性能越好。一台服务器的并发用户数小于5000,建议2000~5000之间
1.6、服务器资源占有率
服务器资源占用率是指在负载、压力测试情况下,系统的资源利用率。资源占用越低,说明系统越优秀。例如,cpu占用率、内存使用率、磁盘I/O读写速率等
Cpu小于80%,内存小于80%、网络使用率小于30%,磁盘读写率小于40%
1)根据性能需求制定性能测试计划
2)根据性能测试计划设计性能测试用例(场景)
3)选择合适的工具来生成测试脚本(比如:lr录制性能测试脚本)
4)对测试脚本进行编辑、调试、增强
5)设置对应场景,监控测试场景,运行场景,收集测试数据
6)生成结果报告,分析性能瓶颈
7)提出系统调优方案
8)编写性能测试报告
分析的顺序:网络->硬件->软件->代码
【网络】网络上的性能瓶颈:
一般指的是防火墙、交换机等设备,在性能测试中,使用最大宽带。
【硬件】硬件上的性能瓶颈:
一般指的是CPU、内存、磁盘读写等的瓶颈,为服务器硬件瓶颈,
可以发钱购买设备来提高。
软件】软件上的性能瓶颈:
一般指的是服务器的操作系统瓶颈、数据库瓶颈、web服务器瓶颈等
操作系统:选择linux、unix
数据库:60%的性能瓶颈是来自数据库,所以数据库的优化是永恒主题
读写分离、分库分表、分布式集群等等
Web服务器:增长连接时间,缩短因断开再次连接的时间
【代码】应用程序代码上的性能瓶颈:
一般指的是开发人员开发出来的应用程序(如优化sql语句、业务逻辑精简、算法优化等),30%的性能瓶颈是来自代码的编写。
性能瓶颈原因定位十分复杂,需抽丝剥茧逐一排除
具体可以从几个方面来优化:
数据库方面(分布式,添加索引)
图片大小以及格式(jpg)
适当增加缓存
4.1 服务器端性能测试工具
Loadrunner、jmeter、QAload、performancerunner等等
4.2 Loadrunner介绍
概念:是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用 LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。
工作原理:录制-回放的工作方式
1、录制时:LoadRunner根据相关网络协议,记录下客户端和服务器二者之间的对话(请求包、应答包);
-- 使用真实的客户端浏览器:IE、firefox等等
2、回放时:LoadRunner模拟真实的客户端向服务器发起请求,并按照增强后的脚本去验证服务器的应答(检查点)。
组成:三大基本组件+3大扩展组件
A.虚拟用户生成器(脚本生成器):Virtual User Generator(VuGen 或 VUG)
作用:录制、调试、增强性能测试脚本以及回放脚本。
Ps:只能模拟1个用户完成业务的脚本生成,并增强脚本。
B.控制台:Controller
作用:创建场景、运行场景、监控场景,收集测试结果数据,好比总指挥部
Ps:可以设置多个用户,发起更大的负载或压力,一般一台pc机能承载2000用户
C.结果分析器:Analysis
作用:将测试数据以各种图表形式展示,便于分析性能情况,得出测试结果报告
4.3 Loadrunner使用
LR使用前的配置:
使用LR之前,修改浏览器配置(默认IE)
<1> 工具 -> Internet选项 -> 常规 -> 设置
-> 每次访问此页时检查
原因:当脚本更新时,能够及时适应
<2> 工具 -> Internet选项 -> 程序 -> 重置Web设置
原因:恢复录制时自动打开的浏览器为IE
<3> 工具 -> Internet选项 -> 高级
-> 去除 启用第三方浏览器扩展
原因:避免录制时的干扰
操作步骤:
主要分为以下5个步骤
1设置录制选项
2录制脚本
3脚本优化
4设置场景
5运行场景及查看报告
具体配置如下图所示,其中有些配置步骤可以用loadrunner默认的,不是必须项。
步骤详解
0 启动第一个组件:虚拟用户脚本生成器(VuGen)
开始菜单->所有程序->HPLoadRunner->Applications->Virtual User Generator
Ps:不要生成快捷方式
1.1在首页中的创建脚本,(脚本都要从创建新的开始,不支持补录)
1.2 选择协议
在新建虚拟用户窗口中,选择web(HTTP/HTML),点击创建:
1.3输入被测系统的url,设置录制选项
【要录制的程序】:打开url的浏览器,默认为IE,也可以改为其他浏览器
【URL地址】:需要进行测试的网址
【录制到操作】:初始化
录制的脚本分为三部分:(vuser_init 初始化 Action 核心业务 vuser_end 结束)
一般将登录操作录制到vuser_init中; 仅执行1次
将核心业务(如购票、查询线路)录到Action; 可执行n次
原因:Action功能强大,具备其它部分没有的功能,比如:参与迭代、设置并发等
将退出系统操作录制到vuser_end中; 仅执行1次
{三部分的顺序:先初始化init-再action-最后end}
2.1录制脚本
设置完点击"确定"后,会自动打开浏览器并定位到配置的url地址中。然后需要在浏览器中模拟用户的行为。{按照用例去录制}
在模拟用户行为完后,点击蓝色按钮停止录制,自动会生成脚本。
{录制脚本前需要先手动跑一遍}
2.2编译并回放脚本
【编译脚本】compile,在生成脚本后,点击编译脚本,如无语法报错,可以回放脚本。
【回放脚本】replay,模拟单用户,根据生成的脚本在浏览器中回放用户的行为,来验证是否符合要求。
【运行结果】result,查看结果以及回放脚本时,显示回放画面。
【保存文件】
新建三个子目录:
1)script 存放脚本文件
2)scenario 存放控制台的场景文件
3)result 存放结果分析文件
【脚本组成】
脚本语法:类C语法,C语言语法 + LoadRunner语法
vuser_init(){return 0;}
Action(){return 0;}
vuser_end(){return 0;}
4)globals.h 头文件 包含LR函数的声明
【脚本分析】
{每个脚本中包含了大量的LR函数}
LR函数一般以lr_或web_开头