性能测试基础知识点
性能测试与功能测试的区别
性能测试:找到程序的极限值;
举例:测试一辆车,车胎是否有噪音,百公路加速多少秒(好不好用)
功能测试:验证功能是否缺失、是否与预期一致
举例:测试车轮转不转的动,车有没有方向盘(是否能用、正常)
找极限的目的是什么?
保证系统上线后是否正常运行,不会遇到突然情况导致掉线,奔溃而造成的经济损失
(只要找到极限,我们可以去设置预警机制,预警值一般是极限值向下兼容20%
,如:极限值是100,到数据达到80时,系统就应该开始报警)
可能影响性能的因素
服务器资源占用,cpu处理速度、线程的多少
只要启动项目,就会占用资源,资源一占用,程序变慢,直到无法运行
服务器接收到客户请求后到操作步骤
举例理解;cpu相当于高速公路,线程相当于车,线程一多,车一多开车就慢容易堵车(cup处理不过来就会慢)
### 指标的理解
什么东西可以当作我们的对应反馈参考指标
核心要务:1、响应时间;2、并发量;3、资源占用率;4、吞吐量;
响应时间:一个请求完成的时间(等待时间+处理时间)表现:网页响应时间(多个页面资源累加计算)
**并发量:**举例理解:老板,买个打卡系统—1万人同时下班是否能用?
相对并发:一段时间内向服务器发出请求并发(人的操作会有时间间隔)
绝对并发:一个时间点服务器收到的请求量(同一时间,没有时间间隔)
资源占用率:程序运行的角度,一个用户请求过来,对服务器资源占用多少
吞吐量: 一进一出(输入-处理-输出)数字/s: 反应程序处理姐能力的综合体现,越大越好,吞吐量的值越大说明数据处理快
QPS:每秒查询率(不涉及数据变化操作)
TPS:每秒事务处理数(设计数据变更的操作)
tips:怎么理解吞吐量与并发量
举例说明:
1、银行大厅-处理请求,有两个窗口8接口客户需要15分钟,一次来了10个人(这10个人指的是并发数)2个人去办理业务,8人等待,15分钟办理完后(吞吐量为2)
吞吐量过低:10分钟又来了10分子 人越来越多 挤满所以空间,结果-服务器死机
2、需求:银行大厅-处理请求,10个窗口 15分钟,上午来了两个人 吞吐量2,并发也是2(这种情况就无法知道吞吐量)由此可以得出,吞吐量有上限,但是一旦咨询数量不够,我们无法正确获得吞吐量,可以通过加并发量来得到吞吐量
怎么完成一次性能测试
基准测试:最少并发,用来确定用户每一次请求所占用的资源及和性能指标
性能测试中运行有一定的异常率,默认异常率小于0.05%(这个一般由公司决定)
找瓶颈:通过递增负载测试(压测),找瓶颈值
实例:测试读书屋网站搜索功能的性能
基准测试:前提条件:基础的搜索接口已经调通
我们把线程组对应 的线程属性修改一下(搜索请求较多时,查看接口处理速度),修改循环次数
为永远,持续时间
为120秒
然后我们去添加以下这个配置元件聚合报告、汇总报告、TPS(transations per Second)事物处理量、Response Times Over time(随着时间变化的响应时间)、Active Threads Over time(随着时间变化活动线程数)
点击“运行按钮”,系统会重复去发起搜索这个请求,然后我们就可以去看一下事物处理数及响应时间、随着时间变化的线程组数量的监控数据
这位我们需要着重去看一下汇总报告里面的异常率和吞吐量
,异常率默认超过0.05%,则表示搜索接口存在性能问题
最大值与最小值指的是,最大每或者最小每秒处理事物的数量值,接收发送的数据指的是包的大小,样本为发送的总请求数量
找瓶颈:我们添加一个负载测试线程
设置线程属性,如每隔30秒,线程数量递增10,共100个线程
然后我们点击“运行”,系统开始去发送请求并依次递增数量
直到达到一定数量后,接口开始报错
当数据报错后,我们可以查看一下Transaction per Second事物处理量,大概请求量在300多点时候开始走势图开始下降,且出现绿线,绿线代表报错了,但是这里我们也只是得到一个大概的值,现在我们需要去验证这个值对不对
再添加一个负压线程,来验证我们刚刚猜测的值对不对,我们把线程数设置到310点样子去验证一下,这个值对不对,持续300秒
由于jemeter发起的请求时无序的,所以这里我们还需要添加一个常数吞吐量定时器
来控制并发行为,通常时间为60秒,当我们设置了这个吞吐量定时器后,这时系统会每秒钟发送310个请求过去,发送的请求数量就不会无序乱套
常数吞吐量定时器:用来固定对应dTPS数,每分钟60,则TPS为1,每分钟120,TPS数量则为2
当我们运行这个验证瓶颈值当负压测试时,系统炸了,就说明,瓶颈值一定我们猜测的数量之上,如果没炸则说明,真正的瓶颈值在我们猜测的这个瓶颈值之下,
这个时候我们可以去调整一下我们猜测的这个瓶颈值,调整值一般上下幅度在百分之10,从而逐步的去确定瓶颈值(运行数据时需要把其他线程关掉,否则可能会受影响)