分享

性能测试总结

 印度阿三17 2021-02-05

一、概念了解

1. 性能测试的维度和类型

编号类型概念标准举例
1基准测试给系统施加较低压力,查看系统运行状况并记录相关数据作为基础参考10%~20%软件最多只给100个人使用,先用10~20人测试一下
2负载测试不断增加压力或增加一定压力下的持续时间,直到找到达成多项性能指标的安全临界值找到最佳性能点某种资源已经达到饱和状态
3压力测试测试系统超载时的运行情况,关注系统在峰值或超载时的处理能力150%允许20000人排队,测试第20001个人请求时的处理(应该将请求拦截下来,避免系统崩溃)
4稳定性测试给系统中上游压力时,让系统持续运行一段时间,模拟绝大多数常态的使用40%~60%-
5并发测试多个用户同时访问同一个应用/模块视实际情况而定12306抢票,9点放票,同时抢票

2. 性能测试常用指标

编号指标定义说明
1响应时间响应时间=呈现时间 网络传输时间 服务器端响应时间 应用延时时间用户负载不断增加,响应时间突然增加的点就是性能最佳点
2吞吐量吞吐量=请求总数/花费的总时间用户负载不断增加,吞吐量会突然下降
3并发数分为并发用户数、在线用户数、系统用户数系统用户数≥在线用户数≥并发用户数,等于的情况很难实现
4资源利用率不同系统资源的使用程度需关注CPU、内存、磁盘IO、网络带宽
5页面访问量(PV)访问一个url,产生1个PV,累加制1个用户访问10次,算10个访问量
6用户访问量(UV)一个独立用户,访问站点所有页面都算作1个UV,按用户计算商家投放广告关注UV,关注的是稳定用户使用量

3. 资源利用率关注点

关注点上限
CPU不要超过80%~90%
内存不要超过80%~90%

二、jmeter性能测试

Jmeter的主要思想:先构造用户,再让用户去请求对应的接口。

1. jmeter性能测试步骤

编号步骤实现方法作用备注
1添加线程组测试计划->添加->Threads(users)->线程组配置线程数、循环次数等一个线程组相当于一个用户
2添加HTTP请求线程组->添加->sampler->HTTP请求接口参数配置Sampler:取样器,用来模拟请求
3配置HTTP接口将接口完整的url地址复制到路径栏,并填入请求信息-请求信息是json形式时选择body data
4添加HTTP信息头管理器HTTP接口->添加->配置元件->HTTP信息头管理器设置接口的content-typeJmeter默认传输请求信息的方式是表单类型,即Content-Type: application/x-www-form-urlencoded
5添加cookie管理器线程组->添加->HTTP Cookie管理器获取发起登录请求时的cookie信息,当同一个人再次发起请求时,cookie信息就会被传入。添加后不用做任何配置;登录和其他请求需要在同一个线程组内;还可在HTTP信息头管理器中添加cookie,但使用不灵活
6配置线程组设置线程数、循环次数等实现多个人同时请求线程数默认是1,一般单个人请求成功后再进行这一步
7添加断言结果HTTP接口->添加->断言->响应断言断言结果是否符合预期设置结果常用包含、匹配,有多个断言条件时,需同时满足才通过
8添加查看结果树线程组->添加->监听器->察看结果树查看请求结果按绿色按钮,运行请求
9运行请求在查看结果树页面点击绿色运行按钮运行接口请求看请求信息是否与填写的一致,看响应数据是否正常
10添加聚合报告线程组->添加->监听器->聚合报告接口测试结果性能展示聚合报告可导出
11添加物理资源监控插件线程组->添加->监听器->jp@gc – PerMon Metrics Collector监控服务器和本地电脑的物理资源变化一般监控CPU、内存、磁盘、网络四个选项 ,还应监控自己电脑的资源,实现双向监控

2. 参数化方法

参数化:将写死的东西变成变量
在这里插入图片描述

3. CSV Data Set Config参数设置

编号参数含义填写说明
1filename文件名支持绝对路径和相对路径
2file encoding编码方式一般使用utf-8
3variable names变量名默认以逗号分隔
4delimiter分隔方式默认为逗号
5allow quoted data是否考虑引号默认不考虑(false),如果考虑引号,引号中的逗号不会被分隔
6recycle on EOF文件读取结束后是否要循环默认循环(true),比如只有100个用户信息,但需要200个人登录,会循环取数据
7stop thread on EOF文件读取结束后是否要停止当取不到数据时是否停止,true代表停止,false代表不停止,但取不到数据,会导致这几个请求实际没有传参。
8sharing mode分享模式all threads——给所有线程使用,current thread group——给当前线程组使用,current thread——给当前线程使用。

4. 线程组的线程属性

