接口测试进阶测验¶
测验说明
本测验用于检验接口测试进阶知识的掌握程度。共 15 道选择题,覆盖用例设计、RESTful 规范、自动化框架、Mock 服务、安全测试和 CI/CD 集成。
第 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 可以在每次构建时自动拉起和销毁测试环境。
继续学习¶
完成测验后,建议继续学习: