ISTQB AL-TA/TTA连载系列10:有效提高测试有效性与测试质量

来源:互联网 发布:php给手机发短信 编辑:程序博客网 时间:2024/04/28 01:13

[概述]

根据需求规格说明设计的测试用例全部执行完毕,没有发现严重的问题和缺陷,并不能代表产品是高质量的,是满足用户的要求的。

[正文]

什么样的软件产品可以称为高质量的?测试人员在测试过程中,执行的测试用例完全覆盖了需求规格说明中的需求条目,是不是就可以认为测试对象的质量满足了要求?或者说,软件产品的所有功能都可以正常运行,并且按时交付给了客户,客户是否就对该产品的质量感到满意?

为了更好的回答该问题,测试人员有必要首先了解一下质量的含义。质量是什么?IEEEStd 610中对质量的定义是“组件、系统或者过程满足指定需求或者用户/客户需要以及期望的程度”。Jerry Weinberg对质量的描述是“Quality is the value to some person(质量是可以为一些人提供的价值)”。

从质量的描述中,可以看出质量是带有内在主观性的:对于同一个产品,不同的利益相关者对质量的理解和要求是不一样的。因此,为了提高测试效率和产品质量,有必要在测试设计和执行过程中不断的应用质量特性。

下面通过一个实际的案例分析,阐述了如何在测试过程中应用质量特性来提高测试效率和产品质量:分析测试过程中存在的问题,应用质量特性定义适合组织和产品特点的测试类型,通过测试类型的应用提高测试在质量特性的覆盖率,从而不断提高测试效率,实现测试质量的不断提升。

案例描述

宽带接入系统IPDSLAM为客户提供ADSL宽带上网业务,其中的上联口是100M/1000M以太网。整个系统提供丰富的二层和三层协议和功能,因此整个产品的开发周期和开发时间比较长。为了更好的满足客户的需求,同时也方便项目过程的管理和监控,整个产品采用的开发模型是增量模型,将整个产品分成4个版本来进行开发,这里分别表示为项目A、项目B、项目C和项目D。

在项目A交付给客户使用之后,发现客户反馈的问题比较多(以产品交付3个月之内客户反馈的缺陷数目计算),并且相对比较严重,导致客户对该产品没有信心,并且影响公司的整体形象。在项目分析会议上,项目经理针对测试团队提出了“为什么在测试过程中没有发现这些问题”这样尖锐的问题,要求测试团队仔细分析其中存在的问题,并将分析的结果应用在项目C上,希望能够对目前糟糕的情况有所改变。

 

尽管产品质量的提高并不仅仅依赖于测试团队的测试质量,它需要项目所有相关人员的积极参与。但是项目A的产品发布之后,在用户那里发现很多的缺陷和问题,至少说明测试团队在测试过程中遗漏了不少缺陷,其缺陷发现率并不高。

测试团队通过分析项目A中已有的测试用例,以及从用户使用现场反馈的缺陷,发现原来设计的测试用例大部分都集中功能测试方面,而用户反馈的缺陷则大部分属于非功能的缺陷。

为了在后续项目中提高测试在功能特性和非功能特性的覆盖率,测试团队基于ISO9126内部和外部质量特性,以及IPDSLAM产品本身的特点,详细的定义了在测试设计和执行过程中必须覆盖的测试类型(通过测试类型的定义来反映不同的质量特性的要求)。通过在测试过程中引入测试类型的概念,尽量减少测试人员在测试设计和执行过程中遗漏某些质量特性,以保证整个测试的测试覆盖率和测试质量的提升。下图是IPDSLAM项目中定义的测试类型:


图1 IPDSLAM测试类型

定义了IPDSLAM的测试类型之后,测试团队将测试类型应用于IPDSLAM的C项目。在C项目的整个测试任务结束之后,对测试类型应用之后的结果进行了详细的分析(通过和A项目的测试数据进行比较),得到了表1的比对数据:

表 1 测试用例在测试类型上的分布

测试类型

项目A

项目C

用例数目

数目%

缺陷数

缺陷%

用例数目

数目%

缺陷数

缺陷%

功能性

291

57.97%

97

58.79%

293

51.49%

101

46.12%

可靠性

11

2.19%

2

1.21%

23

4.04%

17

7.76%

易用性

3

0.60%

2

1.21%

31

5.45%

19

8.68%

可移植性

6

1.20%

1

0.61%

7

1.23%

3

1.37%

配置

148

29.48%

57

34.55%

143

25.13%

59

26.94%

容量

5

1.00%

1

0.61%

14

2.46%

4

1.83%

性能

11

2.19%

2

1.21%

17

2.99%

9

4.11%

一致性

21

4.18%

3

1.82%

35

6.15%

7

