使用postman测试api接口基本步骤

news/2025/2/24 1:36:15

测试一个已写好的 API 接口需要系统性地验证其功能、性能、安全性及异常处理能力。以下是使用 Postman 进行 API 接口测试的详细步骤和注意事项:


1. 确认接口文档

  • 明确输入输出:了解接口的请求方法(GET/POST/PUT/DELETE)、URL、请求头(Headers)、请求体(Body)、路径参数(Path Params)、查询参数(Query Params)等。
  • 预期结果:明确接口在正常和异常情况下的响应状态码、数据结构及业务逻辑。

2. 基础功能测试

步骤 1:构造请求
  1. 新建请求:在 Postman 中创建新请求,输入接口 URL。
  2. 选择 HTTP 方法:根据文档选择 GET、POST、PUT 等。
  3. 设置请求头
    • 添加 Content-Type(如 application/json)。
    • 身份验证(如 Authorization: Bearer <token>)。
  4. 设置请求参数
    • 路径参数(URL 中的变量,如 /users/{{id}})。
    • 查询参数(Query Params,如 ?page=1&limit=10)。
    • 请求体(Body):
      • 对于 POST/PUT,选择 raw 格式并输入 JSON 数据(示例):
        {
          "name": "John",
          "email": "john@example.com"
        }
        
步骤 2:发送请求并验证响应
  • 点击 Send,检查以下内容:
    1. 状态码(如 200 OK201 Created400 Bad Request)。
    2. 响应体:数据格式(JSON/XML)和内容是否符合预期。
    3. 响应头:如 Content-TypeCache-Control 等。

3. 参数化与动态数据

  • 环境变量:在 Postman 中定义环境变量(如 {{base_url}}{{token}}),便于切换测试环境(开发、测试、生产)。
  • 动态生成数据:在 Pre-request Script 中生成随机数据(如随机用户名):
    // 生成随机字符串
    const randomName = 'User' + Math.floor(Math.random() * 1000);
    pm.environment.set("random_name", randomName);
    
  • 在请求体中引用变量:{ "name": "{{random_name}}" }

4. 异常测试

  • 无效输入
    • 缺失必填字段(如不传 email)。
    • 错误数据类型(如用字符串代替数字)。
    • 超长字符串(测试字段长度限制)。
  • 身份验证失败
    • 无效 Token 或未传 Token。
  • 边界值测试
    • 数字参数的极大/极小值(如 page=0page=100000)。

5. 自动化测试脚本

在 Postman 的 Tests 标签页中编写断言脚本,自动验证接口行为:

// 检查状态码
pm.test("Status code is 200", () => pm.response.to.have.status(200));

// 验证响应字段存在且类型正确
pm.test("Response has user ID", () => {
  const jsonData = pm.response.json();
  pm.expect(jsonData.id).to.be.a('number');
});

// 验证业务逻辑(如创建用户后返回的 name 是否匹配请求)
pm.test("Created user name matches request", () => {
  const requestData = JSON.parse(pm.request.body.raw);
  const responseData = pm.response.json();
  pm.expect(responseData.name).to.eql(requestData.name);
});

6. 批量运行测试(Collection Runner)

  1. 将多个接口保存到 Collection 中。
  2. 点击集合右侧的 Run 按钮。
  3. 配置迭代次数、延迟、数据文件(如 CSV/JSON 文件驱动测试)。
  4. 查看测试结果报告,标记失败用例。

