跳转至

接口测试进阶测验

测验说明

本测验用于检验接口测试进阶知识的掌握程度。共 15 道选择题,覆盖用例设计、RESTful 规范、自动化框架、Mock 服务、安全测试和 CI/CD 集成。

📙 中级难度 ⏱ 约 20 分钟 📝 15 道选择题

第 1 题:等价类划分法

在接口测试中,使用等价类划分法设计用例时,以下哪种做法是正确的?

  • A. 只测试边界值
  • B. 将输入数据划分为有效等价类和无效等价类,分别选取代表值测试
  • C. 只测试正常输入即可
  • D. 每个等价类必须测试所有值
查看答案

答案:B 等价类划分法将输入数据划分为有效等价类(合理输入)和无效等价类(异常输入),从每个等价类中选取一个或多个代表性值进行测试,既保证覆盖又避免穷举。


第 2 题:RESTful API 方法语义

在 RESTful API 设计中,以下哪个 HTTP 方法用于更新资源的部分字段?

  • A. PUT
  • B. POST
  • C. PATCH
  • D. DELETE
查看答案

答案:C PATCH 用于对资源进行部分修改。PUT 通常用于完整替换资源,POST 用于创建资源,DELETE 用于删除资源。


第 3 题:RESTful URL 设计

以下哪个 URL 设计最符合 RESTful 规范?

  • A. /getUser?id=1
  • B. /api/v1/users/1
  • C. /api/get_user_info
  • D. /users/delete/1
查看答案

答案:B RESTful 规范使用名词复数形式表示资源集合,使用路径参数标识具体资源,使用版本号前缀 /api/v1/ 管理接口版本。操作语义由 HTTP 方法(GET/POST/PUT/DELETE)表达,而非 URL 路径。


第 4 题:数据驱动框架

在接口自动化测试的数据驱动框架中,以下哪种方式最适合从外部文件读取测试数据?

  • A. 将测试数据硬编码在测试脚本中
  • B. 使用 CSV/Excel/YAML 文件存储测试数据,通过参数化读取
  • C. 每个测试用例写一个独立的脚本
  • D. 在控制台手动输入测试数据
查看答案

答案:B 数据驱动框架的核心是将测试数据与测试逻辑分离。通过 CSV、Excel、YAML 等外部文件存储测试数据,配合参数化(如 pytest 的 @pytest.mark.parametrize)实现用例与数据解耦,便于维护和扩展。


第 5 题:PO 模式

在接口自动化测试的 Page Object(PO)模式中,以下哪个说法是正确的?

  • A. PO 模式只适用于 UI 测试
  • B. PO 模式将接口封装为业务对象,测试脚本只调用业务方法
  • C. PO 模式要求每个接口必须写一个类
  • D. PO 模式不需要分层设计
查看答案

答案:B PO 模式的核心思想是封装与分离。在接口测试中,将底层接口调用封装为业务层方法(如 login()create_order()),测试脚本只需调用业务方法,降低脚本与接口实现的耦合度。


第 6 题:Pytest 参数化

在 Pytest 中,以下哪种方式可以实现数据驱动的参数化测试?

  • A. 使用 @pytest.mark.parametrize 装饰器
  • B. 使用 for 循环遍历测试数据
  • C. 在 conftest.py 中定义全局变量
  • D. 使用 unittest.main() 启动测试
查看答案

答案:A Pytest 提供 @pytest.mark.parametrize 装饰器实现参数化测试,可以将多组测试数据注入测试函数,每组数据自动生成一个独立的测试用例,便于统计通过率和定位问题。


第 7 题:Mock 服务的作用

在接口测试中使用 Mock 服务的主要目的是什么?

  • A. 提高测试代码的执行速度
  • B. 模拟依赖服务的响应,使测试可以在依赖不可用时正常进行
  • C. 替代所有真实接口测试
  • D. 减少测试用例的数量
查看答案

答案:B Mock 服务用于模拟第三方接口或未完成的依赖服务的返回值,使测试不依赖外部环境。这在微服务架构中尤为重要,可以隔离测试目标服务,提高测试的独立性和稳定性。


第 8 题:接口安全测试 - 鉴权

