运用Jmeter进行登录测试

发布时间:2024年01月03日

开始了解Jmeter,写篇关于Jmeter的博客做备忘,这里以苏宁易购网站的登录请求为例实战来说明测试计划元件,创建一个 Web 测试计划。

1、在安装目录下有一个Bin\Jmeter.bat 双击打开

打开之后是一个这样的界面

2、?添加和删除元件

在一个树上通过右击可以添加元件到一个测试计划 ,并且从"添加"列表中选择 一个新元件。另外,元件可以从文件加载并且通过选择"打开"选项添加。 为了删除元件,确保元件被选中,正确在元件上右击,并且选择"删除"选项

3、测试计划-右键-添加-线程(用户)-线程组

要想用Jmeter 发送请求,必须先在浏览器中截取相关参数,现在以谷哥浏览器为例介绍如何截取参数

在浏览器输入苏宁官网之后点登录按键,会进入输用户名和密码的界面,在这里我们按下F12 调出控制台,选到Network,注意选中Preserve? log

当我们输入用户名和密码之后点击登录之后最下方就会记录相关请求。

如下图所示,这里看到一个login 请求,单击login 请求进去看详细相关信息。

请求报文头信息,这里的信息头有时也是需要填的

有时前台有验证码,无法用接口方式进行登录,我的做法是在每一个请求中将所有报文头放进去,包括Cookies

选到PayLoad,这个就是我们平时说的参数,是每个请求中最重要的组成部分。

可以看到我们虽然只做了一个登录请求,但实际系统传输了这么多参数,由于其它几个参数我不懂是什么意思,后续讲到参数化时就以用户名和密码进行

在捕捉到了这个请求之后我们就可以在线程组下新建HTTP 请求

4、在线程组-添加-取样器-Http请求

按如图所示填写

为了保存我们的成果,这里先存一下?

为了让等会可以看到执行结果,我们在这先添加一个右键添加-监听器-察看结果树的元素

?

执行启动按键

执行之后我们看到察看结果树中有对应响应信息

从响应信息中可以看到执行成功了,因为返回了一个OK

在这相信大家都想到一个问題,断言

测试执行了那就肯定要判断预期结果与实际结果是否相等

现在我们来进行这一个操作

5、右击HTTP请求-添加-断言--响应断言

这里有好多种断方方式

因为在一串字符串每个用户都可能存在的只有一个OK

也就是说OK 只是包含在响应文本中,所以这里我们选择包括模式匹配

响应断言还只是让系统进行检查下,那我们还需要系统给一个信息,就是检查之后给我们返回一个响应信息,是成功还是失败

这里我们再加一个元素:断言结果

6、HTTP请求-监听器-断言结果

设置完之后结构大致是这样,如果不同你可以手动拖动元素到对应结构中

现在我们再次运行请求

切换到断言结果,看到方框中就是一个HTTP 请求,其它什么信息都没有,那这是什么意思呢

我们再切换到察看结果树中,检索响应代码出现对应的验证字符串OK,代表上面那样显示是成功的意思?

那如果请求失败会是什么样子的呢

现在我将HTTP请求中的用户名修改下正常情况下肯定会失败对吧,再次运行

我们可以看到响应代码中多了一行字符串Test Fail

从上述我们可以看到如果只显示请求名称代表断言成功,如果有一行字符串TEST Fail

代表对应请求断言失败

?有时单独发送请求一直会失败,那这个时候可以尝试在请求中增加HTTP信息头管理器?

7、HTTP请求-配置原件-HTTP信息头管理器?

信息头管理器就是将最初在浏览器捕捉到的报文头信息全加到这

添加之后类似于这样

快捷添加办法:浏览器中复制,jemeter中点击从粘贴板添加

?因为前面我们运行过已生成了一些记录,这里我们点一下最上方的扫把清除一下记录

清除之后察看结果树中就没有任何记录

现在我们来参数化用户名和密码数据

在参数化之前我们先在C盘创建一个TXT? 文件用于存放用户名和密码

8、HTTP请求-添加-配置元件-CSV Data Set Config

按如图所示填写

输入参数化文件名称,用户名和密码,分割符

因为我们参数化是要放入到请求中,所以这里我们先移动参数化元素到请求之前

${变量名称} 格式修改请求信息?

?运行之后查看结果树中的请求

已将参数化中的值替换过来了

大家可能注意到了参数化中明显有两行数据,但在这只被执行了一行正确的数据,错误的那一行数据没有被执行

出现这种原因是因为线程组默认是1次请求,所以即你设置成循环,系统也只能执行一次,现在我们将线程线次数设置为5次

再次运行

这一次一共运行了5次,失败的参数也取出来了

文章来源:https://blog.csdn.net/Yansky58685/article/details/135357797
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。