学习总结—JMeter实现web接口测试实践举例
Posted 软件测试攻城狮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习总结—JMeter实现web接口测试实践举例相关的知识,希望对你有一定的参考价值。
测试项目:
本地搭建的jforum项目
测试内容:
登录:通过账号密码登录,并验证是否登录成功;
进入板块:实现动态获取板块信息,验证是否能正确进入板块;
发帖:实现不同板块随机发帖,验证是否发帖成功;
一、登录验证
第一步,打开JMeter
图1
新建一个线程组,命名为登录发帖
图2
新建一个HTTP请求,维护参数URL及请求参数等信息。
图3
图4
当我们需要维护HTTP请求头的一些信息的时候,我们需要新建一个HTTP信息头管理器,在这里我们可以管理HTTP请求头的信息。
图5
图6
整个测试过程中,当我们需要查看运行结果时,我们需要用到监听器,这里我们新建一个察看结果树用于查看运行结果,察看结果树放的位置不同,查看的结果也不同。在线程组下添加察看结果树,查看线程组下所有请求的结果;放在具体某个请求下,只查看此请求的结果;若放在某个控制器节点下,则查看此控制器下节点执行的结果。我们这里放在线程组下。
图7
以下是运行结果,在察看结果树中,可以以不同的显示方式查看请求信息及响应信息。
图8
图9
图10
根据测试需求,我们需要去判断是否登录成功了,即登录请求是否返回了登录成功的相关信息,这里我们就会用到JMeter中的断言,Jmeter中断言类型有许多,我们当前只举例使用响应断言,在实际的测试过程中,响应断言基本能够满足80%的验证问题,这里新建一个响应断言,来检查服务器响应数据是否返回预期想要的数据。
图11
图12
另外,我们可以新建一个断言结果,查看执行断言结果的信息。
图13
下面分别是断言成功和断言失败的显示:
图14
图15
图16
图17
二、进入板块并进行发帖
由于后面的请求都需要填写IP和端口号,且都一样,所以这里我们可以把IP和端口号在用户定义的变量中进行参数化,后面使用时直接使用变量名,也方便了统一管理。
图18
创建并维护“进入板块”的HTTP请求。
图19
创建并维护“发帖”的HTTP请求。
图20
从上图可以看出,发帖这个请求的参数格式和之前的登录请求不太一样,这里我们需要去设置HTTP信息头,配置对应的Content-Type。
图21
分别给进入板块和发帖添加响应断言,这里我们可以直接去匹配响应代码是否为200,添加完成后运行脚本,可以看到发帖后跳转了到发帖成功的页面(如图22),说明我们脚本执行通过,成功发帖。
图22
前面我们是进入了第一个板块,然后进行发帖,如果我们想进入别的板块,或随机进入一个板块进行发帖,这个时候我们就需要用到JMeter中的关联,我们需要提取服务器给我们返回的板块信息。我们可以返回去看登录成功后跳转的页面返回的板块信息(如图23)。
图23
这个地方我们只需要获取到1.page或3.page中的数字即可,因为这就是板块ID,在这里我们就可以用到正则表达式提取器。
在登录的HTTP请求下面新建一个正则表达式提取器。
图24
图25
利用正则表达式提取出来的值去参数化后面的请求。
图26
图27
运行一下,我们可以看到板块信息变成了4.page:
图28
图29
同时,我们登录论坛可以查询到板块4.page下确实发布了一条新帖,但是这里我们发现这个新帖的发表人是“游客”(如图30),我们用的账户Admin登录后进行发帖,所以这里正确的显示应该为“Admin”,为什么会是“游客”,这是因为我们在登录后并未记录Cookie信息,所以会出现这个现象,这里我们可以在线程下创建一个“HTTP cookie管理器”。
图30
在线程下新建一个HTTP Cookie管理器,参数维护采用默认值即可。
图31
图32
这里当我们再次运行脚本的时候会发现前面创建的正在表达式提取器未能匹配到数据,这是因为我们记录了Cookie后,登录成功后跳转页面的内容细微的变化(如图33),所以我们只需要把正则表达式修改为<a href=".*show/(.*).page">即可。
图33
再次执行,我们可以看到发表人已经显示为“Admin”了。
图34
最后记录一个可以很好的测试和分析正则表达式的工具。
工具名:Regester
以上是关于学习总结—JMeter实现web接口测试实践举例的主要内容,如果未能解决你的问题,请参考以下文章