定义:性能测试是通过测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。验证被测系统是否能够达到期望的性能指标,发现被测系统存在的性能瓶颈,进而加以优化。
作用:
❑ 验证系统在给定的条件下处理性能是否达到设计目标与用户要求
❑ 探测系统在给定的条件下极限处理能力
❑ 通过对系统各参数的调整,测试系统的最优性能配置
❑ 通过性能测试发现功能测试难以发现的缺陷
jmeter分布式压测:指将需要模拟的大量并发用户数分发到多台压力机,使jmeter拥有更大的负载量,满足真实业务场景(高并发场景)。可以理解为通过一个Jmeter控制台来远程控制多个Jmeter引擎(压力机、负载机、执行机)完成测试。
基准测试:
也是单用户测试,测试环境确定以后,对业务模型中的重要业务做单独的测试,获取单用户运行时的各项性能指标,为多用户并发测试和综合场景测试等性能分析提供参考依据
负载测试:
关注在一定负载下,系统的一系列指标的状况。简单理解:在一定业务场景下,已知负载大小,求环境和系统响应指标。
并发测试:
广义的并发的含义是:同时,意思是在某个工作期间内有同时存在动作(可以不一样)即可;狭义的并发:即时。意思是瞬时执行同一个动作,参考LR中的集合点。
压力测试:
可看做容量的特例,其条件下系统被定义为极限工况或不能正常工作,求此条件下的最大负载。关于压力的共识:其条件下系统工作不正常,宕机或失去响应或大面积失效等。
容量测试:
关注在一系列指标(要求下),系统可支持的负载大小(被称为容量)。简单理解:在一定业务场景下,已知环境和响应要求,求适合的负载大小。关于容量的一般共识:在其条件下系统是正常工作的 。
稳定性测试:
关注在一系列指标下,系统保持工作能力(关键指标的波动和趋势)的情况。简单理解:在一定业务场景下,已知环境、负载、响应的,试验长时间下工作保持能力。关于稳定性:一定是长时间的,通常是8小时、12小时、24小时以及更长……
Tps(每秒事务数):
衡量系统处理能力的指标,是单位时间内完成工作的度量。它是LR中重要的性能参数指标。
点击率:
针对web应用的指标,即每秒用户向web服务器提交的http请求数。
吞吐量:
每秒钟系统能够处理的请求数、任务数,单位时间内网络上传输的数据量。并发时候的重要指标。
错误率:
一批请求中结果出错的请求所占比例。
并发用户数:
反应系统负载压力的大小。区别以下概念:1. 系统用户数2. 在线用户数3. 并发用户数。
资源利用率:
反应系统处理能力指标。1. CPU占用率:Windows<95%, Unix <85%2. 内存可用数: <10%或<4M,说明内存太小,或有内存泄漏3. 内存页交换率:page in/s <804. CPU的队列长度:一直超过二,处理器可能阻塞,服务器CPU可能是瓶颈。
平均响应时间:
所有请求的平均响应时间,取平均值。
事务响应时间:
事务是一系列请求的组合。例如商品下单。
请求响应时间:
反应系统处理效率的指标。指Client发出请求到得到响应的整个过程所经历的时间。
一、准备工作
1、系统基础功能验证
性能测试在什么阶段适合实施?切入点很重要!一般而言,只有在系统基础功能测试验证完成、系统趋于稳定的情况下,才会进行性能测试,否则性能测试是无意义的。
2、测试团队组建
根据该项目的具体情况,组建一个几人的性能测试team,其中DBA是必不可少的,然后需要一至几名系统开发人员(对应前端、后台等),还有性能测试设计和分析人员、脚本开发
和执行人员;在正式开始工作之前,应该对脚本开发和执行人员进行一些培训,或者应该由具有相关经验的人员担任。
3、工具的选择
综合系统设计、工具成本、测试团队的技能来考虑,选择合适的测试工具,最起码应该满足以下几点:
①支持对web(这里以web系统为例)系统的性能测试,支持http和https协议;
②工具运行在Windows平台上;
③支持对webserver、前端、数据库的性能计数器进行监控;
4、预先的业务场景分析
为了对系统性能建立直观上的认识和分析,应对系统较重要和常用的业务场景模块进行分析,针对性的进行分析,以对接下来的测试计划设计进行准备。
二、测试计划
测试计划阶段最重要的是分析用户场景,确定系统性能目标。
1、性能测试领域分析
根据对项目背景,业务的了解,确定本次性能测试要解决的问题点;是测试系统能否满足实际运行时的需要,还是目前的系统在哪些方面制约系统性能的表现,或者,哪些系统因素导致
系统无法跟上业务发展?确定测试领域,然后具体问题具体分析。
2、用户场景剖析和业务建模
根据对系统业务、用户活跃时间、访问频率、场景交互等各方面的分析,整理一个业务场景表,当然其中最好对用户操作场景、步骤进行详细的描述,为测试脚本开发提供依据。
3、确定性能目标
前面已经确定了本次性能测试的应用领域,接下来就是针对具体的领域关注点,确定性能目标(指标);其中需要和其他业务部门进行沟通协商,以及结合当前系统的响应时间等数据,确定
最终我们需要达到的响应时间和系统资源使用率等目标;比如:
①登录请求到登录成功的页面响应时间不能超过2秒;
②报表审核提交的页面响应时间不能超过5秒;
③文件的上传、下载页面响应时间不超过8秒;
④服务器的CPU平均使用率小于70%,内存使用率小于75%;
⑤各个业务系统的响应时间和服务器资源使用情况在不同测试环境下,各指标随负载变化的情况等;
4、制定测试计划的实施时间
预设本次性能测试各子模块的起止时间,产出,参与人员等等。
三、测试脚本设计与开发
性能测试中,测试脚本设计与开发占据了很大的时间比重。
1、测试环境设计
本次性能测试的目标是需要验证系统在实际运行环境中的性能外,还需要考虑到不同的硬件配置是否会是制约系统性能的重要因素!因此在测试环境中,需要部署多个不同的测试环境,
在不同的硬件配置上检查应用系统的性能,并对不同配置下系统的测试结果进行分析,得出最优结果(最适合当前系统的配置)。
这里所说的配置大概是如下几类:
①数据库服务器
②应用服务器
③负载模拟器
④软件运行环境,平台
测试环境测试数据,可以根据系统的运行预期来确定,比如需要测试的业务场景,数据多久执行一次备份转移,该业务场景涉及哪些表,每次操作数据怎样写入,写入几条,需要多少的
测试数据来使得测试环境的数据保持一致性等等。
可以在首次测试数据生成时,将其导出到本地保存,在每次测试开始前导入数据,保持一致性。
2、测试场景设计
通过和业务部门沟通以及以往用户操作习惯,确定用户操作习惯模式,以及不同的场景用户数量,操作次数,确定测试指标,以及性能监控等。
3、测试用例设计
确认测试场景后,在系统已有的操作描述上,进一步完善为可映射为脚本的测试用例描述,用例大概内容如下:
用例编号:查询表单_xxx_x1(命名以业务操作场景为主,简洁易懂即可)
用例条件:用户已登录、具有对应权限等。。。
操作步骤:
①进入对应页面。。。。。。
②查询相关数据。。。。。。
③勾选导出数据。。。。。。
④修改上传数据。。。。。。
PS:这里的操作步骤只是个例子,具体以系统业务场景描述;
4、脚本和辅助工具的开发及使用
按照用例描述,可利用工具进行录制,然后在录制的脚本中进行修改;比如参数化、关联、检查点等等,最后的结果使得测试脚本可用,能达到测试要求即可;
PS:个人而言,建议尽量自己写脚本来实现业务操作场景,这样对个人技能提升较大;一句话:能写就绝不录制!!!
四、测试执行与管理
在这个阶段,只需要按照之前已经设计好的业务场景、环境和测试用例脚本,部署环境,执行测试并记录结果即可。
1、建立测试环境
按照之前已经设计好的测试环境,部署对应的环境,由运维或开发人员进行部署,检查,并仔细调整,同时保持测试环境的干净和稳定,不受外来因素影响。
2、执行测试脚本
这一点比较简单,在已部署好的测试环境中,按照业务场景和编号,按顺序执行我们已经设计好的测试脚本。
3、测试结果记录
根据测试采用的工具不同,结果的记录也有不同的形式;现在大多的性能测试工具都提供比较完整的界面图形化的测试结果,当然,对于服务器的资源使用等情况,可以利用一些计数器或
第三方监控工具来对其进行记录,执行完测试后,对结果进行整理分析。
五、测试分析
1、测试环境的系统性能分析
根据我们之前记录得到的测试结果(图表、曲线等),经过计算,与预定的性能指标进行对比,确定是否达到了我们需要的结果;如未达到,查看具体的瓶颈点,然后根据瓶颈点的具体数据,
进行具体情况具体分析(影响性能的因素很多,这一点,可以根据经验和数据表现来判断分析)。
2、硬件设备对系统性能表现的影响分析
由于之前设计了几个不同的测试环境,故可以根据不同测试环境的硬件资源使用状况图进行分析,确定瓶颈是在数据库服务器、应用服务器抑或其他方面,然后针对性的进行优化等操作。
3、其他影响因素分析
影响系统性能的因素很多,可以从用户能感受到的场景分析,哪里比较慢,哪里速度尚可,这里可以根据2\5\8原则对其进行分析;
至于其他诸如网络带宽、操作动作、存储池、线程实现、服务器处理机制等一系列的影响因素,具体问题具体分析,这里就不一一表述了。
4、测试中发现的问题
在性能测试执行过程中,可能会发现某些功能上的不足或存在的缺陷,以及需要优化的地方,这也是执行多次测试的优点。
如下图
六:Lre系统使用
性能测试工具(LRE)和loadrunner简单使用过程。
这里有个人对于LRE的使用过程以及过程仅限参考(如果想了解更细请去官方文档)
1.怎么登录
打开浏览器输入网址:http://122.228.43.234:30080/LRE/ 进入登录页面
输入用户名和密码(账号fanweimin 密码123456)仅限用户体验使用 点击身份验证 可以选择中文或者英文
点击登录进入使用界面
2.怎么进入测试管理
打开仪表盘,点击测试管理
3.怎么新建脚本
新建一个脚本文件夹,在自己命名文件夹里右键新建一个测试脚本
4.怎么管理测试集
输入名称,分配测试集,选择工作负载与计划类型(按数值/百分比)
5.怎么编辑测试集
在这里点击文件夹图标,新增文件名,然后点击加号并确定
点击加号
6.怎么新建负载类型
数值:
百分比:
7.怎么录制脚本
打开loadrunner软件后,界面如下,通过左上角的菜单,我们来新建一个脚本
这里用Web项目为例子,来录制一个HTTP协议的脚本
首先准备一个脚本名,指定一下脚本要保存在什么位置,然后点击create
点击图中的“录制”按钮,开始录制脚本
填写测试地址,然后点“开始录制”
通过“停止”按钮,可以结束我们的录制
最后我们就录制完成一个脚本,保存完成之后可以在lre运行哦
8.怎么上传脚本
在脚本文件夹下右键点击上传脚本
9.怎么分配脚本组
双击进入测试集编辑页面
10.怎么分配负载机
11.怎么分配运行时间
取消箭头勾选框,右侧编辑运行时间和vuser
12.怎么配置监听器
点击资产按钮,点击监控器
13.怎么保存并运行脚本
选择整理和分析结果,并点击运行按钮
14.怎么查看最终结果