自动化接口实战(二)

说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!

接着上一篇博客继续往下写 :https://blog.youkuaiyun.com/qq_41782425/article/details/100180470

目录

一丶JMeter介绍及安装

1.介绍

2.安装

二丶JMeter接口自动化

1.jmeter中的元件

2.jmeter实战


一丶JMeter介绍及安装

1.介绍

Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器等等。JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能。同时,JMeter可以帮助你对你的应用程序进行回归测试。通过你创建的测试脚本和assertions来验证你的程序返回了所期待的值。为了更高的适应性,JMeter允许你使用正则表达式来创建这些assertions.

JMeter与LoadRunner比较

JMeter 是一款开源(有着典型开源工具特点:界面不美观)测试工具,虽然与LoadRunner相比有很多不足,比如:它结果分析能力没有LoadRunner详细;很它的优点也有很多:

1.开源,他是一款开源的免费软件,使用它你不需要支付任何费用,

2.小巧,相比LR的庞大(最新LR11将近4GB),它非常小巧,不需要安装,但需要JDK环境,因为它是使用java开发的工具。

3.功能强大,jmeter设计之初只是一个简单的web性能测试工具,但经过不段的更新扩展,现在可以完成数据库、FTP、LDAP、WebService等方面的测试。因为它的开源性,当然你也可以根据自己的需求扩展它的功能。

两者最大的区别:jmeter不支持IP欺骗,而LR支持。

JMeter缺点与内部功能详细说明

使用JMeter无法验证JS程序,也无法验证页面UI,所以要须要和Selenium配合来完成Web2.0应用的测试。

2.安装

1.因为jmeter是由java语言开发的,所以要使用jmeter那么需要安装jdk,安装完jdk后则需要配置环境变量

2.安装jdk并配置环境变量后,然后在cmd窗口输入java以及javac检验是否安装配置成功

3.将jmeter安装包进行加压后,点击运行bin目录下的jmeter.bat文件

4.运行成功后即打开软件窗口,如下

二丶JMeter接口自动化

1.jmeter中的元件

1.测试计划,所有的请求或其他操作都存在测试计划中

2.线程组,所有的操作都属于一个线程

a)添加线程组

b)添加线程组成功后如下,线程数表示使用多少个线程(用户)进行测试,Ramp-UP表示多少时间内跑完线程数,循环次数即循环多少次操作(访问)

3.取样器(sampler)

a)在线程组中添加HTTP请求的取样器

b)添加请求成功后如下

4.断言(对结果进行判断)

a)添加响应断言

b)添加断言成功后如下

5.监听器(对结果进行收集)

a)添加断言结果监听器

b)添加断言结果监听器成功后如下

2.jmeter实战

1.get请求模拟

a)在jmeter上模拟出全国天气预报根据城市名/id查询天气接口

b)在运行前,先保存该测试计划

c)运行,向目标接口发送请求

d)以上只是向目标接口发送请求数据,但是并没有响应结果,所以需要添加响应结果的监听器

e)添加察看结果数成功后,直接在察看结果数界面点击上方的启动按钮,成功的发送一次http请求,点击这个http请求查看响应的数据

f)对测试的接口进行断言(成功的断言),当请求成功则返回的响应数据中的error_code的值为0,那么我们断言0这个值即可

  • 再次启动,断言成功则在断言结果中只显示请求的方式http请求

g)对测试的接口进行断言(失败的断言),将响应断言中的值修改成10001,接口返回的响应数据中肯定没有10001这个值,即断言失败

  • 再次启动,断言失败则在断言结果中显示出不包含10001这个值

f)同理如测试全国天气预报天气种类及标识列表接口,则再创建一个线程组,在线程组中添加HTTP请求丶察看结果树丶响应断言以及断言结果等

2.post请求模拟

模拟根据GPS坐标查询天气接口

a)在jmeter上模拟出全国天气预报根据GPS坐标查询天气接口(不一样的就是需要修改为post方法)

b)运行后打开察看结果数中服务器返回的数据

  • ****有一个重点必须要说明:在HTTP请求中添加请求数据时,需要注意如果数据的名称在复制粘贴时,切记要双击点开看看,可能前面存在空格,导致发送请求后服务器返回错误响应数据

模拟根据IP查询地址接口

a)模拟根据IP查询地址接口(这是一个免费永久的接口,支持get/post两种请求)

b)运行后查看112.112.11.11ip的地址

模拟iwebshop登录接口

a)通过fiddler抓取iwebshop登录接口,首先查看域名

b)然后查看路径

c)最后查看请求数据,在body请求内容块数据进行全选复制

d)紧接着回到jmeter上点击Add from Clipboard直接从剪切板粘贴

f)运行后,在察看结果数中发送的HTTP请求(其余两条请求为重定向请求)

