测试缺陷分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

测试缺陷分析

摘要:

测试活动作为IT项目和产品开发一个重要的环节,通过发现产品或组件的缺陷,并反馈给开发组修复验证这些缺陷,从而在一定程度上保证了外发产品的质量。对这些测试活动发现的缺陷进行深入的分析,可以有助于我们进行质量预测、进行过程改进、量化的衡量产品质量。

关键词:

测试分析、过程改进、质量预测、过程能力、缺陷

正文:

项目研发过程中,我们通过单元测试、集成测试、系统测试发现了大量的缺陷。我们把这些Bug输入到Excel或者其他测试管理系统中,跟踪其解决。一旦 Bug fix完成后,大多数情况下我们就把这份bug list束之高阁,偶尔能想到的用途就是拿出来衡量测试组的绩效,或者用来评估开发组的质量表现。

一般来说质量分析有以下集中情况

•利用缺陷引入-发现矩阵分析

缺陷有发现阶段和引入阶段两个重要指标,发现阶段和引入阶段可以是软件生命周期的各个阶段,根据这两个阶段可以绘制出一个矩阵,从而分析出软件开发各个环节的开展质量,找到最需要改进的环节。

开始例子分析之前先解释一下缺陷引入-发现矩阵的一些概念。

矩阵的每行表示该阶段或活动发现的各阶段产生的缺陷数;矩阵的每列表示该阶段或活动引入的缺陷泄露到后续各环节的缺陷数。

缺陷移除率定义为:缺陷移除率=(本阶段发现的缺陷数/本阶段引入的缺陷数)*100%。如需求阶段一共引入了15个缺陷,需求评审时候只发现了2个,设计过程中发现了10个,编码和单元测试阶段发现了两个,还有一个直到系统测试阶段才被发现。这样,需求阶段的缺陷移除率=2/15*100%=13%。它反映的是该活动阶段的缺陷清除能力。

反过来还有一个概念,缺陷泄露率,就是有多少本阶段引入的缺陷没有在本阶段发现而是被泄露到后阶段环节才被发现。其计算公式为:缺陷泄漏率=(下游发现的本阶段的缺陷数/本阶段注入的缺陷总数)*100%。显然,它等于[1-缺陷移除率]。它反映的是本阶段质量控制措施落实的成效。

下面是一个分析例子:

从上表可以看到,编码过程的缺陷大部分依赖系统测试发现。单元测试和集成测试活动开展不够深入。我们可以进一步分析这些系统测试出来的测试缺陷,是不是可以被更前端的评审/测试/设计讨论活动所替代。详细见“四、利用泄漏的下游缺陷回溯过程有效性”

另外,我们看到,需求阶段引入的缺陷绝大部分是在设计阶段发现的。这可能是我们大部分项目的一个现实,需求不稳定、需求不明确,很多东西需要在设计过程中才能明确下来。也许从这个分析结果中给我们一个启示,我们在设计评审时候,也需要重新审视我们的需求规格说明书,必要时候利用需求追踪矩阵这样的规矩方法来辅助我们发现上游需求的缺陷。把这样的机制固化起来,作为我们标准研发过程的一个要素或者过程指导书。

当然,实际规划“缺陷引入-发现矩阵”时,可以依据自己的管理要求,对缺陷的发现活动和引入阶段进行细分或初分,并且在Bug系统中提交时,需要准确的填写这些属性字段。

•利用缺陷的分布进行分析

可以选某个阶段的测试缺陷进行分析,按照这些缺陷对应的产品组成部分来汇总这些数据。利用这样的分布,可以找出我们产品/项目的高危模块来。这些模块导致了我们产品的主要缺陷。主要用到的分析手段是数据透视表和柏拉图。让我们看看下面的例子:

这是一个简单的OA系统,它只有5个子系统。我们把这些子系统各有多少缺陷列出来,找到了改善质量的关键模块是后台交易模块。

像上图,这是一个较为复杂的MIS系统,有近20个功能块。这个时候,可以利用柏拉图识别出占80%问题的那少数模块,针对其采取强于其它产品组成部分的质量控制措施。

需要指出的是:采用缺陷分布只是分析的第一步。它只不过提供了你分析影响产品质量的那些重点模块,其信息不足以给出更深层次的原因。需要针对这些高危模块进行进一步的分析,识别缺陷的产生根源。

当然,也有人认为绝对数去衡量缺陷的分布并不合适,所以有些人也会把缺陷按照严重程度对应一定的权重系数折算成分析意义上的标准故障。如上表,折算系数为,严重*10,关键*5,一般*3,次要*1,优化*0。

这种分析需要我们的bug系统建立产品组件的概念,使得缺陷填报人能够正确的填报每个缺陷的产品组件位置。

•利用缺陷的阶段分布模型进行质量预测

假设我们为bug管理系统建立了“一、利用缺陷引入-发现矩阵分析”中描述的缺陷引入-缺陷发现阶段信息,那么我们可以对相似的项目的缺陷阶段分布进行度量,形成该类型项目的缺陷分布的过程模型。它给予我们的信息是:只要是这种类型的项目,按照相似的过程方法进行研发,那么其质量表现也是相似的。

我们之所以作这样的假设,是有一个前提,就是我们研发过程是高度一致的,并且过程的表现也是稳定的。这样,我们得出的过程能力模型才具有可信度。

下面是一个如何运用测试分布模型进行质量预测的例子:

如果需求阶段发现了10个缺陷,就可以预计到设计阶段我大概要清除70个缺陷,依次可以估计到后阶段各个环节的缺陷数,作为我们该阶段工作的交付准则。并且,可以预测到产品发布后的使用表现会出现大约2个故障泄露到用户手中。

这种分析预测模型的建立,要求组织的测试/评审过程比较稳定。即组织整体达到CMMI 三级成熟度,同时在VAL和VER(验证和确认)过程域的达到CMMI四级的成熟度级别,即量化管理级别。

•利用泄漏的下游缺陷回溯过程有效性

经验告诉我们,越到后端发现的缺陷,用于问题复现、问题定位和bug修复的时间就越多。那么我们是不是可以在项目研发的更前端发现这些缺陷呢?有什么方式让我们识别项目研发前端哪些活动没有充分投入、或者没有运用合适的工程/技术方法导致这些问题被泄露到下游呢?

其实,我们有很简便的方法可以达到这个目的。从团队的典型项目中运用一定的抽样原则抽样出某个阶段的若干个缺陷,从技术、流程、工程方法、费效比方面去分析其更适合、更经济的清除方法。然后把这些方法固化到我们日常的项目实施过程中,逐步就可以降低上游对后端的缺陷泄露。

下面以对一个项目的系统测试阶段发现的故障为例进行过程有效性回溯分析:

从上表可以看出,真正需要遗留到系统测试阶段才能发现的故障只有7%,大部分故障应该在集成测试和设计评审过程中就应该发现的。

导致在集成测试过程中未能充分发现这些缺陷的原因主要有:

相关文档
最新文档