软件测试类型分析是进行细化测试用例条件的重要手段之一,通过测试类型的分类,软件测试人员可以将测试条件从不同的维度进行考虑,并发现不同的缺陷类型,从而提高测试的覆盖率。
测试类型并不是一个标准,它的定义需要考虑公司内部不同的产品,结合项目开发特点和软件产品的特点,以及测试人员在行业领域的技能和经验的积累。图1是作者提出的测试类型定义需要考虑的几个方面:
图1 测试类型的主要来源
测试类型定义需要综合考虑各个方面的输入,包括开发文档定义的需求(包括涉及的一些标准与规范等)、ISO/IEC 9126质量模型、测试经验,以及通过分析在研发阶段发现的缺陷、产品发布之后用户反馈的缺陷分析等,不断分类提炼之后形成可用的测试类型。同时测试类型是一个不断迭代和更新的过程,在测试过程中可以不断改进测试类型。
1)需求文档分析
首先,测试对象相关的软件工作产品,包括相关的标准与规范等,是定义测试类型需要考虑的最主要来源。也就是说,软件产品的具体特点、实现的功能、面向的客户等是确定测试类型首先需要考虑的。例如:有的软件产品主要关注在用户体验上面,而有的软件产品是安全关键系统,那么它们在定义测试类型的时候是需要首先考虑的。
2)ISO/IEC 9126质量模型
不同的产品利益相关者,其对软件产品质量的描述和要求是不一样的,而测试人员需要兼顾不同人员对产品质量的要求。因此,仅仅依赖于产品的需求文档,测试人员无法设计有效的测试用例(用户反馈的缺陷就是一个有力的例证)。ISO/IEC 9126质量模型中定义的质量特性,可以为测试人员选择质量特性提供较好的思路,如图2所示。
图2 ISO/IEC 9126质量模型
3)测试经验
测试人员在行业和软件产品方面的经验也是测试类型定义中的重要输入之一。不同工作经验和行业工作经验的测试人员,在定义和分类测试类型过程中提出各自不同的观点和思路,有助于完善测试类型。
4)发布前的缺陷分析
测试人员在测试过程中可以发现大量的缺陷,通过分析不同产品、不同阶段发现的缺陷,也有助于测试类型的分类和完善。
5)发布后的缺陷分析
穷尽测试不可能,因此软件产品发布之后,总是能在用户使用现场发现不同类型的缺陷,通过分析和归类这些缺陷,同样也有助于完善测试类型。