3.20%

兼容性

6

1.20%

0

0.00%

6

1.05%

0

0.00%

总共

502

100.00%

165

100.00%

569

100.00%

219

100.00%

 

通过分析表1中的数据,我们至少可以从下面几个方面对项目A和项目C的结果进行比较,并从中看出测试类型的应用,不仅提高了测试效率,也提高了测试产品的质量。

(1)测试用例数目

°        在系统需求条目数量相似的情况下,项目C中分析和设计得到的测试用例是569,而项目A中的数目是502,测试用例数目增加了约15%;

°        测试类型“功能性”和“配置”的测试用例比例,从项目A中的87.45%减少到了76.63%,而其他的非功能性测试类型从12.55%增加到了23.37%;

从上面的数据分析可以看出,测试类型的引入可以为测试人员提供更完整和系统化的测试用例设计和执行思路,特别是针对非功能性测试用例设计和执行。

(2)测试用例有效性

°        在系统需求条目类似的情况下,与项目A中的165个相比,项目C中发现的缺陷数目增加到了219个;

°        测试用例发现缺陷的有效性 =(发现缺陷的数目/执行测试用例的数目)。通过计算发现:项目A中的测试用例发现缺陷有效性为0.33缺陷/测试用例,而项目C中的有效性为0.38缺陷/测试用例,应该说项目C中的测试用例有效性有了一定程度的提高;

°        通过测试类型“功能性”和“配置”发现的缺陷比例,从项目A中的93.33%,减少到了73.06%。而其他测试类型发现的缺陷比例,从项目A中的6.67%,增加到了26.94%。也就是说,测试类型中的非功能测试用例发现的缺陷比例有比较大的提高;

(3)缺陷发现百分比DDP

另外一个比较明显的指标是测试阶段的缺陷发现百分比DDP。以产品发布给用户之后3个月的时间作为计算的参考点,缺陷发现百分比DDP的计算公式为:测试阶段发现的缺陷数目/(测试阶段发现的缺陷数目+3个月内用户反馈的缺陷数目)。通过计算发现,项目A的缺陷发现百分比为81.68%,而项目C的缺陷发现百分比为95.22%。因此,测试类型的引入,很明显的提高了缺陷发现百分比。

本案例通过对项目背景、测试类型的定义和测试类型在项目C中的应用情况进行了较为详细的分析:分别从测试用例数目、测试用例有效性和测试缺陷发现百分比三个方面,对项目A和项目C中的一些测试数据进行了比较,可以发现测试类型的引入,在项目测试过程中,可以起到以下作用:

°        测试类型的引入可以为测试人员提供了一个系统的方法,帮助他们建立明确的测试思路,即从哪些方面来设计和执行测试用例。因此,在需求不完善的情况下,可以增加测试用例设计的数目,从而改进测试用例的覆盖率;

°        在测试类型的定义过程中,针对以前项目中的经验和教训,例如:产品在什么地方容易出现缺陷,进行了合适的失效分析,并将相关的失效模式映射到其中的一些测试类型。因此,测试类型的引入在提高测试用例覆盖率的同时,也提高了测试用例发现缺陷的有效性;

°        测试用例覆盖率和测试有效性的提高,改进了测试质量,使得遗漏到客户的缺陷数目和比例也有了比较明显的降低,从而增强了客户对产品的满意度和信心,也提升了公司的形象;

除了上面的几个明显的作用之外,测试类型的定义和引入,对相关的开发过程和测试过程的改进也提供了一些思路:

°        促进需求质量改进:测试类型的定义,实际上要求需求文档中的需求条目应该覆盖这些类型。也就是说,可以让系统人员更多的关注系统的非功能需求。因此,测试类型可以作为系统文档评审检查表的一个内容,提高评审的效率;

°        作为测试评估的准则:测试类型的定义,清晰的说明测试人员的测试用例设计和执行应该覆盖的内容,从而可以提高测试的覆盖率。因此,测试类型也可以作为测试用例评审的检查表内容之一,同时也可以将“测试是否全部覆盖了这些测试类型”作为系统测试的出口准则之一;

°        作为测试经验的传承:由于测试类型的定义和运用,结合了已有项目的经验和教训,参考了以前的缺陷并进行了相关的失效模式分析。因此,通过测试类型的应用和改进,可以不断提升团队的测试能力;

当然,测试覆盖率和测试效率的提高,进而改进测试质量,并不是仅仅通过测试类型的定义和引入就可以完全达到的。测试质量的提高,也需要测试人员不断增强对测试对象、客户使用习惯等的理解。同时,测试人员也需要不断加强测试技术和方法的学习和应用。

更多资料,欢迎访问:http://blog.csdn.net/Wenqiang_Zheng



原创粉丝点击