写给自己看的性能测试学习笔记
性能测试基本指标及其性能分析,及其可能遇到的问题
一.并发数:同时访问服务器站点的连接数。
并发上不去的表现:网络转圈页面报404,或者500或者直接无响应,都是并发上不去的表现。
并发数上不去的话,需要找架构工程师修改应用服务器(tomcat/webl)的最大连接数和数据库工程师数据库服务器(Oracle/mysql)的最大连接数,设置过大的话,会造成空间浪费,刚刚够用就行。
二.相响时间:从用户发送请求到收到结果的时候的时间。
响应时间过长主要造成的因素:
1.代码方面:
①代码方面效率执行低下。
2.数据库方面:
①业务查询类:数据库的查询逻辑,主表与子表的关系,还有数据库表过的索引(会产生索引碎片),影响查询效率。
②写表业务类:数据库储存过程会影响储存效率的高低,主表与子表的关系也会影响相应时间的长短。
三.tps:并发数除以响应时间
上面几种情况会照成tps过低的情况;
四.吞吐量:指在一次性能测试过程中网络上传输的数据量的总和。
吞吐量满载的情况,为了更好的测试性能,需要排除吞吐量满载的时候造成的性能低下
五.服务器资源:
计算 + 存储 + 网络 就是服务器资源
计算: CPU + 内存, 也有GPU计算
存储:常规的数据存储,如文件系统存储,块存储, 对象存储
网络:如软件定义网络,虚拟网络等。
性能测试方法:
负载和压力的区别:负载是一个一个加上去,压力是一次性加上去;
负载测试:一般像登录模块类需要负载测试,我们回去寻求拐点,一个是最佳负载状态,和最大负载状态,然后在进行压力测试。
压力测试:其他模块的话直接采用压力去测试。
不管是压力测试还是负载测试,除了单节点测试之外,还需要测试多个服务器得负载是否均衡。
为什么登录模块需要线负载测试?
答:登录模块是与服务器与用户建立链接的一个过程,服务器状态是未知的,因此不能来得太猛烈,所以先负载测试,去找性能得一个拐点。
测试得用户是怎么来的?
答:注册用户的10%是在线用户,在线的5%是并发用户,取得是5%以下,因为中途还有一些不确定因素导致 用户并发≠服务器并发,比如用户手机性能和网速等原因;
LoadRunner的使用方法:
安装完LR后选择LR目录下面的sample文件夹,启动服务和网页。
玩一玩LR自带的网页
脚本录制:
选择单协议和web协议
点击Start Record
点击ok可以开始录制脚本,然后可以的到一个脚本。
对脚本的操作
添加计时的事物
添加结束计时事务
查看tree界面对比两个页面是否出现问题。查看日志没有问题,因为lr只管网络链接是否成功,所以要插入文本检查点。
利用web_reg_find(“”,“”,LAST)函数查早网页存在的信息;
做出逻辑判断,页面成功会返回什么,失败会返回什么。
用到的函数有
Ir_message(),输入消息
lr_eval_String(),声明变量,需要用时必须声明;(比如上图需要用denglu变量,虽然前面已经保存在savecount里了但还是需要声明),
lr_fail_trans_wiht_error("");转为事务失败而且输出
web_reg_find("Text= ","SaveCount= ",LAST)查找网页中的字符串并且保村变量;
这样就可以测试LR自带的网页登录模块了,然后查看tree视图,发现登录失败了。为了查找原因,点击下方的对比查找不一样的地方,不同会黄色高亮显示。
发现session值不一样,切换到http view里面去查找session的位置;
发现session的左边是userSession value=,右边是>括号。
利用web_reg_save_param("存下的变量名","Notfound=warning","LB=左边的格式","RB=右边的格式",LAST),来抓取变动的session值
然后把前一个页面抓取的Session值放入需要变化的value中
发送请求,对比tree视图,完成。登录脚本调试完成。
然后录制好一个注册脚本:
LR的参数化及其负载测试
添加参数
导入数据以username为源文件导入
然后替换参数
设置循环
跑一次查看tree视图,发现没问题,批量注册脚本调试成功。
脚本注册好1w条数据,我们来负载测试登录模块
选择lr的三大组件的第二个test,选择好脚本
添加监控机
脚本对应压测机
运行时设置
循环次数,负载时填1
忽略思考时间
避开前端,不浪费网络资源
开始设置负载测试
初始化用户
负载到100并发时稳定
负载到100后稳定一段时间了的结束设置
添加监控指标
结果保存地址设置
点击start,结果数据展示
压力测试:
压力测试和负载测试在设置上的区别是:
1.循环次数的不同,压力测试循环默认为1次,而压力,如果测试100的并发,有一万条数据的话,需要100次循环。(不能超过1W条数据)
2.并发数一开始的选择不同,负载会选择下面的选项,一个一个上,压测一次性达到最高并发
3.持续时间的不同,压测选直到跑完,而负载只需要持续一段时间。
压测为了模拟真实情景,所以每个值只能用一次。
4.参数化配置的不同。
负载均衡问题:
为了考虑负载均衡的等问题我可以使用lr的自带的虚拟ip的东西进行模拟操作;