Jmeter进行登录接口测试时,为啥有时登录成功,有时登录失败?求大神指点~

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jmeter进行登录接口测试时,为啥有时登录成功,有时登录失败?求大神指点~相关的知识,希望对你有一定的参考价值。

Jmeter进行登录接口测试时,设置了HTTP Cookie 管理器,第一次访问登录页面时没有返回cookie,第二次会有,但是登录的时候有时成功,大多数时候失败

参考技术A 你家的电脑重装系统过吗看
如果重装过,俩字,重下。
如果没重装,请检查声卡和显卡,如还不行,同上
参考技术B 小锅下雨是不能看的称为雨衰,只能等天晴再说。你要解决只能更换更大的锅盖

学习总结—JMeter实现web接口测试实践举例

测试项目:

本地搭建的jforum项目

测试内容:

登录:通过账号密码登录,并验证是否登录成功;

进入板块:实现动态获取板块信息,验证是否能正确进入板块;

发帖:实现不同板块随机发帖,验证是否发帖成功;

 

一、登录验证

第一步,打开JMeter

1

新建一个线程组,命名为登录发帖

学习总结—JMeter实现web接口测试实践举例

2

新建一个HTTP请求,维护参数URL及请求参数等信息。

学习总结—JMeter实现web接口测试实践举例

3

学习总结—JMeter实现web接口测试实践举例

4

当我们需要维护HTTP请求头的一些信息的时候,我们需要新建一个HTTP信息头管理器,在这里我们可以管理HTTP请求头的信息。

学习总结—JMeter实现web接口测试实践举例

5  

学习总结—JMeter实现web接口测试实践举例

6

整个测试过程中,当我们需要查看运行结果时,我们需要用到监听器,这里我们新建一个察看结果树用于查看运行结果,察看结果树放的位置不同,查看的结果也不同。在线程组下添加察看结果树,查看线程组下所有请求的结果;放在具体某个请求下,只查看此请求的结果;若放在某个控制器节点下,则查看此控制器下节点执行的结果。我们这里放在线程组下。

学习总结—JMeter实现web接口测试实践举例

7

以下是运行结果,在察看结果树中,可以以不同的显示方式查看请求信息及响应信息。

8

学习总结—JMeter实现web接口测试实践举例

图9

学习总结—JMeter实现web接口测试实践举例

图10

根据测试需求,我们需要去判断是否登录成功了,即登录请求是否返回了登录成功的相关信息,这里我们就会用到JMeter中的断言,Jmeter中断言类型有许多,我们当前只举例使用响应断言,在实际的测试过程中,响应断言基本能够满足80%的验证问题,这里新建一个响应断言,来检查服务器响应数据是否返回预期想要的数据。                    

学习总结—JMeter实现web接口测试实践举例

11

学习总结—JMeter实现web接口测试实践举例

12

另外,我们可以新建一个断言结果,查看执行断言结果的信息。

学习总结—JMeter实现web接口测试实践举例

13

下面分别是断言成功和断言失败的显示:

学习总结—JMeter实现web接口测试实践举例

14

学习总结—JMeter实现web接口测试实践举例

15

学习总结—JMeter实现web接口测试实践举例

16

学习总结—JMeter实现web接口测试实践举例

17

 

二、进入板块并进行发帖

由于后面的请求都需要填写IP和端口号,且都一样,所以这里我们可以把IP和端口号在用户定义的变量中进行参数化,后面使用时直接使用变量名,也方便了统一管理。

学习总结—JMeter实现web接口测试实践举例

18 

创建并维护“进入板块”的HTTP请求。

学习总结—JMeter实现web接口测试实践举例

19

创建并维护“发帖”的HTTP请求。

学习总结—JMeter实现web接口测试实践举例

图20

从上图可以看出,发帖这个请求的参数格式和之前的登录请求不太一样,这里我们需要去设置HTTP信息头,配置对应的Content-Type

学习总结—JMeter实现web接口测试实践举例

21

分别给进入板块和发帖添加响应断言,这里我们可以直接去匹配响应代码是否为200,添加完成后运行脚本,可以看到发帖后跳转了到发帖成功的页面(如图22),说明我们脚本执行通过,成功发帖。

学习总结—JMeter实现web接口测试实践举例

22

前面我们是进入了第一个板块,然后进行发帖,如果我们想进入别的板块,或随机进入一个板块进行发帖,这个时候我们就需要用到JMeter中的关联,我们需要提取服务器给我们返回的板块信息。我们可以返回去看登录成功后跳转的页面返回的板块信息(如图23)。

学习总结—JMeter实现web接口测试实践举例

23

这个地方我们只需要获取到1.page3.page中的数字即可,因为这就是板块ID,在这里我们就可以用到正则表达式提取器。

在登录的HTTP请求下面新建一个正则表达式提取器。

学习总结—JMeter实现web接口测试实践举例

24

学习总结—JMeter实现web接口测试实践举例

25

利用正则表达式提取出来的值去参数化后面的请求。

学习总结—JMeter实现web接口测试实践举例

26

学习总结—JMeter实现web接口测试实践举例

27

运行一下,我们可以看到板块信息变成了4.page

学习总结—JMeter实现web接口测试实践举例28

学习总结—JMeter实现web接口测试实践举例29

同时,我们登录论坛可以查询到板块4.page下确实发布了一条新帖,但是这里我们发现这个新帖的发表人是“游客”(如图30),我们用的账户Admin登录后进行发帖,所以这里正确的显示应该为“Admin”,为什么会是“游客”,这是因为我们在登录后并未记录Cookie信息,所以会出现这个现象,这里我们可以在线程下创建一个“HTTP cookie管理器”。

学习总结—JMeter实现web接口测试实践举例

30

在线程下新建一个HTTP Cookie管理器,参数维护采用默认值即可。

学习总结—JMeter实现web接口测试实践举例

31

学习总结—JMeter实现web接口测试实践举例

32

这里当我们再次运行脚本的时候会发现前面创建的正在表达式提取器未能匹配到数据,这是因为我们记录了Cookie后,登录成功后跳转页面的内容细微的变化(如图33),所以我们只需要把正则表达式修改为<a href=".*show/(.*).page">即可。

学习总结—JMeter实现web接口测试实践举例

33

再次执行,我们可以看到发表人已经显示为“Admin”了。

34


最后记录一个可以很好的测试和分析正则表达式的工具。

工具名:Regester


以上是关于Jmeter进行登录接口测试时,为啥有时登录成功,有时登录失败?求大神指点~的主要内容,如果未能解决你的问题,请参考以下文章

jmeter测试接口,需要是登录状态,怎么办

使用jmeter进行接口测试

Jmeter登录接口测试

Jmeter接口测试系列之测试用例变量参数化处理

jmeter察看结果树结果,为啥响应断言为true时,也是红色的?

巧用jmeter逻辑控制器,解决压测中的登录问题