需求评审是对需求内容的检查与确认:要解决什么问题,哪些事情属于本次范围,什么结果才算满足要求。 它可以通过文档批注、异步讨论或会议完成。评审的价值体现在澄清了哪些问题、形成了哪些决定,以及这些决定是否已写回需求。

如果需求只有“增加批量导出,支持取消”,开发者仍然不知道该导出筛选结果还是已勾选记录,也无法判断取消以后应保留什么文件。此时直接进入开发,会把尚未确认的产品决定留给实现者。

本文面向个人开发者和小团队,用一个虚构的桌面应用功能说明评审方法。文中的需求、数字、评审记录和图示都是作者编写的教学材料,不来自真实业务评审,也未运行对应应用。公开资料支持通用原则,具体检查项和流程是本文的实践建议。

需求评审、技术评审和测试用例审核的分工

三类活动的检查对象不同,也会相互反馈。

活动 主要检查对象 需要形成的结论
需求评审 目标、范围、业务规则和验收条件 要求是否清楚,有没有冲突和待定事项
技术方案评审 设计、接口、状态、依赖与实现风险 方案如何满足要求,哪些假设需要验证
测试用例审核 测试输入、步骤、覆盖与预期结果 用例是否有效、可执行,是否遗漏重要条件

需求中可以包含必要的技术约束,例如必须兼容现有文件格式;但“使用某个线程池”通常属于设计决定。若团队因运行环境或安全要求必须采用指定方案,应记录约束来源,避免把个人偏好写成需求。

NASA 的系统设计说明,第4.2节强调与相关方反复确认需求含义。这里借鉴的是沟通和需求澄清原则,不要求个人项目照搬航天工程的审批层级。

评审前需要准备哪些材料

评审至少需要一个可定位的需求版本,并提供理解它所必需的背景。材料可以很短,但应让参与者知道自己在审哪一版。

  • 目标与使用场景:谁在什么情况下使用,现有方式有什么具体问题。
  • 范围与规则:输入、输出、限制、异常行为,以及明确不做的内容。
  • 原型或示例:涉及操作顺序、状态变化时,给出可理解的界面或文字流程。
  • 待定事项与已有约束:哪些内容尚未决定,哪些来自兼容、安全或运行环境要求。

业务决策者负责确认规则和优先级,开发者检查可行性与系统约束,测试视角帮助发现边界和不可验证的表述。一个人可以承担多种角色;有权限确认业务规则的人没有参与时,评审只能记录问题,不能替他作决定。

把“批量导出”拆成可确认的要求

原始描述为:

在桌面应用中增加批量导出CSV,支持筛选和取消,不能影响正常使用。

下面是假定经过讨论后形成的教学需求v1,不是从原句自动推导出的唯一答案。5000条是为演示边界设定的产品限制,不代表经过容量测试。

编号 本例确认的要求 评审需要解决的问题
R1 提交成功时取得当前筛选结果的数据快照,按ID升序导出;后续页面筛选和源记录修改不改变本次内容 “当前”对应哪个时间点;导出全部匹配项还是勾选项
R2 数量为1–5000条才创建任务;0条提示无可导出数据,超过5000条拒绝,不静默截断 空结果、上限和超限分别如何处理
R3 输出CSV,字段固定为id、name、status,使用UTF-8 BOM;保留含逗号、双引号、换行的文本内容 文件格式、字段与文本内容如何解释
R4 写入过程中使用临时文件;只有成功完成才产生正式文件,不覆盖已有文件 半成品会不会被误认为成功,目标冲突怎么办
R5 正式提交文件前允许申请取消;取消与完成竞争时只能有一种终态,取消成功不产生正式文件 何时还能取消,如何避免同时提示成功和取消
R6 同一窗口最多一个活动导出任务;处理中保持界面可操作,拒绝重复启动 连续点击如何处理,是否允许并行任务
R7 写入失败要报告失败并尝试清理本任务临时文件;清理失败须说明残留位置 错误信息、残留文件和其他已有文件如何处理

“快照”在本例中包括输出字段的值,不只是复制一份筛选条件。若产品允许任务执行期间读取最新值,需要采用另一套明确的约定,并同步修改方案和用例。

批量导出需求从模糊描述变为范围规则和验收条件的原创示意

原创教学示意:评审补齐的是可确认的行为,并非直接替需求选择技术实现。

范围、业务规则与异常场景如何检查

范围同时写清包含项和排除项

