接口性能测试工具之Jmeter

Jmeter,一款开源的性能测试工具,提供比较详细的用户手册、API文档,与Loadrunner用法相似,也支持脚本录制。这里以知旅行淘宝下单请求与响应为例,介绍一下jmeter如何做性能测试。

启动Jmeter

启动jmeter,Mac下允许JMETER_HOME/bin/jmeter.sh脚本,windows下运行JMETER_HOME/bin/jmeter.bat脚本。

添加线程组:

添加测试线程组,选择测试计划(右键)_添加_Threads_线程组,如图

接口性能测试工具之Jmeter

接口性能测试工具之Jmeter

线程组配置,根据实际需求设置线程数、线程拉起时间、测试计划执行时间,其中线程执行之间有三种可选:

  1. 设置循环测试;
  2. 配置调度器,设置执行起止时间段;
  3. 设定为“永远”,会一直执行直到强制中断。如图

接口性能测试工具之Jmeter

在执行之前我们需要先调试接口,所以先将线程属性都设置为1

接口性能测试工具之Jmeter

配置请求:

选中添加的线程组_添加_Sampler_HTTP请求,如图

接口性能测试工具之Jmeter

设置http请求,填写服务器名称or IP、端口号、响应超时时间、协议类型、请求方式,如图

接口性能测试工具之Jmeter

接口性能测试工具之Jmeter

完整的连接172.16.10.157:8081/sc-taobao-war/taobao/callback.html

如果http请求是请求体,需要添加http信息头管理器,选中线程组_添加_配置元件_http信息头管理器,如图

接口性能测试工具之Jmeter

信息头管理器配置如图,点击添加按钮,然后添加信息头中内容的名称和值。

接口性能测试工具之Jmeter

添加完信息头管理器,就可以配置http请求,如图选择Body Data,然后就可以输入请求体的内容。

接口性能测试工具之Jmeter

本例子选择的是直接添加参数发送的方式,可根据接口文档直接添加参数名称和值,如图,淘宝给出的接口文档

接口性能测试工具之Jmeter

在Jmeter添加对应的参数,如图

接口性能测试工具之Jmeter

配置好各项参数,在执行之前需要添加监听,不然查看不到执行结果。

添加监听器

Jmeter有多个监听器供选择,选中线程组_添加_监听器_,客户端/服务端的请求响应,最常见的监听器是察看结果树、聚合报告(图形结果对性能测试的结果有一定影响)。

接口性能测试工具之Jmeter

添加完监听之后,我们就可以尝试执行请求了。

接口性能测试工具之Jmeter

执行之后点击察看结果树,察看执行结果

接口性能测试工具之Jmeter

此时取样器结果显示的应答码是200,应答信息是OK,所以结果判断是成功的。我们继续看请求和响应数据,如图

接口性能测试工具之Jmeter

接口性能测试工具之Jmeter

响应数据是300,表明这个请求失败了,但是结果树显示却是成功。如何让结果树显示我们需要的正确结果了?这时我们需要用到另一样东西,响应断言。

 

响应断言:

选中线程组_添加_断言_响应断言

接口性能测试工具之Jmeter

接口性能测试工具之Jmeter

选择添加,然后输入需要判断成功的响应数据;再次执行请求,察看结果树。

接口性能测试工具之Jmeter

当响应数据正确时,如图

接口性能测试工具之Jmeter

此时表示结果能正确显示,同时该接口也调试成功。

 

本例中的参数值是固定值,也可以使用函数或者参数化,如例子中的时间可以用时间函数${__time(yyyy-MM-dd HH:mm:ss,)} 2016-10-25 17:28:16  来显示当前时间。

 

参数化设定:

Jmeter参数化有多种方法,这里介绍一种比较使用的方法,采用文件读取方式,选中线程组_添加_配置元件_CSV Data Set Config,如图

接口性能测试工具之Jmeter

CSV Data Set Config参数化配置,以行为单位读取参数化文件,比参数化函数_CSVRead()和_StringFromFile()更方便使用,具体配置如图

接口性能测试工具之Jmeter

Filename: 参数项文件,可以采用绝对路径和相对路径;

File Encoding: 文件的编译方法,可以为UTF-8或者是GB2312等,需要与参数化文件的        

            编码方式一致

Variable Names:文件中各列所表叔的参数项,如:mobile,name,num,各项之间用逗

             号隔开,参数项名称应与HTTP请求中的参数项保持一致。

Delimiter: 参数分隔符,如文件中使用的是逗号分隔符则填写逗号;如使用TAB键,则

         填写\t

Allow quoted data?:是否允许引用数据,设置为flase,避免引起乱码;

Recycle on EOF?:当读取到文件尾处,是否从头读取,可以为true或者flase;

Stop thread on EOF?:当Recycle on EOF?一项为false时起效;true=当读取到文件结尾,停

                 止进程

Sharing mode:共享组,方便起见,选择“ALL threads”。

CSV文件内容如图

接口性能测试工具之Jmeter

HTTP请求参数配置如图

接口性能测试工具之Jmeter

聚合报告:

    性能测试结果最主要的结论来源就是聚合报告。

 

接口性能测试工具之Jmeter

#Samples:请求总数,表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100

Average:平均响应时间

Median:中位数,也就是 50% 用户的响应时间

90% Line90 用户的响应时间

Min:最小响应时间

Max:最大响应时间

Error%本次测试中出现错误的请求的数量/请求的总数

Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数

KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec