一. 性能测试分类
负载测试:负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担。
压力测试:是在一定的负荷条件下,长时间连续运行系统给系统性能造成的影响。
并发测试:主要指当测试多用户并发访问同一个应用、模块、数据时是否产生隐藏的并发问题,如内存泄漏、线程锁、资源争用问题,几乎所有的性能测试都会涉及并发测试。
配置测试:配置测试是指使用各种硬件来测试软件运行的过程。
可靠性测试:可靠性测试也称可靠性评估,指根据产品可靠性结构、寿命类型和各单元的可靠性试验信息,利用概率统计方法,评估出产品的可靠性特征量。
二. 性能测试指标
并发用户数:并发用户数量,有两种常见的错误观点。一种错误观点是把并发用户数量理解为使用系统的全部用户的数量,理由是这些用户可能同时使用系统;还有一种比较接近正确的观点是把用户在线数量理解为并发用户数量。
响应时间(等待时间+执行时间):不包含浏览器渲染的时间,浏览器的解析时间。
单位时间内完成事务的数量,单位时间事务数-TPS(一小时内理发师服务的用户数量)。
随着并发用户数的增加,单位时间内处理的事务数也会增加,达到一定的压力时事务数不再增加,会是一个不变的值,这样用户等待的时间就会延长。
- 资源利用率:服务器的资源利用率。
- CPU利用率:不允许超过70~80%、队列长度,队列越长CPU利用率越大。
- Mem利用率:80%以下、页交换频率。
- 带宽利用率:服务器带宽利用率。
- 吞吐量:服务器的处理的能力Throughput。
- PV和UV:PV(page view)页面访问量,每日每个网站的总PV量是形容一个网站规模的重要指标。UV用户访问量,作为一个独立的用户,访问站点的所有页面均算作一个UV。
三. 性能测试流程
测试对象:
常用的、核心的、重要的、数据量的业务流程;确定性能指标:并发用户数、TPS、吞吐量、资源利用率。
采用28原则,80%的用户请求,都会在集中在20%的热点数据上,或者是在某个时间段内。
如:每天8小时系统支持500万用户访问,计算出每秒系统的访问量。
采用28原则,每天500万的访问量集中在80%的有效请求上:
5000000*0.8=4000000;
400万的访问量集中在20%的时间段内:
8小时*0.2=1.6个小时,也就是集中在1.6个小时内;
4000000/1.6=2500000,计算出1小时有2500000访问量
再计算出1秒内有多少访问量:
2500000/3600=694,有694次访问量,
要是算平均值的话:
5000000/8/3600=173,与694差4倍左右,一般情况下平均值和最大并发数差4倍左右。
测试场景:
1)单一场景:比如只是登录、支付、下单等的场景。
2)组合场景:比如模拟用户下单支付的场景。
测试计划:
测试目标、测试人员组织、压测进度安排、压力机(配置、要求、数量)、风险。
测试方案:
测试工具:loadrunner、jmeter
测试环境:数据库、服务器、架构设计、有条件的情况下尽量和生产环境一致
测试策略:单一场景、混合场景
监控工具:
linux:nmon、rpc、jvisualVM、Spotlight
windows:Spotlight、perfmon.exe
用例设计:
基于场景的用例设计、基于脚本的测试用例设计。
测试执行:
脚本编写、场景监控设计、运行场景、监控场景、测试报告
定位分析问题:
后端(服务器,代码、软件、硬件)、前端、网络。
四. LoadRunner参数化
1)唯一性参数。
建两个参数文件:
脚本中用大括号括起来参数名称:
在运行时设置中设置迭代次数为2。
点击回放,查看执行结果。
查看测试结果有两个迭代:
把其他的代码注释掉,只打印参数值:
lr_output_message(lr_eval_string("{username}"));
lr_output_message(lr_eval_string("{password}"));
设置参数unique,有2个参数,设置3个迭代(username与password同样设置)。
Continue in a cyclic manner从头开始选中值(username与password同样设置)。
Abort Vuser中断执行(username与password同样设置)。
2)随机参数。
脚本如下:
选择每次迭代都不一样,总共有2处调用参数的地方,迭代2次,每次迭代里有2条数据是不一样的:
选择每次迭代都一样,总共有2处调用参数的地方,迭代2次,每次迭代里有2条数据是一样的:
选择once,只获取一回,总共有2处调用参数的地方,迭代2次,每次迭代里有所有数据是一样的:
3)时间格式参数。
可以设置偏移量,从下一天开始取值:
4)唯一编码。
5)从数据库中获取参数数据。
a)添加mysql数据源步骤:
下载地址:https://dev.mysql.com/downloads/connector/odbc/
根据自己的电脑是32位还是64位下载不同的版本。
下载成功后直接点击下一步安装就可以。
在安装完成后要从控制面板的管理工具去添加数据源,控制面板要调成大图标或者小图标才能看到管理工具:
点击进入选中64位的点击打开:
回到loadrunner的参数列表中:
点击数据向导:
选中之后会看到连接字符串仍为空,是因为loadrunner不支持64位的mysql。
再次下载mysql ODBC 32位的再安装,步骤同上。
在loadrunner参数列表数据向导中就可以直接添加数据源,之前看不到是因为不支持。
但是数据库有更新loadrunner这边不会更新的,还不如直接在数据库中查询之后粘贴到loadrunner的参数中。