pei_blog

导航

 

day1内容大纲

 

 

 

 

 

 一、什么是接口

1.什么是接口,接口的作用

接口用于进行前后端通信,前端使用html,css js语言 ,ios使用object-c语言,安卓使用java语言,后端使用java python,php等语言,使用接口可以进行前端与后台通信

2.接口测试:

接口测试需要有接口文档接口文档定义请求路径,请求参数,返回参数说明 入参格式,请求方式等

3.接口测试用例设计:

项目,模块,用例标题,url,请求方式,请求参数,检查点,返回结果,用例状态,测试人员

4.接口签名:

接口签名用于保证接口不能随便被调用,例如参数中sign 使用一定的格式进行加密,传输给后端 后端进行比对后,判断是否可以调用

二、http请求以及post与get请求

1.http请求组成:

ip地址,路径 

url:代表能找到的路径 

请求头:额外的信息 例如支持什么浏览器(user-agent)请求从什么地方过来,请求参数类型(form-json)

请求体:一些具体的请求

 

2.状态码解析:

200:成功,调通状态

3xx:重定向

4xx(404):找不到地址, 4开头都是客户端问题(参数传错 地址写错)

500:服务端问题

 

3.post请求与get请求的区别

post请求有get请求最大的区别是 get请求没有请求体 ,所以不能上传文件等接口 不能使用get请求

4.cookie与session:

cookie:存在本地的一对键值对,用于存储用户信息,可以设置失效时间,失效后 用户信息失效,需要重新登录等操作

session:存在服务端的一堆键值对,功能与cookie相似

工作原理:当前后端进行通信时,前端请求会携带cookie与服务端session进行对比,校验一致 才可进行下一步请求,当存在一方失效时,需要重新登录授权

 

 

三、接口测试之postman使用

1.get请求类测试

get请求可以直接通过浏览器进行,直接是url拼接?k=即可 也可通过postman 一样的方式

(1)浏览器请求:

在浏览器http://api.nnzhp.cn/api/user/stu_info?stu_name=xiaohei,其中  http://api.nnzhp.cn为接口域名,/api/user/stu_info为接口地址,stu_name为接口参数,且必传 所以使用?(英文问号)拼接在接口地址后面,结果如下:

 

(2)使用postman测试,注意get请求传参是在params下

 

 

 

2.post请求类测试

(1)键值对传参:post类请求不能直接在浏览器进行请求,需要借助postman。键值对类传参形式,是在body-form-data里面进行传参,输入参数名称以及对应的参数值(见图)

 

 

(2)json传参,当为json传参形式时,传参位置在body-raw ,最后面类型选为json形式,json书写方式:

{
    "name":"blog",
    "grade":"一年级",
    "phone":"13555768988",
    "sex":"男",
    "age":19,
    "addr":"广州"
}

 

 

(3)上传文件,传参位置在body-form-data里面 注意将key的类型选择为file形式,value就可以上传本地文件,这也是form-data与x-wwwurlcoded的主要区别,x-www-urlcoded无法上传文件

 

 

(4)需要cookie类请求(qq群抓包获取群列表)

在qun.qq.com 找到群管理 选择一个群  通过f12找到群成员接口,使用抓取到的数据进行测试发现无法请求到成员列表,这种情况下查看f12里面数据 是需要有登录信息,但是该接口没有需要输入账号密码的字段 所以需要传cookie,所以需要在headder里面传cookie 复制抓取到的cookie

 

 

 

 

 

 

3.接口保存与定义变量

(1)接口保存:当同一个项目需要讲接口保存在同一目录下面,方便下一次调用,可以选择保存接口,类似于本地创建文件夹

 

(2)定义变量

当存在多个接口使用同一个域名,或者多个接口使用同样的字段等情况,可以将通用部分提取出来定义为变量,然后进行引用

第一步:定义变量:将域名定义为变量

 

 

 

 

第二步:引用变量,格式为{{变量名称}}

 

 

 

3.批量运行接口

(1)批量运行接口:创建变量文件,选择接口 ,引用变量,批量运行接口

第一步:找到批量运行接口入口:如下图runner--选择接口文档--选择需要运行的接口

第二步:准备文档:例如添加学生接口,添加学生接口字段有name,grade,phone三个字段为必填,sex,age,addr三个字段选填,,首先创建文件用于保存接口参数值,可以创建txt文档或者csv文档,此处使用csv文档,如图,表头代表变量名称,用于引用

 

第三部:引用变量:原理同前面变量引用,使用{{变量名称}}引用到对应的字段,后记得保存

 

 

 

