测试工作量估算要能用于排期和资源申请,核心是先把“可执行测试项”数清楚,再用历史单件耗时或三点估算折算成人时,并叠加环境准备、缺陷复测与回归等附加工作。估算结果需要用实际工时回填校准,同时说明分母、时间窗和缺失值处理方式。本文给出一套可复算的口径、公式和一个版本的功能测试算例。
要点总览(TL;DR)
- 测试工作量估算以可执行测试项为计数单位,按测试类型分别取历史单件耗时中位数或三点估算期望值,乘以数量后叠加环境准备、缺陷复测、回归等附加工作,输出人时或人日区间。
- 估算前先固定用途、对象范围、时间窗和缺失值处理规则;历史数据只在同团队、同流程内使用,跨团队汇总只作总量参考。
- 估算结果用实际工时回填校准,同时看绝对偏差和相对偏差(分母为实际工时),按测试类型和模块分组观察,连续同向偏差才调整基线。
- 估算值不等于工期承诺,工作量与缺陷发现率无必然关系;需求变更超过约定阈值时只对变更部分重估,保留原估算作为基线。
估算要回答什么问题:目标与用途
测试工作量估算的第一步是确定用途。同一组测试项,用于版本排期时给区间即可,用于对外报价或人力外包时通常要给上限并说明假设条件。用途不同,精度要求、取数方式和呈现形式都不同,混用一套数字容易在评审时产生争议。
估算对象也需要事先界定。常见有三种范围:只算测试执行工作量;算到用例设计与执行;再扩展到环境搭建、数据准备和缺陷复测。范围越大,参与估算的角色越多,越需要在估算说明里写清楚包含与不包含的环节。
| 用途 | 精度要求 | 输出形式 | 注意事项 |
|---|---|---|---|
| 版本排期 | 中等,允许区间 | 人日区间,如 18–24 人日 | 与开发、联调时间对齐,预留缓冲 |
| 资源申请 | 中等偏高 | 按角色拆分的人日,如测试工程师 20 人日 | 说明峰值周所需人数 |
| 对外报价 | 高,偏上限 | 人日上限加假设清单 | 写明需求变更后的重估规则 |
| 过程改进 | 低,重在可比 | 与历史版本同口径对比 | 保持计数单位和时间窗一致 |
估算时点和版本范围同样要固定。是在需求评审后、用例设计完成后还是提测前估算,可用的信息量差别很大。建议在估算说明中写明“基于某版本某次需求冻结后的用例清单”,后续需求变更时按变更量单独追加,避免在原数字上反复口头调整。
指标与范围:用什么单位、算哪些测试
测试工作量估算的基本计数单位是可执行测试项,通常对应一条可独立执行、有明确预期结果的测试用例。以用例条数计数便于从用例库直接取数,也便于按模块、优先级分组。对于探索性测试、专项测试等难以逐条列出的工作,可以按测试会话或按人日单独估算,不与用例条数混算。
纳入范围建议逐项列明。以下是一份可直接套用的范围清单:
- 纳入:用例设计与评审、测试执行、缺陷提交与复测、版本回归、测试环境准备与数据准备、测试报告编写。
- 通常排除:需求评审、开发自测、线上问题排查、测试工具开发与维护。若这些工作由测试团队承担,应单列并注明。
- 按类型分列:功能测试按用例条数;接口测试按接口场景或用例条数;性能测试按脚本场景数加压测轮次;兼容性测试按“机型或浏览器 × 核心场景”的组合数。
不同测试类型的单位差异需要在口径说明中写清楚,否则汇总时会出现“一条性能场景等于一条功能用例”的错误折算。常见做法是先按类型分别估算,再汇总成人日,而不是把所有条目加总后乘一个统一单件耗时。
| 测试类型 | 计数单位 | 单件耗时的主要影响因素 |
|---|---|---|
| 功能测试 | 测试用例条数 | 业务复杂度、前置数据准备量 |
| 接口测试 | 接口场景或用例条数 | 依赖服务数量、断言与数据构造难度 |
| 性能测试 | 压测场景数 × 轮次 | 脚本开发、环境稳定性、调优轮次 |
| 兼容性测试 | 设备或浏览器组合数 × 核心场景数 | 设备获取难度、问题定位成本 |
| 回归测试 | 回归用例条数或轮次 | 自动化覆盖比例、版本改动范围 |
数据口径:历史工时怎么取、缺失怎么处理
历史工时是估算的输入,取数口径决定估算能否复算。首先要确定记录颗粒度:按用例记录最细,适合单件耗时估算;按测试任务记录较常见,适合按模块估算;按人日汇总最粗,只能支撑总量级判断。颗粒度越粗,单件耗时的推导误差越大,需要在估算说明中标注。
时间窗建议取最近若干完整版本,并保证版本之间需求规模、团队构成和流程没有重大变化。跨版本比较时,应剔除流程改造期、人员大幅变动期或一次性专项投入的版本,否则历史均值会被异常值拉偏。时间窗一旦确定,同一版本的估算与复盘应使用同一窗口,便于前后对比。
缺失值和异常值需要预设规则,常见处理方式如下:
- 缺失单件耗时:优先用同模块、同类型用例的中位数替代;仍缺失时用团队整体中位数,并在估算说明中标注替代比例。
- 异常工时:单条用例耗时显著偏离同组分布时,先核查是否包含环境故障、需求返工等非典型因素,确认后剔除或单独归类,不直接计入均值。
- 分母为零:某类型本期无用例或历史无记录时,不计算该类型单件耗时,改为按专家判断给出区间,并注明“无历史基线”。
- 跨团队不可比:不同团队的工时记录习惯、环境条件和自动化程度不同,历史数据只在同团队、同流程内使用;跨团队汇总时只做总量参考,不直接套用对方单件耗时。
建议用一张口径说明表固定这些规则,随估算结果一起提交,让评审人能看到每个数字的来源。
| 口径项 | 建议规定 |
|---|---|
| 工时来源 | 用例执行记录、测试任务工时或人日填报,注明系统与字段 |
| 颗粒度 | 按用例或按任务,汇总时说明折算方式 |
| 时间窗 | 最近 3–5 个可比版本,剔除异常版本 |
| 统计量 | 优先中位数,均值仅作参考 |
| 缺失处理 | 同模块中位数 → 团队中位数 → 专家判断,逐级标注 |
| 异常处理 | 核查原因后剔除或单列,不静默修改 |
计算步骤:从单件耗时到总工作量
核心公式为:总工作量 = Σ(某类测试项数量 × 该类单件耗时)× 调整系数。求和按测试类型分别进行,避免不同类型混算。调整系数用于覆盖执行之外的必要工作,建议拆成几个独立系数相乘或相加,而不是笼统给一个“系数 1.5”。
单件耗时有两种取值方式。历史数据充足时,取同类型、同模块近几个版本的中位数。历史数据不足或波动较大时,用三点估算:分别给出乐观值 O、最可能值 M 和悲观值 P,期望值 E =(O + 4M + P)÷ 6,标准差可用于构造区间。三点估算适合新模块、新技术栈或首次承接的测试类型。
附加工作量按以下方式计入:
- 环境与数据准备:按版本一次性估算,或按测试项数量乘一个准备系数,写明是否包含环境故障排查。
- 缺陷复测:按预计缺陷数 × 单条复测耗时估算,预计缺陷数可参考历史缺陷密度,并注明这是假设值。
- 回归测试:按回归用例条数 × 回归单件耗时,或按执行工作量的固定比例估算,比例需来自历史版本的实际回归投入。
- 测试报告与沟通:按版本固定人时计入,不随用例数量线性增长。
最终输出人时或人日,并给出区间。区间下限可用乐观值汇总,上限用悲观值汇总,或以期望值为中心加减一个基于历史偏差的幅度。换算人日时明确每人日按多少小时计,例如 8 小时,并在全文保持一致。
算例:一个版本的功能测试估算
以下为演示情景,数字为假设值,仅用于说明计算过程。某版本功能测试共有 320 条可执行用例,按模块分为核心交易 120 条、账户管理 100 条、报表查询 100 条。历史三个可比版本的单件耗时中位数分别为:核心交易 0.9 小时/条,账户管理 0.6 小时/条,报表查询 0.5 小时/条。
执行工作量计算:120 × 0.9 = 108 小时;100 × 0.6 = 60 小时;100 × 0.5 = 50 小时,合计 218 小时。考虑本版本核心交易模块有较大改动,对该模块采用三点估算:乐观 0.7 小时、最可能 0.9 小时、悲观 1.4 小时,期望值 =(0.7 + 4×0.9 + 1.4)÷ 6 ≈ 0.95 小时,核心交易执行工作量调整为 120 × 0.95 = 114 小时,合计约 224 小时。
附加工作量按假设系数计入:环境与数据准备 16 小时;预计缺陷 60 个,单条复测 0.4 小时,计 24 小时;回归按执行工作量的 25% 计,约 56 小时;测试报告与沟通 8 小时。总计约 224 + 16 + 24 + 56 + 8 = 328 小时,按每人日 8 小时折算约 41 人日。
| 项目 | 计算方式 | 结果(小时) |
|---|---|---|
| 核心交易执行 | 120 × 0.95(三点期望) | 114 |
| 账户管理执行 | 100 × 0.6 | 60 |
| 报表查询执行 | 100 × 0.5 | 50 |
| 环境与数据准备 | 按版本一次性估算 | 16 |
| 缺陷复测 | 60 × 0.4 | 24 |
| 回归测试 | 执行工作量 × 25% | 56 |
| 报告与沟通 | 固定人时 | 8 |
| 合计 | — | 328(约 41 人日) |
区间可按悲观情形重算:核心交易按 1.4 小时计为 168 小时,缺陷数上浮至 80 个,回归比例提高到 30%,合计约 168 + 60 + 50 + 16 + 32 + 67 + 8 = 401 小时,约 50 人日。因此对外可报 41–50 人日。换算排期日历时,若投入 3 名测试工程师,按每人每周 5 个工作日、扣除会议与支持约 20% 后有效工时约 4 人日/周,41 人日约需 3.4 周,50 人日约需 4.2 周,排期应取偏长一侧并留缓冲。
验证与校准:估算准不准怎么判断
估算完成后,需要在版本结束时用实际工时回填,计算偏差。建议同时看两个指标:绝对偏差 = 实际工时 - 估算工时;相对偏差 =(实际工时 - 估算工时)÷ 实际工时。相对偏差以实际工时为分母,避免估算值偏小时分母过小导致比例失真。分母为零即实际无工时记录时,该条目不计算相对偏差,只记录缺失。
偏差要分组观察。按测试类型看,可以判断是接口测试还是性能测试的系统性低估;按模块看,可以定位哪些业务域的单件耗时假设偏离实际;按版本看,可以判断估算是否随流程成熟逐步收敛。分组后每组样本量过小时,只做定性记录,不急于调整系数。
复盘频率建议每个版本一次,季度做一次汇总校准。调整规则可以预设为:连续若干版本同一类型相对偏差同向超过一定幅度时,更新该类单件耗时基线;单次偏差不直接改基线,先核查是否为一次性因素。校准的目标是让估算区间覆盖实际值的比例逐步稳定,而不是追求每个版本都精确命中。
估算依赖用例数量和实际工时两类记录。ONES 测试管理支持测试用例与需求、任务关联,测试计划与迭代关联,用例可分配执行人,便于按计划和执行人归集测试项数量;用例支持从 Excel 批量导入并在线管理,历史用例库可直接作为计数来源。版本结束后,可将实际执行情况与测试报告对照回填,用于下一版本的偏差复盘。若团队需要按用例记录实际耗时,需结合自身工时填报方式另行约定字段。
解读与限制:哪些结论不能从估算里得出
估算值首先不等于工期承诺。工作量是人时总量,工期还受人员到位时间、环境可用性、开发提测延迟和并行任务影响。对外承诺排期时,应在估算区间上限基础上加入缓冲,并写明假设条件,需求变更后按变更量重新估算。
工作量与质量结果之间没有必然关系。投入更多测试人时可能发现更多缺陷,也可能因为用例设计重复而收益递减;反过来,工作量偏低也不直接说明质量风险高。缺陷发现率、逃逸缺陷数等质量指标需要单独度量,不能用工时数字替代。
跨团队数据不可直接比较。不同团队的用例粒度、工时记录习惯和自动化程度差异很大,A 团队每条用例 0.3 小时不代表效率高于 B 团队的 0.8 小时。跨团队汇总只适合做总量参考,比较时应先统一计数单位和时间窗。
需求变更会快速使估算失效。建议在估算说明中约定变更阈值,例如新增或修改用例超过原数量一定比例时触发重估,重估只针对变更部分追加,保留原估算作为基线,便于后续复盘时区分“估算偏差”和“范围变化”。
常见问题
团队没有历史工时数据,第一次做测试工作量估算从哪里入手?
可以从三点估算起步:由熟悉该类测试的工程师分别给出乐观、最可能、悲观三个单件耗时,按期望值=(乐观+4×最可能+悲观)÷6 折算,再用悲观值构造区间上限。首次估算的用途应限定为排期参考,并在估算说明中标注“无历史基线”。版本结束后把实际工时回填,下一版本就有第一份可比数据,逐步用中位数替代专家判断。
用例粒度粗细不一,单件耗时还能直接比较吗?
不能直接比较。用例粒度差异会直接改变单件耗时,粗粒度用例可能包含多个校验点,耗时自然偏高。处理方式有两种:一是按模块分别取中位数,避免不同粒度混在一个均值里;二是在用例库中约定拆分标准,例如一条用例对应一个可独立验证的预期结果,使历史数据在版本之间可比。若短期内无法统一粒度,估算说明中应注明各模块的用例粒度特征。
估算偏差多大算正常,需要立即调整系数吗?
偏差是否正常取决于团队自身的历史波动,没有通用达标线。建议先积累几个版本的相对偏差记录,观察分布范围,把常见波动区间作为正常带。单次偏差超出正常带时,先核查是否为一次性因素,例如环境故障、需求临时插入或人员变动;连续多个版本同一类型同向偏离,再更新该类单件耗时基线。急于按单次偏差调系数,容易让估算随个别版本来回摆动。
需求在版本中途变更,原估算怎么处理?
建议在估算说明中预设变更阈值,例如新增或修改用例超过原数量的一定比例时触发重估。重估只针对变更部分追加工作量,原估算保留为基线,这样版本复盘时可以区分“估算偏差”和“范围变化”两类原因。若变更频繁且幅度大,可改为按需求分批估算、分批释放测试资源,减少一次性大估算反复失效的情况。
估算依赖的用例数量和实际工时,在工具里怎么归集?
用例数量可以从用例库按模块、优先级直接统计。ONES 测试管理支持测试用例与需求、任务关联,测试计划与迭代关联,用例可分配执行人,便于按计划和执行人归集测试项数量;用例支持从 Excel 批量导入并在线管理,历史用例库可直接作为计数来源。版本结束后可对照测试报告回填实际执行情况,用于偏差复盘。若需要按用例记录实际耗时,需结合团队自身的工时填报方式另行约定字段。