以下哪种鉴权方式在接口测试中最为常见?

  • A. 将用户名和密码放在 URL 路径中
  • B. 使用 Token(如 JWT)放在请求头 Authorization 字段中
  • C. 在请求体中明文传递密码
  • D. 不需要任何鉴权
查看答案

答案:B Token 鉴权(如 JWT)是目前最主流的接口鉴权方式。客户端登录后获取 Token,后续请求通过 Authorization: Bearer <token> 头部携带,服务端验证 Token 有效性,避免每次传输密码。


第 9 题:参数篡改测试

以下哪种测试属于接口参数篡改测试?

  • A. 测试接口的正常返回
  • B. 修改请求中的用户 ID 为其他用户 ID,验证是否能获取他人数据
  • C. 测试接口响应时间
  • D. 验证接口文档的完整性
查看答案

答案:B 参数篡改测试属于安全测试范畴,主要验证接口是否存在越权访问漏洞。通过修改请求参数(如用户 ID、订单号等),检查服务端是否做了权限校验,防止未授权访问。


第 10 题:SQL 注入防护

在接口测试中,以下哪种输入可以用来检测 SQL 注入漏洞?

  • A. 正常的数字 123
  • B. ' OR 1=1 --
  • C. 空字符串 ""
  • D. 中文字符 "测试"
查看答案

答案:B ' OR 1=1 -- 是经典的 SQL 注入测试输入。如果后端没有对输入做过滤或使用参数化查询,该输入可能改变 SQL 语义,导致返回所有数据。接口测试中应验证服务端是否正确防护了此类攻击。


第 11 题:CI/CD 中接口测试集成

在 CI/CD 流程中,接口自动化测试通常集成在哪个阶段?

  • A. 只在需求评审阶段
  • B. 代码提交后的构建阶段,作为流水线的一个环节自动执行
  • C. 只在生产环境发布后
  • D. 只在手动触发时执行
查看答案

答案:B 在 CI/CD 流水线中,接口自动化测试通常集成在构建阶段之后、部署之前。代码提交触发流水线后,自动编译、运行单元测试和接口测试,确保代码变更不会破坏已有功能。


第 12 题:测试报告生成

在接口自动化测试中,以下哪个工具可以生成美观的 HTML 测试报告?

  • A. pytest-html 插件
  • B. print() 打印结果
  • C. assert 断言
  • D. logging 模块
查看答案

答案:A pytest-html 是 Pytest 的报告插件,可以生成包含测试结果、通过率、失败详情和环境信息的 HTML 报告。此外 Allure 框架也可以生成更美观的交互式测试报告。


第 13 题:接口测试用例优先级

在接口测试中,以下哪个维度通常决定测试用例的优先级?

  • A. 开发人员的偏好
  • B. 接口的业务重要性和风险程度
  • C. 测试用例的代码行数
  • D. 接口的响应时间
查看答案

答案:B 测试用例的优先级通常由接口的业务重要性(核心支付流程 vs 辅助查询功能)和风险程度(历史缺陷率、改动频率)决定。高优先级用例应优先在 CI/CD 中执行,确保核心功能稳定。


第 14 题:接口幂等性测试

接口幂等性测试主要验证的是什么?

  • A. 接口的响应速度
  • B. 同一个请求重复发送多次,结果与发送一次相同
  • C. 接口的并发处理能力
  • D. 接口的错误提示是否友好
查看答案

答案:B 幂等性是指同一个操作执行一次和执行多次的效果相同。例如支付接口,用户重复点击"支付"按钮,应该只扣款一次。接口测试中需要验证幂等接口是否正确处理了重复请求。


第 15 题:测试环境隔离

在 CI/CD 中集成接口测试时,以下哪种做法最有利于测试环境的稳定性?

  • A. 使用生产环境直接执行自动化测试
  • B. 搭建独立的测试环境,使用 Docker 容器化部署依赖服务
  • C. 让开发和测试共用一个数据库
  • D. 不需要隔离,所有环境共享配置
查看答案

答案:B 使用 Docker 容器化部署测试环境可以实现环境隔离和快速重建,避免测试数据污染生产环境,也避免不同测试任务之间的互相干扰。配合 CI/CD 可以在每次构建时自动拉起和销毁测试环境。


继续学习

完成测验后,建议继续学习: