不管是文档化的测试用例,还是存在于测试人员头脑中的测试想法和思维,针对测试对象的分析和设计都是整个测试过程的重要测试活动之一。在进行测试分析和设计之前,测试人员首先需要确定测试的需求来源,即测试用例设计需要参考哪些测试依据文档?
测试用例设计的输入文档是什么?测试人员头脑中第一个蹦出的参考依据就是需求规格说明。确实,需求文档是我们测试设计的最主要参考文档。但是,由于时间限制、成本限制和个人能力限制等方面的原因,提供完备的需求规格说明几乎是不可能的。现实情况是,需求规格说明常常是不全的、模糊的,甚至是错误的。
因此,测试设计中仅仅参考需求规格说明是不够的,测试人员需要从更广的范围来定义测试用例设计的参考来源。图1是作者提出的测试用例设计的参考输入的主要来源架构图。
图1 测试用例设计的参考输入的主要来源
除了软件产品相关的的开发文档之外,测试人员还需要收集来自用户的需求、与产品相关的标准与规范、以前类似产品的需求、测试团队的经验知识库,以及其他的一些隐现需求等。通过收集和分析这些参考输入来源,测试人员才能不断提高测试的覆盖率和质量。
1)开发文档
开发文档是测试人员进行测试用例分析与设计的最直接且必不可少的主要来源。这里的开发文档是一个统称,不同组织对其的称呼不同,包含了系统需求规格、概要设计规格、详细设计规格等不同的开发文档。
2)用户需求
软件测试同时包含了验证(Verification:Do you build the product right?)与确认(Validation:Do you build the right product?)两方面的工作。验证主要基于系统需求,来验证测试对象是否按照需求的定义实现了其中的功能和特性。而确认主要从用户的角度,保证经过测试的产品是真正客户所需要的,而不仅仅是了满足了系统的需求。因此,测试不仅仅是面向开发的,同时也应该关注面向用户。
用户需求可以来自各个方面,例如早期产品系统人员与客户直接沟通获取的需求、从产品技术支持人员和市场人员了解到的客户要求,以及从用户现场反馈的针对产品的缺陷和要求等。
3)标准与规范
针对特定的软件产品,不同标准组织和行业都制定了不同的标准和规范,而这些参考资料是开展测试分析和设计的又一个重要输入。例如电信产品相关的ITU-T标准、IEEE标准、RFC文档、国家电信行业规范等。
4)类似产品需求
随着软件产品越来越复杂,行业内采用增量-迭代开发模型的场合越来越多,例如敏捷开发。测试人员经常面临的软件产品是基于已有的系统之上,即测试对象是基于以前版本的功能增加、缺陷修复、平台移植等变更基础之上。因此测试人员需要分析历史测试是否全面,测试对象变更是否影响以前运行的软件版本等。基于这些信息,测试人员可以获取新的测试需求。
5)测试经验知识库
测试并不是存在编码之后的一个阶段,测试应该贯穿于整个软件开发生命周期。类似于开发过程改进一样,测试也应该是PDCA(戴明质量环)的过程。因此,不同项目中的测试经验是每次测试用例设计的重要输入。通过测试经验知识库,测试团队的测试经验和技能才能在整个组织中共享。
测试经验知识库可以来自测试执行的经验、测试过程中发现的缺陷分析和分类、用户反馈的缺陷分析和分类等。
6)其他隐现的需求
测试用例设计的参考输入,除了上面提到的一些来源之外,测试人员还需要考虑其他一些隐现的需求来源:
(1)不同产品利益相关者针对测试对象中间版本的变更而达成的备忘录;
(2)已经发布的用户使用风格指南和用户接口标准等;
(3)和不同的利益相关者,例如:开发人员、用户和技术专家等面谈得到的备忘录或者邮件内容等;
(4)通过杂志、网络等查找类似测试对象产品的一些常见缺陷、失效,以及测试对象支持功能在用户现场使用的讨论