JMeter 实战一(如果你还不会,我愿意解答有关该文章的任何问

2018-08-16  本文已影响56人  顾顾314

今天开始使用一下JMeter。

我们公司开发的 App 主要是控制各种智能家居设备,比如灯光面板。

有这样一个需求,需要测试一个灯光面板反复的进行开关的操作,比如持续开关500次,结果会怎么样?

在讲这个需求之前先介绍如何使用 Charles 抓包获取请求接口参数。这里我选择和大多数人一样使用登录功能作为示例。

登录请求


如何创建测试计划,添加线程组在我的其他文章已有详细介绍,在此不赘述。


这里测试计划的名称定为“灯光面板开关测试”。
线程组的名称定位“登录”。
在线程组下添加一个取样器(sampler)HTTP 请求,取名为“登录请求”。

测试计划这里不做任何配置,线程组使用默认配置(因为这里并不是压测登录接口,只是用来讲解如何抓包获取请求接口参数)。

现在我们开始抓包获取接口参数了,请连接好 Charles,发送登录请求。

Charles 抓包得到的登录请求如下:


抓包登录请求

点击【Content】标签查看该接口的详细参数:


接口的请求体参数

有了登录的请求接口就可以配置取样器 HTTP 请求了,如图分别将该接口的 host 和路径填写到 JMeter:


登录接口 取样器配置

POST 请求一般都会有请求头和请求体,这里的登录接口也不例外。抓包已经获取请求体信息,那么在 JMeter 的取样器中如何配置呢?直接将抓包获取的请求体复制粘贴就好了,如下图所示:


配置请求体

点击【Headers】标签查看请求头参数:


登录接口的请求头参数

接口有了,请求体配置好了,下面该配置请求头了,在线程组下添加“HTTP 信息头管理器”,抓包获取的请求头有些对于接口测试来说是非必要的,可以和开发确认哪些是必要接口,当然了也可以将抓到的请求头信息全部配置到 JMeter 中:


HTTP 信息头管理器

这样就配置完了,该发送请求了。添加一个监听器“查看结果树”。然后发送请求,结果如下:


查看结果树

如果请求出错,那么可以查看【请求】,如下:


请求结果

可以将这里数据和抓包得到的数据进行对比,看看是否一致。一般都会很容易找到问题,如果找不到,可以求助开发人员,他们对接口会很熟悉。

  

控制灯光面板


文章开头我们说了这是一个开关交替不断重复的动作。这时候 JMeter 的【交替控制器】就非常有用了;这里是开关两个请求,所以需要两个 【HTTP 请求】,一个是开灯,一个是关灯;因为是POST 请求,所以还要有【HTTP 信息头管理器】;通过抓包我得知开灯和关灯两个请求接口和参数有相同的部分(实际上开灯和关灯接口参数完全相同),所以我们还可以使用【HTTP 请求默认值】来减少相同参数的配置。如下图所示:

线程组结构树

开灯和关灯两个请求的接口和请求体(没有请求头)参数相同,所以我们配置到【HTTP 请求默认值】这个元素里:


HTTP 请求默认值配置

交替控制器不需要配置,因为开灯和关灯的请求完全相同,都配置到了【HTTP 请求默认值】里,所以这两个取样器也不做配置,但是必须要有这两个取样器,就让他们空着。

最后,执行查看结果:


查看结果树

  

异常情况


这里异常情况分两种:

1、接口请求异常,报错
2、接口请求正常,但是设备没有响应

先说第一种,这种情况一般是 URL 有误,这里我将 URL(服务器名称和路径的组合)故意改错一点,再次发送请求:

接口异常报错

再说第二种,这是一个比较难以排查的问题。接口正常,但是参数错误,这里我故意改错一个参数:


参数错误

这里“取样器结果报200,那就说明接口正常,但是设备没有响应,原来服务器返回了结果是“参数错误”。

补充说明

在实际操作中,我遇到了另一个问题,接口正常,参数正确,但是设备就是没有响应。服务器返回的结果是“用户未登录”。原来是因为有一个参数值会随着用户每次重新登录而改变;并且每次发送接口时,App 必须处于登录状态。

上一篇下一篇

猜你喜欢

热点阅读