跳到主要内容

测试报告

测试报告记录测试覆盖了哪些条件、实际执行了什么、发现了什么,以及结论还有哪些限制。它既要让读者判断当前风险,也要让开发者能够从一个失败项回到请求、数据和运行证据。

通过率是报告中的一个统计值,不能独立代表产品质量。测试范围少、关键用例被跳过或重试历史被覆盖时,数字很好看,实际证据却可能不足。

1. 面试核心​

先记住这几条,再读正文

2. 范围、结果与结论​

测试报告先说明正在回答哪个问题,例如某次发布的关键交易流程是否满足验收条件。然后给出对应证据,避免先展示一个与目标无关的总分。

内容需要说明
被测对象版本、提交或不可变制品、相关配置
环境与数据部署、依赖、数据基线、账号和隔离范围
测试范围需求、风险、用例集合、实际选择与排除
执行结果各状态数量、时间窗口、耗时与重试
问题证据失败详情、缺陷、影响和复现条件
剩余风险未执行、受阻、仅替身覆盖及已知限制
结论对哪些条件提供了什么判断,以及需要补充什么

例如“订单创建和取消流程在测试版本 A、环境 B 中通过;支付回调因测试依赖不可用未执行”,比“本轮通过率 98%”更有助于判断发布风险。

报告不替代缺陷记录。失败可能来自产品、脚本、环境或预期规则,确认后再关联缺陷及处理状态,具体过程见缺陷管理。

3. 状态与统计分母​

不同框架的状态名称并不完全相同,报告需要说明映射。尤其不要把所有没有成功的用例都归为同一种失败。

状态含义典型证据
通过目标检查已执行且满足断言
断言失败实际结果与期望不符
准备或执行错误夹具、依赖、脚本或执行器异常
跳过有明确规则或原因决定不执行检查
未开始或未完成任务中断、未调度、结果丢失等
预期失败及意外通过框架对已知失败条件的专门标记

状态与根因要分开。一个网络异常被框架记作 error,不代表一定是环境问题;一个断言失败,也可能是预期值写错。状态描述发生了什么,根因分类需要继续分析。

假设计划有 100 个用例:80 个通过、5 个断言失败、10 个跳过、5 个尚未开始。若通过率定义为“通过数除以完成结果判定的用例数”,则是 80 / 85 ≈ 94.1%。

这个数字没有表达另 15 个用例的风险。报告还应给出计划总数、完成判定的 85 个、跳过的 10 个及未开始的 5 个,并列出关键受阻范围。不能把跳过项放进成功数,也不能因为它们没运行就从计划范围中消失。

比较两轮测试时,需要先确认用例集合、参数化展开、环境和统计单位一致。删掉困难用例后通过率提高,并不能说明产品变好。一个场景展开成多个参数用例,也会改变总数,报告应保留场景与具体用例的对应关系。

4. 失败证据与重试历史​

运行标识区分每次测试执行,用例标识区分被测行为,尝试标识区分同一用例的初次执行与重试。三者共同让结果可以追踪。

失败项至少应关联当时版本、环境、输入或数据标识、期望与实际、失败阶段、时间和必要日志。接口测试可附请求关联标识、脱敏请求响应;浏览器测试可附截图和 trace;异步流程还应关联消息或任务状态。

证据要能定位,也要控制内容。密码、令牌和无关个人数据不应完整进入报告;超大响应和日志应有大小与保留限制。若内容被截断,应标明截断,避免把一段片段当成完整事实。

重试后通过需要同时保留首次失败和最终状态。可以分别报告首次通过率、最终通过率、经历重试的用例数量及重试成本,而不是用最后一轮覆盖全部记录。

例如前面 5 个失败用例重试后有 3 个通过,最终成功数变为 83,但仍有 5 个用例发生过首次失败。后续要区分产品竞态、共享数据、环境波动与脚本缺陷,不能自动把它们全部贴成“偶发,无需处理”。

5. 报告工具与执行链路​

报告工具通常消费测试框架产生的结构化结果,再关联步骤、附件和历史,形成便于阅读的页面。例如 Allure 通过各框架适配器收集结果,报告展示状态、步骤、参数和附件;具体状态如何映射,取决于框架与适配器。

