Jmeter——性能测试的认知以及思考bug(一)

2023-04-25,,

前言

性能测试是一个全栈工程师/架构师必会的技能之一,只有学会性能测试,才能根据得到的测试报告进行分析,找到系统性能的瓶颈所在,而这也是优化架构设计中重要的依据。

测试流程:

    需求分析→环境搭建→测试计划→脚本开发→执行与监控→缺陷管理→结果与报告

    压力测试

1、线程组设置,这里的线程数与同步定时器的用户数量一样
2、添加HTTP cookie管理器
3、默认请求值
4、添加一个事务控制器,可以当作一个业务
5、在事务控制器下添加,同步定时器
设置用户数量,这里与线程组的线程数一样,超时时间可设置
6、添加脚本(http请求)
7、添加查看结果树
8、添加->监听器
9、在最后添加一个聚合报告,添加处:添加->监听器

    负载测试实战

1、线程组的设置50个用户(持续时间:按秒计算,这里300=60*5,意思就是运行时长为5分钟)
2、添加HTTP cookie管理器
3、默认请求值
4、添加一个事务控制器,可以当作一个业务
5、在事务控制器下添加,高斯随机定时器
总的延时 = 固定延迟时间 + 高斯随机生成的偏差值(说明:单位都是毫秒,固定延迟300ms,偏差100ms,意思是时间延迟300-400ms之间)
6、添加脚本(http请求)
7、添加->监听器
8、在最后添加一个聚合报告,添加处:添加->监听器

第一章 Bug引发的又一次思考

1. 打开一个页面非常慢是Bug吗

    打开一个页面非常慢是Bug吗

可能是,原因:网络慢、客户端运算能力不足、资源大到现有的网络无法承载、服务端资源响应时间过长。

    页面打开慢的影响是什么?

用户体验不好,从而导致用户流失
用户流失会导致项目失败
项目失败可能会导致公司破产

2. 页面响应耗时可以提前预知吗?

    在测试阶段是否能够发现页面响应慢

    当然可以

    如何在测试阶段发现页面响应慢?

模拟大量用户访问
监控每个请求的响应是否准确
监控服务器的资源使用

第2章 性能测试认知

1. 企业级软件为什么要做性能测试

    历史上由于性能问题引发的事件

12306网站崩溃,用户购票失败
淘宝双十一网站崩溃

    网站崩溃或慢对用户的影响

离开

    企业为什么要做性能测试?

提升用户体验

    细化性能测试的目的

预估软件性能瓶顶,预估软件优化时间
验证是否存在多并发的逻辑问题

2. 什么是性能测试?

性能是用来描述产品除功能外的所具有的速度,效率和能力的综合能力评价

对产品或是物品的性能惊喜定性或是定量的量测过程

在这个过程中我们使用一些工具来进行场景的模拟,从而进行性能测试

3. 性能测试案例

    测试需求:测试20个用户访问网站在负载达到30QPS时的平均响应时间
    QPS:Query Per Second 每秒查询率。(一台查询服务器每秒能够处理的查询次数,作为域名服务器的性能经常用每秒查询率来衡量)
    测试步骤

1、添加线程组(线程数+准备时长+循环次数)
1.1、线程数:虚拟用户数,一个虚拟用户占用一个进程或线程(设置多少个虚拟用户=设置多少个线程)
1.2、准备时长(s):设置的虚拟用户数需要多长时间全部启动。eg:线程数为20,准备时长为10,则说明需要10秒钟启动20个进程。
1.3、循环次数:每个线程发送请求的次数。eg:线程数为20,循环次数为5,那么每个线程发送5次请求,总请求数为20*5=100

2、添加HTTP请求

3、设置QPS限制:控制给定的取样器发送请求的吞吐量

4、添加监视器-聚合报告、察看结果树

5、运行脚本

6、聚合报告解析(响应时间单位:毫秒)
1)Label:每个Jmeter的element都有一个Name属性,这里显示的就是Name属性的值
2)#Sample:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
3)Average:平均响应时间-默认情况下是单个Request的平均响应时间当使用了Transaction Controller 时,也可以以Transaction为单位显示平均响应时间
4)Median:中位数,50%用户的响应时间
5)90%Line:90%用户响应时间
6)Min:最小响应时间
7)Max:最大响应时间
8)Error%:本次测试中出现错误的请求的数量/请求的总数
9)Throughput:吞吐量-默认情况下白石每秒的请求数
10)KB/sec:每秒从服务器端接收到的数据量

4. 性能测试的分类

    性能测试的分类

压力测试、负载测试、并发测试、稳定性测试

    什么是压力测试?

压力测试也叫强度测试,它是指逐步给系统增加压力,测试系统的性能变化,使系统某些资源达到饱和或系统崩溃的边缘,从而确定系统所能承受的最大压力
举个例子:百米赛跑,逐步增加你的负重,直到你完不成百米的程度,也就是崩溃的边缘你所能承受的最大负重

    什么是负载测试?

被测试系统正常服务的前提下,系统所能承担的最大服务负荷数量(即最大并发数量),最终分析出系统性能的瓶颈
举个例子:百米赛跑,设置必须15秒完成,负重奔跑(不断增加负重)

    压力测试和负载测试的区别

压力测试要测试出系统即将崩溃时,能够承受的最大并发数
负载测试是满足系统指标要求的情况下,能够承受的最大并发数

    什么是并发测试

举个例子:商场卖货,售后员根据库存表单记录表卖货
仓库管理员应该在出货时同时更新库存表单记录表,但由于用户过多,表单记录更新不及时
导致仓库已经没有货了,但是售货员看到库存表单记录表中还显示有库存,仍然在卖货,但已经发不出去货了

5. 性能测试场景剖析

电商秒杀、学习系统考试、12306抢票、新闻热点事件、

网络游戏运营、视频网站播放

6. 必知必会的性能测试指标

并发用户量:同一单位时间进行同一操作的用户数量
吞吐量:单位时间内系统成功传输的数据量,单位通常是MB、GB
吞吐率:又叫Throughput,单位时间内系统成功处理的请求数量,通常单位为(请求数量/每秒、req/s)

7. 性能测试基本流程

    标准性能测试流程

8. 简述 性能测试流程?

1.分析性能需求。挑选用户使用最频繁的场景来测试,比如:登陆,搜索,下单等等。确定性能指标,比如:事务通过率为100%,TOP99%是5秒,最大并发用户为1000人,CPU和内存的使用率在70%以下

2.制定性能测试计划,明确测试时间(通常在功能稳定后,如第一轮测试后进行)和测试环境和测试工具

3.编写测试用例

4.搭建测试环境,准备好测试数据

5.编写性能测试脚本

6.性能测试脚本调优。设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余脚本

7.设计测试场景,运行测试脚本,监控服务器,

8.分析测试结果,收集相关的日志提单给开发

9.回归性能测试

10.编写测试报告

Jmeter——性能测试的认知以及思考bug(一)的相关教程结束。

《Jmeter——性能测试的认知以及思考bug(一).doc》

下载本文的Word格式文档,以方便收藏与打印。