去年换了工作,现在在新公司做平台运营的工作。最近参加公司产品工作量的评审工作,发现产品文档(需求文档,设计方案,测试用例)五花八门,文档模板,文档内容,写作方式,内容格式可以说各产品各具特色是自。此外,测试没有测试方案和测试策略文档,测试用例缺少明确的输入输出,测试报告没有测试完备性的说明等等。
一句话,就是产品文档处于聊胜于无的状态。
我个人本身是研发出身,基于以前工作经验的积累,此次的评审结果和当前产品质量(新公司做过一次产品质量回溯),我谈谈我对产品文档的一些看法。
一、需求文档的价值
需求文档承载几个方面的内容:
1、原始需求:需求文档中需要描述客户原始需求(OR)。原始需求可以是客户主动提出的,也可以是产品管理规划的,也可以是现网问题触发的。原始需求只是从基于客户语言将业务场景和要求描述清楚,作为需求分析的输入。
2、需求分解:基于原始需求,结合当前产品对需求进行分解。如将一个需求再细分为不同的场景,同时也可能因为其它原因,需要适当的对需求进行调整,或直接将一个特殊需求转换为一个通用需求。此处的需求分解需要遍历所有原始需求的场景,做到需求分解不遗漏。(此处不讨论需求是否接纳的问题,只关注需求分析是否全面和完整)
3、需求分发:需求分发是将需求分解分析出的所有需求场景,按照产品的功能模块或其他划分方式,将场景进行一些拆解,能够落地到产品。特别是产品规格之类的,需要再需求中进行细化。(说明这个地方的需求分发一般都是基于产品特性的维度进行细分,如果产品还有设计方案,则此处的描述可以从简。)
需求文档到细化到场景级别是否足够?有必要进一步细化吗?
这个问题按照实际情况来分析。如果支撑开发的只有需求文档,则需求文档要细化到能够支撑开发进行产品的实现,例如细化到某个表的设计,或者某个字段的设计,达到基于需求文档就能进行产品开发的层次(开发工程师不需要再考虑产品的实现方式)。如果有单独的技术方案,则需求文档实现部分的描述可以相对从简,产品开发重点参考技术方案进行开发。
回归到开始,需求文档的价值是什么呢?
从上面的描述我们已经可以看到,需求主要的一点是支撑产品开发。除了这点之外,需求文档还是产品测试策略,产品测试方案的输入。需求评审和讲解,都是需要测试工程师参与的,通过需求场景的讲解和评审,测试可以全面了解需求,然后基于需求进行测试设计,避免被开发影响。
二、技术方案的价值
在介绍需求文档的时候我们已经介绍过技术方案文档了。在一些产品设计的时候,技术方案文档有时候和产品需求文档是合二为一的,在做需求分解的时候,产品SE就已经结合业务场景和产品能力对实现方案进行了设计。因此技术方案文档按照实际情况决定是否保留。
三、测试策略的价值
测试策略是指导测试活动开展的重要依据。测试策略一般由测试经理开发,测试策略一般会涵盖版本转测试计划,版本功能测试计划,版本功能回归计划/范围,DFx测试计划,测试方法等。测试策略制定是否合理,在一定程度上决定了测试工作量的多少。因此测试策略制定前,测试经理一般都会和版本SE,开发人员等反复沟通测试影响范围,参与代码走读等,确保测试计划方面无遗漏。
四、测试方案的价值
测试方案重点是针对新功能进行测试的设计。测试方案的输出相对简单,只是基于业务需求,技术方案再结合测试工程方法,进行测试用例的设计。此处工程方法和测试工具的选择是否合理,在一定程度上也会影响测试效率及测试质量,测试完备性。
此外,优秀的测试工程师,可以结合测试工程方法,测试出该功能设计是否正确。
五、测试用例的价值
测试用例和测试方案就相当于测试的代码库。测试用例基于测试方案生成,因此测试用例质量的高低,在一定程度上取决于测试方案的质量。当然要排除人为的因素了。(此处需要重点说明,测试用例应该要有统一的格式和标识,能够进行用例的调度,选择等)
六、测试报告的价值
测试报告是支撑版本管理团队决策版本是否可以GA的重要依据。测试报告应该对测试策略,测试执行结果,及结果分析,代码覆盖率等进行阐述,证明测试测试是完备的,满足版本要求。因此,测试报告中至少应该包括以下内容,才能说明版本质量是满足版本要求的,如果以下内容缺少的话,那么版本测试完备性可能要被质疑。
1、通过测试策略的阐述,说明版本测试活动是完备的;
2、测试结果及测试测试分析,代码覆盖率的阐述,说明版本质量满足商用要求,可以商用;
3、版本DI分析;
4、实验局测试结果;
5、测试分析包含功能性和非功能性(性能,可靠性,升级等)
七、总结
尽管当前在敏捷开发中大家都在提减少文档,但是我认为在项目运作不成熟,或者团队能力还需要大幅提升的阶段,文档还是必不可少的。特别是需求文档,如果没有技术方案的话,需要文档应该要详细说明实现方案,能够知道开发和测试进行相关的开发活动和测试活动。此外,测试是产品质量的守护者,测试既要对内验证产品能力,还要站在客户角度验收产品,因此测试方案及测试用例的质量,直接关系到产品最终质量是否合格。因此不论需求文档,还是测试文档,再团队技能,运作熟练度没有达到一定要求的话,还是要作为重要交付件产出。