• 接口测试重点内容看这一篇就够了


    1、接口的概念

    系统与系统之间,组件与组件之间,数据传递交互的通道

    2、接口的类型

    按协议划分:http、tcp、IP
    按语言划分:C++、java、PHP……
    按范围划分:

    • 系统之间
      多个内部系统之间
      内部系统与外部系统之间
    • 程序之间
      方法与方法之间、函数与函数之间、模块与模块之间

    3、接口测试的概念

    对系统或组件之间的接口进行测试,校验传递的数据正确性和逻辑依赖关系的正确行。

    4、接口测试的原理

    主要针对服务器,模拟客户端向服务器发送请求,通过工具或者代码来测试服务器针对客户端请求回发的响应数据是否与预期结果一致。

    5、接口测试的特点

    • 符合质量控制前移的理念
    • 可以发现一些页面操作发现不了的问题
    • 接口测试低成本高效益
    • 接口测试是从用户的角度对系统进行检测

    6、接口测试与功能测试的区分

    • 与手工设计相同之处
      手工测试对应的功能测试点,与接口测试对应的功能完全一致
    • 与手工设计不同之处
      手工测试,测写入到输入框中的数据是否正确
      但是接口测试测参数对应的参数值是否正确,此外还需对参数本身进行测试

    7、接口测试用例文档10要素

    编号、用例名称(标题)、模块、优先级、预置条件、请求方法、URL、请求头、请求体(请求数据)、预期结果

    8、postman的高级用法

    8.1常用断言

    (1)断言相应状态码 :Status code :Code is 200
    在test标签中,选中 Status code :Code is 200,生成对应的代码
    可调整方法参数里面的状态码
    点击send按钮发送请求,从而执行断言代码

    pm.test("status code is 200",function(){
       pm.response.to.have.status(200);
    });
    
    pm:代表 postman 的一个实例
    test():是 pm实例的一个方法。有两个参数
    	参数1:在断言成功后,给出的文字提示。可以修改。"Status code is 200"
    	参数2:匿名函数。
    pm.response.to.have.status(200); 
    // 意思:postman 的响应结果中应该包含状态码 200
    		200 ——> 预期结果!
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    例如:
    在这里插入图片描述
    (2)断言响应体是否包含某个字符串 : Response body: Contains string

    pm.test("body matches string",function(){
         pm.expect(pm.response.text()).to.include("i love success")});
    
    • 1
    • 2
    • 3

    (3)断言响应体是否等于某个字符串 : Response body : Is equal to string

    pm.test("Body is currect",function(){
         pm.response.to.have.body("response_body_string");
    });
    
    • 1
    • 2
    • 3

    (4)断言JSON数据 : Response bode : JSON value check

    pm.test("Your test name",function(){
         pm.expect(pm.response.json.value).to.equal(100);
    });
    
    • 1
    • 2
    • 3

    (5)断言响应头 : Response headers:Content-Type header check

    pm.test("Content-Type is present",function(){
         pm.response.to.have.header("Contype-Type");
    });
    
    • 1
    • 2
    • 3

    8.3全局变量和环境变量

    (1)全局变量
    设置:pm.globals.set(“全局变量名”,全局变量的值);
    获取:

    • 代码获取:var 接收值的变量 = pm.globals.get(“全局变量名”);
    • 请求参数获取:{{全局变量名}}

    (2)环境变量
    设置:pm.environment.set(“环境变量名”, 环境变量值)
    获取:

    • 代码获取:var 接收值的变量 = pm.environment.get(“环境变量名”)
    • 请求参数获取:{{环境变量名}}

    8.4postman请求前置脚本

    在send按钮点击后,请求前置脚本代码第一时间被执行,在postman内部实际Http请求之前。
    例如:设定时间内调用有效,超过时间调用无效
    实现步骤:
    1、在 Pre-request Script 标签页中,添加代码。拿到时间戳,写入全局变量

    var timestamp=new Date().getTime();
    pm.globles.set("glb_timestamp",timestamp);
    
    • 1
    • 2

    2、点击send按钮,发送请求。请求发送前执行上述代码,写入全局变量
    3、然后再请求参数界面中,使用全局变量。{{全局变量名}}

    8.5postman的工作原理

    在这里插入图片描述

    8.6postman 关联

    应用于多个http请求之间,有数据关联或依赖关系时。
    实现步骤:
    A接口依赖B接口的数据
    ①向B接口发送http请求,获取数据
    ②将数据设置到全局变量或者环境变量中
    ③A接口获取全局变量或者环境变量的数据值,进行使用

    8.7导入外部数据文件

    CSV文件:

    1. 创建 xxx.csv 文件。
    2. 将数据写入到 csv文件中。
      • 第一行 写入 的是 数据对应的 “字段名”。
      • 从第二行向后依次是对应的数值,数据间用 英文逗号隔分。
      • 在这里插入图片描述
    3. 在 Postman 中,选中使用数据文件的 用例集,导入数据文件。
      • 点击用例集名称,使用 Run 按钮,进入 “Runner” 页面。
      • 使用 “Select File” 按钮选择 xxx.csv 文件。
      • 点击 预览按钮,校验数据文件是否正确。
        JSON文件
    4. 创建 xxx.json 数据文件
    5. 在 数据文件中,按json 语法写入json数据。postman要求,json格式的数据文件,数据内容的最外层,必须是 [ ] 。内部所有的数据用 {} 存储。( 建议:使用 json.cn 在线网站编写。)
    6. 在 Postman 中,选中使用数据文件的 用例集,导入数据文件。
      • 点击用例集名称,使用 Run 按钮,进入 “Runner” 页面。
      • 使用 “Select File” 按钮选择 xxx.json 文件。
      • 点击 预览按钮,校验数据文件是否正确。

    8.8读取数据文件数据

    根据使用数据 位置 不同,有两种获取数据文件中数据的方法。

    • 第一种:请求参数(请求行、请求头、请求体)中,使用 数据文件中 的数据
      • 使用 {{}} 包裹 csv 文件 字段名 或 json 文件中的 key
        • 如: {{username}} 或 {{password}}
    • 第二种:代码(断言、请求前置脚本)中,使用 数据文件中 的数据
      • 需要借助 postman 提供的 关键字data 点 csv 文件的字段名 或 json文件的 key
        • 如: data.username 或 data.password

    8.9生成测试报告

    步骤:

    1. 批量执行测试用例(借助数据文件)
    2. 导出 测试用例集 (建议与 数据文件 放在一起)
    3. 执行生成测试报告的命令
    newman run 用例集名称.json -d 数据文件名.csv/.json -r html --reporter-html-export  报告名称.html
    
    • 1
  • 相关阅读:
    springBoot_swagger、异步任务、邮件发送、定时任务、集成redis、分布式(Dubbo、Zookeeper)
    一种多源信息融合方法及其应用(Matlab代码实现)
    java计算机毕业设计中小企业的在线工作日志管理系统源程序+mysql+系统+lw文档+远程调试
    Java 中Maven 和 ANT
    windows server 2012 R2的C盘空间满了,但是找不到大文件的两种原因
    运用滤波反投影的方法对图像进行重建matlab仿真
    【EMC专题】传导骚扰源和辐射骚扰源1
    笔记本无线网卡天线接线柱掉了(AUX和MAIN两个接口)
    机器学习的python编程基础
    虚拟机ubuntu20.04连不上网
  • 原文地址:https://blog.csdn.net/m0_54355780/article/details/126372981