g)前两个请求中都没有响应数据

h)查看第三个请求的响应数据中的title是用户登录并且搜索cdtaogang用户搜索不到,说明并没有模拟登录成功

g)之所以没有模拟成功原因很简单,从fiddler中抓取的登录接口是携带了cookie的,但是我们在jmeter中模拟登录时并没有携带任何cookie,只是传递的登录的参数数据

h)解决方法,添加HTTP Cookie管理器即可,会自动帮我们生成所需的cookie

i)重新运行,查看响应数据,模拟iwebshop登录接口成功

j)对响应结果进行断言,断言根据响应数据中是否存在cdtaogang这个字符串

k)查看断言结果,没有任何问题

3.接口间参数传递

1.在上一篇博客中通过代码模拟了webtours登录接口,这个接口中的userSession参数就是通过另一个接口响应数据中获取的,现在通过jmeter来模拟webtours登录接口,首先配置HTTP请求

2.发送请求,查看响应数据,显然是失败的,因为接口请求的参数userSession的值是需要从另一个接口的响应数据中获取的

3.通过fiddler工具抓取的接口,可以查找出是哪个接口响应参数中存在userSession参数值

4.基于以上请求,需在jmeter中再创建一个HTTP请求用于获取响应参数中的userSession,因为存在两个HTTP请求,所以进行命名区分

5.查看OPEN请求的响应数据存在userSession值

6.上一篇博客中通过代码中的正则表达式提取出userSession的值,那么在jmeter中同样也是使用正则来获取,需要添加正则提取器

7.配置正则提取器

8.在LOGIN请求中userSession值配置匹配出来的变量usersession的值(因为是值所以需要使用${}进行提取)

9.运行后,查看响应数据,成功的模拟webtours登录接口

4.参数化

方式一:通过读取csv、txt文件获取数据

1.在iwebshop项目中添加如下配置

2.构造txt文本数据

3.在CSV Data Set Config中进行导入文件

4.在HTTP请求中配置读取txt文本的数据

5.运行查看发送的请求地址,因为只发送了一次,所以只读取了data_01.txt文本中的第一行数据

6.查看响应数据,登录成功

7.为了读取data_01.txt文本中的所有数据,所以在iwebshop配置循环次数为3次

8.再次运行,发送了三次请求,并将所有的用户名和密码进行了依次发送

9.在webtours中配置CSV Data Set Config,读取csv文档数据

10.查看构造的data_02.csv数据

11.在LOGIN请求中配置username以及password的值

12.配置webtours循环次数为3次,运行后查看请求,读取csv数据成功

13.在csv数据中第一行的用户名密码为正确其余的都是错误的,所以在对应的响应数据中提示用户名密码错误

14.模拟登录成功的话提示数据为用户名密码正确correct,不正确为incorrect

15.即那么我们就可以通过响应数据中是否包含correct这个值来判断是否登录成功,首先在csv数据中添加expect预期值

16.紧接着在CSV Data Set Config中配置获取预期值数据接收变量

17.选中LOGIN请求添加响应断言以及断言结果

18.运行webtours后,断言结果都没问题

方式二、通过函数助手读取csv、txt文件

1.不再使用以上的方式,所以将webtours中的CSV Data Set Config进行禁用掉

2.点击函数助手

3.在函数助手中选择读取文件的类型,并且指定要读取的csv文件路径,以及csv文件第几列的数据(输入的是索引值从0开始计算,如输入0表示读取第一列数据也就是对应的用户名)

4.然后将复制生成的函数字符串粘贴到LOGIN请求参数中的username对应的值中,同理password也是需要在函数助手中进行生成,但是文件列号需要改成1表示第二列

5.同理预期结果也一样,在响应断言中进行更改

6.运行webtours后,发现LOGIN请求响应数据中的请求都是第一列和第二列的第一个,说白了就是第一行读取了三遍

7.导致以上结果的原因是,函数助手读取csv文件数据时是按照用户数来读的,而我们在webtours中配置的是一个用户读取三次数据,所以解决方法就是将线程数修改为3,循环修改为1,表示3个用户读取一次

8.重新运行,查看响应数据,成功的读取csv中的所有数据

方式三、通过用户参数设置数据

1.在webtours添加用户参数

2.在用户参数中配置变量以及对应的用户

3.在LOGIN请求中配置请求参数中的username以及password

4.在响应断言中配置预期结果值

5.最后在webtours线程组中修改用户数以及循环数

6.运行后,从响应数据请求中的参数还是跟(方式二、通过函数助手读取csv、txt文件)一样只是读取一行

7.即还是需要将webtours线程组中的用户设置为3,循环设置为1,再次运行,响应结果中的请求数据显示读取不同的csv数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cdtaogang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值