编号属性含义理解备注
1线程数一个线程数就是一个用户--
2Ramp-up period决定多长时间启动所有线程如果有5个线程,ramp-up period是10秒,则每隔2(10/5)秒启动一个线程。如果ramp-up period是0秒,则jmeter会立即建立所有线程构造用户的间隔时间(秒)=Ramp-up period/线程数,用户构造完成后会立马发起请求
3循环次数默认循环1次,可修改次数循环2次时,同一个人会请求2次,不受其他用户的影响永远循环:需要谨慎操作,很可能会让电脑卡死
4调度器优先级:启动时间/结束时间的优先级比持续时间/启动延迟低如果4个选项均填写了内容,则默认持续时间/启动延迟选项设置生效,启动时间/结束时间设置不生效调度器一般在循环次数为永远时生效
5启动/结束时间设置固定的时间启动和结束比如:设置启动时间为2021/02/03 21:00:00-
6启动延迟/持续时间设置启动延迟5秒,持续时间10秒5秒后启动,持续10秒-

5. 并发测试

真正的并发需要使用同步定时器,

  1. 添加同步定时器:线程组->添加->定时器->synchronizing Timer(同步定时器)

  2. 设置并发人数(number of simulated users to group by)

编号步骤实现方式说明
1添加同步定时器线程组->添加->定时器->synchronizing Timer(同步定时器)同步定时器是最接近真实情况的并发
2设置并发人数number of simulated users to group by一栏设置人数只有用户数构造完后才会一起去请求这个接口
3设置超时时间timeout in millisecond一栏设置超时时间,单位毫秒如果超时时间过了,用户还没构造完成,则已经构造好的用户会同时发起请求。设置为0,表示永不超时

6. 有关联性的接口处理方法

有关联的接口举例:考试系统中要删除一个用户,需要先获取查询到的用户id,再根据用户id进行删除操作

编号方法添加方式配置参数表达式获取方法表达式替代变量的格式
1正则表达式提取器HTTP接口->添加->后置处理器->正则表达式提取器配置引用名称、正则表达式、模板、匹配数字、缺省值正则表达式获取:察看结果树->RegExp Tester,在Regular 中填写正则表达式${变量名}
2json表达式提取HTTP接口->添加->后置处理器->JSON Extractor配置变量名、json表达式、匹配数字、默认值json表达式获取:察看结果树->JSON Path Tester,在JSON Path 中填写json表达式${变量名}
编号表达式语法举例含义
1正则表达式. ?表示匹配任意符合的字符串,将变量修改为. ?“id”. ?“userUuid”匹配到前面是"id"后面是"userUuid"的表达式
2json表达式整个json体是一个大字典,以{}表示,$.response.list[0].id获取字典里的id,id在list列表的第一个元素,list列表在response字典中,访问列表元素使用下标,从0开始

7. 聚合报告字段解析

编号字段解析
1samples线程数
2average平均响应时间,单位毫秒
3median中间响应时间,反应中等水平
490% line响应时间从低到高排序,排在90%的响应时间
595% line排在95%的响应时间
699% line排在99%的响应时间
7Min最小响应时间
8Max最大响应时间
9Error %错误率
10Throughput吞吐量,每秒处理了多少请求,单位是秒,计算方式:请求数/花费的总时间
11Received KB/S接收的网络带宽速度,计算方式:传输的文件大小(响应数据大小)/花费的时间
12Sent KB/S发送的网络带宽速度,计算方式:请求数据大小/花费的时间

8. 判断性能是否达标

(1)响应时间遵循2-5-8原则
(2)99%的人响应时间在2秒以内就认为性能OK,同时错误率不能超过1%。

9. 最大吞吐量和最大并发量

编号项目解释举例说明
1最大吞吐量不并发,看一段时间的处理水平前10分钟优惠有效
2最大并发量并发 ,看同一时间的处理水平前30名优惠

10. 各性能测试执行

编号测试项目关注点线程属性设置备注
1基准测试不考虑并发,看吞吐量线程数200,时间10秒,每秒20个,循环1次-
2负载测试在基准测试的基础上继续加压线程数100,时间10秒,循环20次测吞吐量时不建议让本地电脑不停造人,实际需要测试的是接口调用,一般是快速造人,然后进行循环
3压力测试关注服务器会不会因为压力太大而挂掉线程数100,时间10秒,循环次数不断增加在增加压力的过程中错误率或响应时间会突然明显增加
4稳定性测试关注长时间运行,系统的稳定性在调度器里设置运行时间 -
5并发测试此时不用太过关注吞吐量,重点关注响应时间和错误率已经测出来最大吞吐量之后,比如每秒处理500个请求,则线程数设为500,时间可以设长一点30秒(自己调整),循环次数1次,然后设置同步定时器:500一组,超时时间为0如果并发没有问题,可以不断往上加数据
来源:https://www./content-4-847251.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多