这条链路有多个独立成功条件:测试已发现并运行、框架产生结果、结果被完整保存、报告生成、产物上传以及门禁读取结果。任意一环失败都应保留自身状态。

可以用以下反例验证流水线:

  • 故意写错一个断言,确认测试失败能传到最终任务状态。
  • 选择一个不会收集到测试的范围,确认空结果不会被算成成功。
  • 让报告生成或上传失败,确认执行结果仍被保留,并显示产物问题。
  • 让同一用例重试,确认页面能够找到首次失败和后续尝试。

pytest 的退出状态见 pytest,JMeter 的采样结果门禁见 JMeter。工具之间处理方式不同,流水线应按实际语义读取,不能统一假设“进程退出 0 就全部通过”。

6. 缺失证据与决策​

如果预期 100 个用例,只收到 60 个结果,需要先查明另外 40 个是未选择、未启动、被取消还是丢失。没有结果本身就是需要解释的状态,不能把它们从分母删掉后给出完整通过结论。

若关键截图丢失,但断言、请求和日志完整,可能仍能判断用例结果,只是定位证据不足;若主要判定结果没有保存,就不能声称测试通过。应按产物用途区分,不把所有附件都当成同样重要,也不忽略必要证据。

报告最后把结论与范围对应起来:已验证哪些行为、存在什么明确问题、哪些风险仍没有证据。发布门槛应来自项目约定和风险,而不是临时挑一个好看的通过率。高影响的单个失败,可能比大量低风险用例通过更需要先处理。

7 · 面试题卡片​

本页题目与参考回答

7.1 一份接口测试报告应包含哪些内容?​

考察重点:执行范围、证据与风险判断。

相关内容:范围、结果与结论、失败证据与重试历史。

参考回答

包含版本、环境数据、需求与用例范围、各状态结果、失败证据、关联缺陷和未验证风险。 接口失败应能追溯脱敏请求响应、数据标识及服务端关联日志。

结论对应已执行条件,说明哪些关键流程通过、哪些失败或受阻。通过率只能作为其中一项统计,不能代替风险说明。

7.2 100 个计划用例中有 15 个未执行,怎样报告通过率?​

考察重点:分母、跳过、未开始和计划范围。

相关内容:状态与统计分母。

参考回答

先明确公式,再同时报告计划、完成判定、跳过和未开始数量。 例如 80 通过、5 失败时,按已完成判定的 85 个计算为约 94.1%,但另外 15 个不能从风险说明中消失。

跳过不算通过,关键未执行项要说明原因和影响。比较轮次时还要保持用例范围和计数单位可比。

7.3 失败用例重试通过后,报告应该保留什么?​

考察重点:首次结果、尝试历史与不稳定性。

相关内容:失败证据与重试历史。

参考回答

保留首次失败、每次尝试、最终状态、环境和对应证据,并单独统计重试次数和成本。 最终通过不能抹去曾经失败的事实。

随后根据日志、数据和时序定位原因。必要时区分首次与最终通过率,避免用重复运行掩盖产品竞态或测试污染。

7.4 Allure 报告在自动化流水线中承担什么职责?​

考察重点:框架结果、展示产物与任务门禁。

相关内容:报告工具与执行链路。

参考回答

它组织测试框架输出、步骤、参数、附件和历史,使结果便于阅读和追踪。 测试框架仍负责执行与断言,报告生成不等于用例通过。

流水线需要分别处理执行、结果保存、报告生成上传和门禁。用断言失败、空结果及产物失败反例确认各阶段不会误报成功。

7.5 测试日志没有失败,但结果文件不完整,可以报告通过吗?​

考察重点:预期数量、必要证据与未知状态。

相关内容:缺失证据与决策。

参考回答

不能直接报告通过,需要解释缺失结果并确认必要判定证据。 未运行、被取消和结果丢失都不等于成功。

对照预期用例集合和执行记录,说明已确认结果及剩余未知范围。辅助附件缺失和主要判定结果缺失的影响不同,应分别标记。

8. 参考资料​

来源:Coding 101 原文 · 免费阅读,引用请保留出处。内容使用说明