本例只处理桌面应用当前窗口中的导出,不增加服务器任务队列、Excel格式或多窗口任务协调。这些排除项用于限制讨论范围,不表示相应能力永远不能做。

“导出所有数据”这样的表述需要进一步明确权限范围、筛选条件及字段。不能让开发者从现有界面猜测,也不能在测试时临时改变解释。

业务规则检查相互冲突的地方

“导出完成后自动覆盖旧文件”和“不丢失已有文件”无法同时直接成立;必须确认覆盖是否需要同意、何时确认以及失败时保留什么。

本例选择不覆盖已有文件,因此技术方案不能悄悄使用会替换目标文件的接口。若业务后来改为允许覆盖,就应作为需求变更处理,而不只是修改一个函数。

异常场景描述可观察行为

“失败时友好提示”没有说明失败后发生什么。更有用的描述是:不能写入目标目录时,任务报告失败、不产生正式文件,已有文件保持不变;本任务临时文件清理失败时,提示其位置。

对于关闭窗口、应用退出、磁盘空间不足等情况,需要按功能风险继续补充。本文的v1表不是适用于所有导出工具的完整规格,也没有承诺进程崩溃或断电后的恢复能力。

验收标准需要明确输入和可观察结果

验收标准描述接受实现所需的条件,不必把所有测试操作都塞进需求。下面是一组作者编写的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
AC-R2:数量限制
当匹配结果为0条时,不创建导出任务,并提示无可导出数据。
当匹配结果为5000条时,允许创建任务,不因达到上限而拒绝。
当匹配结果为5001条时,拒绝创建任务,不自动截取前5000条。

AC-R1:提交快照
任务提交成功后改变页面筛选或修改源记录,
本次导出的记录集合、字段值和排序仍与提交时快照一致。

AC-R5:取消结果
正式文件提交前受理取消,并最终进入取消状态时,
不产生本任务正式文件;不能同时报告成功。
若文件已提交成功,后到达的取消请求不能把成功改为取消。

ISTQB CTFL v4.0.1第4.5.2节讨论了验收条件的用途及表达方式。本文采用规则和示例组合表达,不要求全部写成同一种句式。

界面可操作性仍需在目标平台和代表性数据下验证。“不影响正常使用”应在评审中补充需要保持的交互及性能目标;尚未确定响应时间指标时,记录为待确认,不能把任意数字当成已验证能力。

评审问题要落实到修改和复核

评审记录不宜只有“已讨论”。一条可以执行的问题,至少应包含位置、问题依据、影响及处理状态。

问题 处理决定 复核依据
Q1:原文没有明确导出范围 采用提交时筛选结果快照,不采用勾选项 R1及AC-R1已写明,原型文字保持一致
Q2:超过上限如何处理未知 超过5000条拒绝,禁止截断 R2及AC-R2覆盖5000/5001
Q3:取消与完成可能同时提示 要求单一终态,细节交技术评审 R5已补充,方案需要解释竞争处理
Q4:界面响应目标尚未确定 补充目标环境与交互要求后再确认 保持未关闭,不用“体验良好”代替结论

以上是示范记录,不代表本次真的召开过评审。实际使用时还应记录负责人、约定完成时间、修改版本和复核人。

需求评审问题从发现到修改复核及交接的原创流程示意

原创流程建议:未确认的问题保留状态,复核检查实际修改,不以口头答复代替。

我建议用“通过、修改后复核、暂不通过”等结论表达处理状态,但它们不是所有团队通用的强制名称。涉及导出范围、数据保护或关键异常行为的问题未解决时,不应把评审写成无条件通过。

NASA技术评估说明将评审目标、进入与成功条件、参与者及后续行动项列为需明确的内容。个人项目可以把它压缩成需求版本、一张问题表和一次修改复核。

评审后的需求如何交给开发和测试

交接时保留已确认版本、需求编号、验收条件、未关闭问题和变更记录。技术设计引用R1–R7,测试用例也引用对应编号,避免两边各自形成一套不同解释。

NASA需求管理说明讨论了需求、设计和测试材料之间的一致性及变更管理。对本例,一份轻量表格就可以记录“哪项要求对应哪段设计、哪些用例”,无需先引入大型管理系统。

需求发生变化后,重新检查受影响的设计和用例;已经确认过一次,不表示此后可以无记录地改动。后续技术评审负责解释这些要求如何实现,用例审核负责检查验证设计是否忠实反映它们。

参考资料

资料核对日期:2026年11月9日。检查表、教学需求和结论命名为作者建议,不是上述机构对所有软件项目的统一规定。