基于需求的测试策略

1.为什么要进行基于需求的测试

一项调查(James Martin (“An Information Systems Manifesto,” Prentice Hall, 1984)表明56%的缺陷其实是在软件需求阶段被引入的。而这其中的50%是由于需求文档编写有问题、不明确、不清晰、不正确导致的。剩下的50%是由于需求的遗漏导致的。

以上数据说明,要保障软件质量稳定和缺陷尽早被发现需要从需求层面开始尽早介入而开展测试。

基于需求的软件测试方法由理查德本德先生1977年始创,这一方法使测试更加有效,因为它更专注于质量问题产生的根源。此方法从上世纪90年代起为中国软件测试工程师使用至今。

2.基于需求的测试策略操作要点

如何基于需求测试,根据多年工作经验总结出以下三步:需求项分析收集、测试输入项整理、使用组合分析测试工具。

2.1测试需求分析收集

需求要点分析,通过对整理需求项,提取需求性进而进行需求项分解合并形成需求要点。

基于需求的测试策略_第1张图片
测试要点分析过程

整理需求时从需求来源着手,通过需求来源分析理清需求的风险和需求优先级及重要程度,需求来源包括:用户需求、使用说明、开发需求、竞争对手需求、协议需求、法律法规、测试经验库等进行分类分析等等。

继承性需求也是梳理需求项的重要工作,继承性分析主要对产品历史版本需求的继承的特性分析主要对线上版本使用情况、历史测试情况、应用变化情况、与新开发特性的交互关系等进行分析

测试需求项分析分解是对原始测试需求和继承性需求的细化和分解,形成的可测试的分层描述的测试需求。

2.2测试输入项整理

通过对测试需求分析整理形成测试要点,对每一条测试要点根据等价类划分,边界值分析法等基础测试方法,形成基本的输入输出。在第三步中使用组合测试方法进一步进行分析设计。

2.3使用组合测试方法

在动态测试中,测试需要依赖测试用例驱动,测试用例分为基于需求的测试用例和基于覆盖的测试用例,也可以称为黑盒测试用例和白盒测试用例。基于黑盒测试用例的设计方法包括边界值法,等价类法,正交组合对法(Orthogonal Pairs)和因果图法(Cause Efffect)等等,其中组合对法和因果图法由于涉及到输入条件与输出结果直接的组合与逻辑关系比较复杂,不适合用人工的方式计算。

因果图法就是从需求规格说明书的描述中找出因(输入条件)和果(输出或程序状态的改变),通过因果图转换为判定表,最后为判定表中的每一列设计一个测试用例。这种方法的起源是硬件数字集成电路的测试方法(敏感路径法),能够设计出有效地测试用例,舍弃对测试没有贡献的测试用例,并且能够实现功能的全部覆盖。

组合配对对法就是把多个输入和多个输出两两结对,以发现由两个因子的交互关系导致的可观测的软件故障。这种方式设计的测试用例比穷举测试减少了很多,但是依然可以有效地发现软件缺陷。

基于需求的测试策略_第2张图片
配对测试方法理论依据

在配对测试方法中,着重推荐一款组合测试方法工具,微软的PICT工具。

(1)PICT简介

    PICT是一种正交组合测试工具,输入与测试用例相关的所有参数,可输出简化版以达到全面覆盖的效果。

(2)PICT的安装

  点击下载  ,然后一直下一步即可。

  安装完成后,cmd打开后,输入pict,很容易就能看到此工具是否安装成功

(3)PICT的简单实用

新建一个test.txt文件,放在D:

使用命令行把目录切换至D盘,执行pict test.txt会自动生成组合用例

执行pict test.txt >text.xls,可以把屏幕上打印的组合用例输出到Excel或TXT,这样整合后的用例就少了,减轻测试人员的工作量

3.基于需求测试策略的最佳实践

3.1 尽早测试,频繁地测试

  确认需求的业务价值。

  各利益相关方应该对需求进行评审。

  通过用例检查需求的完整性

      应用语言分析技术确保需求文档清晰一致,不会引起同一问题不同人有不同的解释。

3.2不要单凭经验测试

  不要依赖测试人员的经验来设计测试用例,应该采用系统、严格的测试用例设计方法,而不是依赖有经验的测试人员的技巧。通过这样的方式来增加测试覆盖的有效性。格式化、结构化的需求文档有助于测试人员评估需求的测试覆盖率。

  通过测试用例评审来检查测试用例存在的错误,并且找出需求的不足之处。

3.3测试过程中要保持度量

  在使用基于需求的测试方法的过程中,保持对需求的可追踪性非常重要。保持需求与测试用例及测试之间的可追踪性有助于监视进度、度量覆盖率,当然也有助于控制需求变更。

基于需求的测试策略是测试过程中最常用,最重要的测试策略,使每个测试工程师都应该掌握的测试策略。

2019年连续修心三十六天 土司于北京

你可能感兴趣的:(基于需求的测试策略)