7. 高级测试场景

  • 依赖接口测试
    • 使用 Postman 的脚本功能,将上一个接口的返回值作为下一个接口的输入(如获取 Token 后用于后续请求)。
    // 在登录接口的 Tests 中提取 Token
    const token = pm.response.json().token;
    pm.environment.set("auth_token", token);
    
  • 性能测试(需 Postman 高级版或工具如 JMeter):
    • 验证接口在高并发下的响应时间和稳定性。
  • 安全性测试
    • 敏感数据是否加密(如密码明文传输)。
    • SQL 注入/XSS 攻击测试(如输入 ' OR 1=1 --)。

8. 结果分析与报告

  • 控制台日志:在 Postman 控制台(View → Show Postman Console)查看请求和响应的原始数据。
  • 导出报告
    • 使用 Newman(Postman 命令行工具)生成 HTML 报告:
      newman run my_collection.json -e my_env.json -r html
      
    • 集成到 CI/CD(如 Jenkins、GitHub Actions)。

9. 常用测试用例示例

测试类型用例描述预期结果
正常功能传所有必填字段,数据合法返回 200 OK,数据正确
缺失必填字段不传 email 字段返回 400 Bad Request
无效 Token使用过期 Token返回 401 Unauthorized
数据唯一性重复创建相同用户名返回 409 Conflict

10. 工具与扩展

  • Swagger/OpenAPI:导入 API 文档自动生成测试用例。
  • Mock 服务器:模拟未完成的依赖接口。
  • Postman Monitor:定时监控接口可用性(需付费)。


http://www.niftyadmin.cn/n/5863911.html

相关文章

12.Docker 的资源限制

Docker 的资源限制 Docker 的资源限制1. Stress-ng 压力测试工具2. OOM &#xff08;Out of Memory Exception&#xff09;3. 容器的内存限制4. 容器的 CPU 限制 Docker 的资源限制 官方文档&#xff1a;https://docs.docker.com/engine/containers/resource_constraints/ 默…

DNS, domain name system

DNS 是一种应用层协议和http/https是同一等级的 其传输层主要用的是udp&#xff0c;也可能用tcp DNS协议完成的作用&#xff1a;查 域名对应的 ip DNS服务器完成的作用&#xff1a;存储 域名 -> ip 的映射 DNS服务器有三个等级&#xff1a;根DNS&#xff0c;顶级域DNS&…

[Android]如何在代码中访问LayoutParams修改layout_weight?

代码如下&#xff0c;如何在代码中修改NumberWheelView的layout_weight&#xff1f; yearWheelView findViewById(R.id.wheel_picker_date_year_wheel); <com.github.androidpicker.wheelview.widget.NumberWheelViewandroid:id"id/wheel_picker_date_year_wheel&quo…

git从本地其他设备上fetch分支

在 Git 中&#xff0c;如果你想从本地其他设备上获取分支&#xff0c;可以通过以下几种方式实现。不过&#xff0c;需要注意的是&#xff0c;Git 本身是分布式版本控制系统&#xff0c;通常我们是从远程仓库&#xff08;如 GitHub、GitLab 等&#xff09;拉取分支&#xff0c;而…

在UBUNTU下搭建Deepseek

在UBUNTU下搭建Deepseek 一、安装UBUNTU 这个就不多说了&#xff0c;无外乎下载UBUNTU的iso&#xff0c;然后用UltraIso制作U盘&#xff0c;然后重启设置启动盘&#xff0c;安装… 二、安装Ollama curl -sSfL https://ollama.com/install.sh | sh这里可能需要你先安装curl工…

MATLAB | 设置滑动窗口计算栅格数据的CV变异系数

一、变异系数 变异系数&#xff08;CV&#xff09;是衡量数据稳定性的重要指标&#xff0c;表示数据的波动程度&#xff0c;计算方式是标准差与均值的比值。在栅格数据分析中&#xff0c;较低的变异系数意味着数据变化较小、稳定性较高&#xff0c;而较高的变异系数则表明数据…

Python项目源码34:网页内容提取工具1.0(Tkinter+requests+html2text)

------★Python练手项目源码★------- Python项目32&#xff1a;订单销售额管理系统1.0&#xff08;TkinterCSV&#xff09; Python项目31&#xff1a;初学者也能看懂的聊天机器人1.0源码&#xff08;命令行界面Re正则表达式&#xff09; Python项目源码30&#xff1a;待办事…

QT(5.15)之QGC(4.4)安装教程

一、编译 下载需求&#xff1a;需要QT版本为5.15&#xff0c;QGC版本为4.4&#xff0c;必须使用MSVC编译器&#xff0c;不能用Mingw编译器。 1. 下载QGroundControl源码 QGroundControl 的源代码https://github.com/mavlink/qgroundcontrol。 官网&#xff1a;Getting Start…