软件测试-接口测试

学习笔记记录

做接口测试,一般测试的接口都非常多,我们需要使用抓包工具来便捷式获取多个接口信息。

常用的是fiddler。有新版本FidderEverywhere,但是要钱。网上也有一些破解版链接,但是链接都失效了,也有大佬分享了破解方法,但是因为没用过我是无从下手,最后就找了fiddler的中文版免费版。

一、测试业务场景

        1、登录,修改信息,搜索,选择商品

在操作时,需要一直打开抓包工具。

二、接口测试完成流程

        1、获取分析接口的信息

        2、设计测试用例

        3、postman实现接口请求发包,以及结果断言。

                四大要素:url        http方法        请求体        请求头(Content-Type)

三、登录鉴权的方式

                Cookie与Session     token

Http协议是无状态的协议,Cookie与Session用于补充跟踪会话状态。Cookie与Session的工作流程如下图(图片来自于B站的教学视频)。

session相当于前台登记的信息,房间号相当于一个SessionID,房卡是Cookie。

可以在开发者工具的Application里看到,Cookie是由服务端返回给客户端,在客户端本地保存。至于哪一个Cookie是登录状态的Cookie,这是开发决定的。

session是保存在服务端的一次会话。

  • Session用于存储服务器端状态数据,通过session ID识别用户,存放于服务器,安全但占用服务器资源。

  • Cookie存储在客户端,通常存放于cookie中,安全性较低,适合存储非敏感信息。

  • Token是一种无状态的认证方式,适用于分布式系统,具备简洁和自包含优点,一般放在header中明文传输。

首次访问登录接口成功之后,服务端通过返回头的Set-Cookie字段,返回cookie内容,下次请求的时候,带上cookie请求即可。

蓝桥登录测试为例

1、打开fiddler

2、打开蓝桥界面,进行登录操作。
3、关闭捕获,找到登录界面的信息条。

重点关注标记出来的信息。

4、打开postman,创建一个项目,链接,请求

因为本人也是第一次使用postman,所以在这里记录一些创建的步骤,使用postman是需要创建账号的,创建后就可以免费使用,但是一定要记得用户名和密码,因为找回密码的时候邮件是接收不到的。

进入postman后,开始创建项目。

创建成功后就是下面这样的界面。

5、将在fiddler里获取到的信息填入。

cookie可以不填,点击send后,会返回一个set-cookie,在下次请求时postman会自动带上cookie。

postman中,cookie有自己的管理机制,可以自动保存。

四、接口测试报文中的编码

\u 4位16进制数,Unicode编码,可以通过postman里的返回体选择pretty里的json来转换为对应的特殊字符。

% 2位16进制数,url编码格式,可以网上找url在线解码工具

五、搜索获取商品id

使用正则表达式,在postman的Tests里编写。

一般规律:把需要的内容前后复制进来。把要的那部分用(.+?)代替。

//要获取的id的规则
var regex=/<tr data-id="(.+?)">/g;
//<div class="course-cover relative" data-v-b7db37b4><img src="*">" alt="Python 新手入门课" 
// 
//获取返回结果
var content=pm.response.text();
//在console中输出结果检测
// console.log(content);
// 通过正则在content中搜索需要的alt
var result=regex.exec(content);
console.log(result);

六、环境变量的使用场景

1、有些变量是需要频繁维护的,为了方便修改,可以设置环境变量。

添加一个环境变量,再需要用的时候写{{变量名}}

操作步骤

 

然后再原先的变量(原先变量名为username)位置更改为{{登录账号用户名}}

2、参数传递

上一个接口得到的结果,在下一个接口中要使用

操作步骤

在接口的texts脚本中完成变量的存储,代码后添加

pm.environment.set("变量名称",result);

点击sends,打开环境变量后就会发现变量自动添加。

在取时依旧使用{{变量名称}}

七、校验结果

也就是断言,一般我们判断接口是否成功都是通过肉眼观察得到,现在需要添加断言来查看结果。

在每个接口的tests文件里选择右侧的Response body:JSON value check,代码自动生成后,将红色框选的部分更改为自己需要使用的。

 比如在登录接口中,返回的结果应该是status=1,那么tests里面应该改为:

pm.test("接口登录成功", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.status).to.eql(1);
});

点击send后,会在Test Result下面看到测试结果

对于一些添加接口,如何进行结果检测?

一般添加成功后,返回的结果都会改变,我们可以通过判断返回结果里是否包含添加的数据来进行断言。

点击右侧的断言列表里的Response body: Contains string

在系统自动生成的代码中进行更改。

前面我们是进行了商品名的设置,现在我们要获取商品名,就要将红框内容进行更改。

pm.test("结果中包含添加的商品名字"+pm.environment.get("商品名"), function () {
    pm.expect(content).to.include(pm.environment.get("商品名"));
});

第一个更改:结果运行后会带上获取到需要的结果

第二个更改:直接从content中进行检索

第三个更改:获取结果添加的商品名

在所有流程接口的texts里写完断言后,批量运行,通过run collection

点击运行后,接口就会自动执行。

一趟接口测试操作就完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值