前言:

上一节我们讲到了使用postman进行接口的自动化测试。今天我们来讲接口测试的另一个强大的工具。它就是Jmeter。Jmeter和postman一样都可以进行接口的自动化测试,也可以进行单一的接口测试。两款工具各有千秋,各有各的优点,同时也各有各的缺点,今天我们就这两款工具来梳理一下它们的优缺点,同时对Jmeter的做接口自动化测试进行一个解析。

1、Jmeter与Postman两款工具的优缺点

jmeter Jenkins 接口自动化 jmeter能做接口自动化吗_测试工程师

   

jmeter Jenkins 接口自动化 jmeter能做接口自动化吗_linux_02

    

jmeter Jenkins 接口自动化 jmeter能做接口自动化吗_jmeter_03

总体上:Jmeter要比Postman强大很多,能同时进行脚本录制,接口测试,性能压力测试等,而对于postman来讲,比较适合用来做接口测试,并且是单一接口测试

接口测试上: Postman要比Jmeter的便捷很多,操作起来方便很多。Jmeter组件的添加,数据的复制,数据的添加等方面,操作性不是很好。

批量自动化接口测试上:Jmeter多线程支持比较友好,而对于Postman来讲一次自动化执行只能针对一个接口,而Jemter能够对多个接口并行操作。

Jmeter适用于接口自动化测试,断言编写,操作不太友好

postman适用于单一接口快速分析测试(接口字段各种用例的快速变化)操作友好

数据兼容性:jmeter 要优于postman 例如上篇博客提到的较长id postman会识别成科学计数法的问题,对于这一点jmeter兼容的比较好。

2、jmeter各个组件的标配置

如下图所示包括:http请求、http信息头管理器、csv数据文件设置、用户定义变量、json提取器、响应断言、计数器、查看结果树、聚合报告。

接下来会详细讲解

jmeter Jenkins 接口自动化 jmeter能做接口自动化吗_测试工程师_04

2.1 http信息头管理器

对于这个地方大家记准就行没有什么特别的要求或者含义,只要知道能用填写内容就可以。如果想了解更深层次的意识,可以去百度查询。

一般情况下只填写Content-Type:application/json

不同情况下写不同的东西,具体情况具体分析。详情如下图

jmeter Jenkins 接口自动化 jmeter能做接口自动化吗_jmeter_05

2.2 http请求

 HTTP请求主要是来设置请求方法例如get post delete put 等,请求链接(IP地址之类的例如http://186.35.23.2:9099/user)以及编码格式,还有包括请求体body

请求体body:

如下图所示,我为了批量的进行测试,把请求字段进行了引用。例如,”PersonID“:"${PersonID}"   

备注:jmeter对与数据的兼容比较好,我们的数据字段在传入数据的时候需不需要双引号?直接可以有body体中进行控制,不需要在原始数据中进行加与不加。

jmeter Jenkins 接口自动化 jmeter能做接口自动化吗_centos_06

2.3 csv数据文件设置

通常情况下,我们在做自动化测试的时候。数据一般情况都是喜欢放在CSv文件里边。 这个就是来做兼容csv文件的组件。

jmeter Jenkins 接口自动化 jmeter能做接口自动化吗_测试工程师_07

2.4 用户定义变量

这里设置的变量是用来做断言比对的。我们可以是根据每一条数据来的。也可以是设定一个变量对比所有数据的,根据自己的情况进行设计。

例如:定义变量 value_1=0,   断言返回的结果StatusCode=0

让  value_1 和StatusCode做对比,如果相同就通过,如果不相同就返回错误提示。

嗯,就相当于自己设定了个预期值和实际值进行对比。

jmeter Jenkins 接口自动化 jmeter能做接口自动化吗_测试工程师_08

2.5 计数器

一般是用于设计循环的次数,或者是循环执行某项任务而设定,每一次执行不同数字,每一次递增,同时这个数值还可以进行引用。

就像图中的N,就是用来引用每一次递增的数字的。

jmeter Jenkins 接口自动化 jmeter能做接口自动化吗_jmeter_09

2.6 json提取器

json提取器的作用就是从返回的结果中,提取出状态码或者是其他你想要的字段所传递的数据。

这里针对不同嵌套的字段或者是不同嵌套的属性提取方法,因各种情况而异。

如下图所示,$..StatusCode   有两个点,代表不管有多少层嵌套,我就找StatusCode

                      $.StatusCode    有一个点,代表只招第一层嵌套里的StatusCode(有时候在好几层嵌套里,所以说两个点的更常用)

 那么返回的结果在那里看那?上一篇文章中讲postman时我们已经提到,但是就jmeter的操作不一样看图2

jmeter Jenkins 接口自动化 jmeter能做接口自动化吗_接口_10

图2 返回结果的响应体是在 查看结果树 中可以看到的。里面需要比对哪个字段,就用json提取器提取哪个字段。

jmeter Jenkins 接口自动化 jmeter能做接口自动化吗_linux_11

2.7 响应断言

响应断言,就是要吧自己预期的值value_1至 value_N,和响应的值StatusCode进行对比,如果一样就会通过,不一样就会报警。

图中 ${__V(value_${N})} 是一个语法格式,最里层的$是代表引用N这个变量,__V() 代表合并为一个整体,外层的$代表再次引用。

jmeter Jenkins 接口自动化 jmeter能做接口自动化吗_linux_12

2.8 查看结果树

查看这本书,主要是用来查看我们批量进行自动化测试的测试结果。有的数据可能通过的有的数据可能没有通过。如下图所示,绿色的代表通过了,红色的代表没通过。

我们可以点击红色的来看啊,查看一下没通过的原因。

同时可以来查看我们没通过的正确的数据是什么,返回的结果又是什么?嗯是怎么样没有通过的。

在这一点上jmeter会比postman更加方便。

jmeter Jenkins 接口自动化 jmeter能做接口自动化吗_centos_13

2.9 聚合报告。

聚合报告主要是关乎这次这个线程组运行的一些性能的一些指标啊,用了多长时间啊?平均用了多长时间请求的成功个数啊,

测试成功率等等之类的。

jmeter Jenkins 接口自动化 jmeter能做接口自动化吗_测试工程师_14

以上呢,就是针对于使用jmeter工具进行批量数据的自动化结构测试的一些教程。其中有一些前期准备工作,已经在上一篇文章中讲到。大家可以自己去浏览观看。上一节主要是讲的postman。 

上一篇文章:

有什么问题可以留言看到必回复。