postman和charles

一、接口测试 

接口的两个概念:前段(负责展示)和后端(负责逻辑);连接前段和后端,通过接口来交互,接口会返回一种通用的数据类型,所有的语言都认识。JSON( 接口返回的数据都是通用的,key 、value这种叫josn格式)

一、get请求

  用来向服务器获取数据(①没有请求体,它的数据是在url里面放的)

1、get请求如何传参:在链接后加一个 “”符号再加上参数等于XX即可;多个参数中间加&符号

2、get请求的请求参数只能写在Params里

二、post请求
  用来向服务器发送数据

1、psot请求的请求参数不能写在Params里,写在Body-form-data里 : key和value格式

2、入参是josn类型:选择body-raw-josn 

3、josn格式:大括号{}、key要双引号,逗号 ;注意:最后一行没有逗号

  {"name":"小刘",
   "grade":"天蝎座",
   "phone":18000000086}

4、接口测试需要登录的接口操作,cookie写在headers里

5、所有交互都是通过http请求来发请求的,http请求分:请求头、请求体、

  ①请求头:headers(1)存放一些额外的信息(2)请求发过来时候用的是什么浏览器。
  ②请求体:boay - 发送的数据 

  ③url   :是用来标识要发给哪个网站,要调用哪个路径

6、浏览器里如何抓包:检查-network查看

  ①XHR:想要过滤图片,点击XHR,只是调后端接口发的请求

  ②Headers:可以再浏览器中看到每一个网站,发出的请求以及调用的那些接口

  ③Response:接口返回的数据

  ④Preview:格式化的数据

7、cookie:

    存在客户端的一个键值对
  session:
    存在服务端的一个键值对

客户端发起请求,把cookie里的键值对拿过来,一并发给服务端,服务端也存了一个键值对,拿过来去查,核对成功,可以正常操作

 8、token写在headers里

9、postman里如何上传文件:body-formdate-选择file;修改文件类型;

10、formdate与x-www-form-rulencoded的区别:前者可以上传文件,后者不可以

11、Request Headers :

  ①Referer:判断从哪个页面跳过来的

  ②User Angent:查看哪个浏览器

  ③ Oeigin:域名地址

  ④Connection:保持连接

  ⑤Accept-Language: 字符集

  ⑥Accept:接受返回什么类型的数据

12、http状态码:

  2开头:一般都是成功

  4开头:客户端问题,访问的路径不存(客户端是我们自己的问题:访问不存在)

  5开头:服务单问题,也有可能是自己传参数导致,需要查看日志

三、postman常用设置

1、保存接口:点击save,新建文件,保存

2、定义变量:例如更换地址:点击右上角齿轮,点击Globals,在VARIABLE里输入host,在INITIAL VALUE里面输入地址,返回,将地址更换,{{host}}大括号,里面写上host,,在/api前写

3、参数化:新建一个文件保存桌面,点击Runner-选择项目-选择一个接口

  ①iterations:循环的次数

  ②delay:间隔时间 秒

  ③Log Responses:

  ④Date:选择一个文件

  ⑤Date File Type :textcsv  ;备注:勾选上Keep variable values

4、批量跑:value值写成变量:举例:将小黑改为{{name}},文件中名称为name,若为其他,改为其他,自己定义;文件中第一行名称和变量名对应

四、如何设置检查点

1、Tests :

  ①Responese body:Status code :判断请求发出之后,http状态码是不是200,这个是看状态的

    点击,出现pm.test("Status code is 200", function () {pm.response.to.have.status(200);}); 

  ②Responese body:Contains scring :包含哪些字符串

    点击,出现pm.test("Body matches string", function () {pm.expect(pm.response.text()).to.include("string_you_want_to_search");});

    其中,①Body matches string是检查点的名字,(随便改);②string_you_want_to_search是要检查的字符串(内容) ;举例:①处可以写“检查名称是否存在”;②处写“name”(双引号),并保存

  (备注:在桌面的文档里可以添加一条不存在的数据,可以检查到是哪条数据出了问题;但是这个属于单个检查点,但是我们想取name的变量,也就是如何添加动态检查点)

 五、如何添加动态检查点

 1、不仅检查数据是否存在,而且还要检查是否正确

  ①Get a variable :获取一个变量

  点击,出现pm.variables.get("variable_key");这个variable_key要从文件中取,取id :pm.variables.get("id"); 这行代码就表示,每次运行的时候,都从文件里把id取到,然后把这行代码,黏贴到name位置,这样每次取得时候就能取到id这个变量了

置,保存,运行 

  备注:postman 可以批量注册,造数据,批量上传等待

六、精准匹配参数

1、Responese body:JOSN value check; 精确匹配,某一个字段,值对不对

  点击,出现pm.test("①Your test name", function () {②var jsonData = pm.response.json();pm.expect(③jsonData.value).to.eql(④100);});①检查名字名字随便改; ②定义一个变量,获取到接口返回的结果;③要取的字段;④要取的值等不等于100

   原:pm.test("检查user_id", function () {var jsonData = pm.response.json();pm.expect(jsonData.error_code).to.eql(0);});      error_code接口返回的key,对比是不是0 ;想取哪个字段,就.哪个字段;把error_code变为stu_info[1].id).to.eql(100010881)   ,1为数组 

  后:pm.test("检查userid", function () {
     var jsonData = pm.response.json();//定义一个变量,获取到接口返回的数据
    pm.expect(jsonData.stu_info.[1].id).to.eql(100010881);//ejsonData后面是要取的字段,eal是判断登不等于这个值}); [1]为数组

七、抓包Charles

1、勾选Proxy-Windows Proxy

2、charles 修改返回的数据

3、检查-network:刷新页面 首先找到要拦截的api,在charles里找到要抓取的api,点击右键-Breakpoints,然后清除charles,再次查询,页面一直在加载,后端一直没有返回数据;

  ①Edit Request :limit:显示;  page:页  ;点击execute放行

  ②请求参数不改,修改 Edit responess 返回数据;点击execute放行

  ③加很多断点:Breakpoint Settings,能够看到加的所有的断点,也可去全部去掉 Enable

 

 八、手机抓包 

1、app弱网

 ①Proxy-Throttle Setting  模拟弱网测试;Only for selected hosts :如果只针对一个网站,需要Add,如果不设置,那就针对所有网站

 ②Charles抓取https请求 :手机抓包https://www.jianshu.com/p/674116a223cb  ;电脑抓httpshttps://www.cnblogs.com/fighter007/p/9162617.html 

 ③

原文地址:https://www.cnblogs.com/liuxiaoxiao-liu/p/12715538.html