Jmeter入门②――压力测试

匿名 (未验证) 提交于 2019-12-02 22:56:40

Ŀ¼

前言

操作

(一)接口文档

(二)添加线程组

(三)添加HTTP请求

(三)添加察看结果树

(四)添加聚合报告

(五)保存、运行、察看结果树&聚合报表


前言

压力测试也属于是性能测试,关于性能测试,百度词条【性能测试】(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:每秒从服务器端接收到的数据量。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!