Ŀ¼
前言
压力测试也属于是性能测试,关于性能测试,百度词条【性能测试】(https://baike.baidu.com/item/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/1916148?fr=aladdin)解释的非常详细,秉着【理论是实践的基础】的真理,大家可以先去了解一下。因为还只是入门,我就只从中摘取部分简单的帮助自己先入门。
压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。应用在客户端性能测试的目的是考察客户端应用的性能,测试的入口是客户端。对应刚入门的我们来说,暂且主观一点断章取义就是并发性能测试。
压力测试,我们首先需要了解下压力测试的指标以及目标。主要是吞吐量、响应实践、错误率。
-
吞吐量:官方定义是【吞吐量是指对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等测量)】。对应压测来说,就是每秒钟系统能够处理的请求数、任务数。
-
响应时间:官网定义是【响应时间指用户发出请求或者指令到系统做出反应(响应)的时间。】。我们可以理解为服务处理一个请求或一个任务的耗时。通常吞吐量越大(每秒钟系统处理的请求越多),响应时间越长。
-
错误率:一批请求中结果出错的请求所占比例。
压测中,我们先回从需求中得到这些指标的目标值,然后我们压测的时候就设置相应的指标慢慢增加、达到、超过这些目标值来进行测试(设计测试用例),来分析系统是否符合系统要求。这些后面我们介绍操作的时候也会简单介绍这几个指标在Jmeter里面是怎么设置的。
操作
(一)接口文档
简单起见,我们就用一个add接口进行测试。可以把它想作是一个申请接口,主要是功能其实就是添加一条客户申请信息。
(二)添加线程组
(1)选择测试计划,右键【添加-线程-线程组】;
初学者可以先对这些参数的作用有个大概了解,如果看不懂也暂且不必深究。后面慢慢实践起来就能知道这些参数的具体意义了。
- 在取样器错误后要执行的操作:平时很少用到,默认都选择【继续】。
继续:如果取样器里的执行出现错误失败的时候,请求不会停止,继续执行。
启动下一进程循环: 忽略错误,线程当前循环错误,执行下一个循环。
停止线程 :只限当前线程停止,不影响其他线程执行
停止测试 :当前执行的线程全部执行完毕后结束
立即停止测试: 立刻停止
- 线程数:顾名思义,就是线程个数,即并发线程个数。可以理解为用户数,就是有多少个人同时访问某一个HTTP请假(接口)。
- Ramp-Up时间(秒):线程启动开始运行的时间间隔,单位秒。即所有线程在多长时间内全部启动。例如线程60个,Ramp-Up 时间设置为20s,那么每秒启动60/20=3个线程,不填写默认设置为0,即所有线程在开启场景后立即启动。
- 循环次数:勾选【永远】,将一直执行,除非手动停止或崩溃。如线程数为1,循环2次,即一个人一直调2次这个/这些请求。
- 延迟创建线程到需要:默认不勾选,是指不需要延迟创建线程,默认运行时就创建。勾选之后即延迟创建线程,到需要的时候再创建。我暂且也还不算很了解这个参数的用法。以下是其他说法,可以参考以下:延时创建线程直到该线程需要采样时。勾选,例如50个线程Ramp-Up Period为10s,那么每隔1s启动50/10=5个线程并运行下面的请求(状态为running);不勾选,测试计划开始后启动所有线程(状态为new),但是不立即执行下面的请求。例如50个线程Ramp-Up Period为10s,那么计划开始后所有线程全部就绪,但第一秒只有5个线程开始运行请求。实际应用中选择哪种都可以,不影响测试结果。――【来源:https://blog.csdn.net/qingdiao/article/details/80995290】
- 调度器配置:勾选则可配置【持续时间(秒)】、【启动延迟(秒)】
- 持续时间(秒 ):持续时间,测试计划持续多长时间。――只针对循环次数为【永远】时有效;
- 启动延迟(秒):启动延时。点击启动按钮后,仅初始化场景,不运行线程,等待延时时间到才运行。
(2)设定线程组的参数。当然我们也可以先把后面的步骤先做好了再返回来改。这都是无关紧要的。
如下:设定线程数=10;Ramp-Up时间(秒)=3,循环次数=2;意思就是我需要3秒内发起10个线程,每个线程循环2次。
(三)添加HTTP请求
(1)选择线程组,右键【添加-取样器-HTTP请求】:
(2)根据接口文档填入相关值:协议、服务器名称或IP、端口号、请求方法、路径、内容编码、消息体数据
(3)POST请求需要添加信息头:选择HTTP请求,右键【添加-配置元件-HTTP信息头管理器】:
(4)添加信息头参数以及传入值(一般接口文档有明确规定)
(三)添加察看结果树
(1)选择测试计划,右键【添加-监听器-察看结果树】
(四)添加聚合报告
(1)选择测试计划,右键【添加-监听器-聚合报告】
(五)保存、运行、察看结果树&聚合报表
(1)察看结果树,可以看到http请求次数、结果。
(2)聚合报告:通过聚合报告,我们可以看到我们想要的结果,包括吞吐量、错误率、响应时间;
Label:每个JMeter的请求的Name值。例如HTTP Request的Name。
Samples:发出请求数量。如果之前线程组中配置的是,线程数为10,循环次数为2,则总的数量为20.
Average:平均响应时间(单位:ms)。默认是单个请求(Request)的平均响应时间,当使用了事务处理控制器(Transaction Controller)时,也可以以事务为单位显示平均响应时间。
Median:中位数,也就是 50% 用户的响应时间。
大部分用户(90%、95%、99)的响应时间。因为在评估一次测试的结果时,仅仅有平均事务响应时间是不够的。假如有一次测试,总共有10个请求被响应,其中最小响应时间为0.02秒,最大响应时间为110秒,平均事务响应时间为4.7秒。这样平均时间就毫无意义了。
Min:最小响应时间。
最大值:最大响应时间。
Error%(错误率):本次测试中【出现错误的请求的数量/请求的总数】,就是我们之前说要关注的错误率。
hroughput(吞吐量):默认情况下标示每秒完成的请求数。
KB/sec:每秒从服务器端接收到的数据量。