第四步:设置运行页面,选择要运行接口 上传准备好的文件,可以预览文件,然后点击运行

预览效果如下图:

 

结果页面:可以通过·查询学生接口验证是否添加成功

 

 

 

 

 

 

 

4.设置断言:

(1)什么是断言:

断言的作用是判断接口运行是否通过,通过上面的图片可以看到,通过和失败的接口数都是0 ,那是因为没有设置检查点,也就是断言,断言分为几种,主要是用于判断相应是否通过

(2)设置断言:在接口测试页面--点击test 既可以看到各种断言

 

 

 

(3)断言类型

第一类:status code:code is 200 用于判断相应状态码是否为200 ,点击后就会自动填写相应断言代码

 

第二类:response body:contains string:判断相应数据是否包含某个字段(见例子,判断相应数据是否包含userid字段)

pm.test("判断是否登录成功", function () {
    pm.expect(pm.response.text()).to.include("userId");
});

 

 

第三类:response body:json value check判断相应数据中某个字段是否等于某个值,例如:判断userid是否等于某个字段,userid在login_info里面 为字典格式 所以引用为login_inf.userId

pm.test("判断userid是否正确", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.login_info.userId).to.eql(63);
});//判断登录接口userid是否等于某个字

 

 

 当批量运行接口时,userid的值不固定时,就需要利用参数化,这时就需要将userid值写活,同样需要用到参数化概念;具体操作如下

(1)在创建文件时,除去正常字段外另外加一个变量,用于引用判断,如下图新增user_id_check字段 用于判断相应获得userid是否与文件内id字段一致,一致即验证通过

 

 

(2)引用变量,get a variable 用于获取变量,get a global variable 用于获取刚刚在global里面设置的变量

变量引用: pm.variables.get("user_id_check"); 括号内填入 文件设置的字段名称 用作引用,然后进行批量运行函数1 即可得到结果

 

 

补充:相互关联型接口测试,例如金币重置接口需要在登录情况下 ,获取到登录的cookie, 登录的cookie在登录接口调用后返回,这时就需要获取到登录接口返回的数据,去到cookie(sign)然后定义为全局变量,供增加金币接口调用,具体如下:

先调用登录接口 在断言(tests)里面response body:json value chack 用于获取响应数据并进 行检查,代码第二行 var jsonData = pm.response.json(); 获取到返回的数据  然后去获取返回数据中对应的字段值 定义为sign  :var sign=jsonData.login_info.sign;然后将sign定义为全局变量 get a global variable  ::pm.globals.set("token", sign) 运行接口后 就可以在全局变量中看到该字段

然后再增加金币的接口即可引用该变量

 

 

 

 

 

 

 

 四、charles的使用

1.安装与破解:

参照:https://www.zzzmode.com/mytools/charles/

2.开启抓包

在proxy下勾选windows proxy 即可抓取电脑端的数据

 

 

 

3.过滤请求

在首页下面fiter里面输入对应的网址等关键字,即可过滤其他不需要请求

4.断点:拦截数据修改数据,以百度为例,选择百度网址,右键 勾选breakpoints

 

然后浏览器请求该网址,会在charles上进行拦截,点击execute进行放行后,修改返回数据,找到对应需要修改数据 进行修改后 放行(execute)

 

 

 

原理:正常请求是从客户端发送到服务器, 开启charles代理后,客户端发送到服务端的数据需要经过charles 首先客户端到服务端的请求先放行后,从服务端返回来的数据经过charles进行处理修改,放行回到客户端。

5.弱网测试:在proxy--throttle-Settings勾选enable throttling 选择对应网速 也可以自定义网速

5.映射

(1)map remote settings:远程映射

在tools--map remote settings设置,添加原本网址 输入 需要映射到的网址,保存后 在浏览器验证就可以得到结果

 (2)map local settings:映射到本地 原理与上面类似

6.手机代理

手机端设置代理,需要手机和电脑链接同一局域网,然后再手机端 wifi里面配置代理  服务器为电脑ip 端口 8888 保存后就会在charles弹出是否允许链接,点击允许后 即可抓取手机端包

 

7.谷歌浏览器无法抓取请求处理:需要安装扩展程序

参照:https://blog.csdn.net/wuguidian1114/article/details/89037056

8.https请求抓取

参照:https://www.cnblogs.com/lisa2016/p/12104198.html

 

posted on 2021-04-14 13:49  pei_blog  阅读(175)  评论(0)    收藏  举报