精华内容
下载资源
问答
  • 测试缺陷分析务实篇

    千次阅读 2013-08-24 22:10:48
      ... 测试活动作为IT项目和产品开发一个重要的环节,通过发现产品或组件的缺陷,并反馈给开发组修复验证...对这些测试活动发现的缺陷进行深入的分析,可以有助于我们进行质量预测、进行过程改进、量化的衡量
     
     
    文章出处:www.51testing.com 作者:罗耀秋 发布时间:2006-08-08
     

        摘要:

        测试活动作为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%,大部分故障应该在集成测试和设计评审过程中就应该发现的。

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

        1、测试环境不具备,导致部分测试项必须到系统测试阶段才具备测试条件;

        2、测试设计中某些测试项的缺失,需要加强测试设计的评审工作;

        3、回归测试过程中,开发部只是对测试故障进行验证,而对bug fix波及的范围缺乏分析和验证;

        这样,针对这些分析结论,我们就可以制定针对性的整改措施。如:

    • 加强开发部的故障波及分析及波及分析验证工作;
    • 项目计划中加强对测试需求的关注,提前采购和协调必要的测试环境;
    • 每次回归对泄露的缺陷开发部都作相应的复盘,并根据复盘结果,完善单元测试和集成测试的测试设计;
    • 利用缺陷分类来进行缺陷的根源分析

        对于测试出来的BUG进行缺陷分类,按照BUG的类型分布,找出那些关键的缺陷类型,进一步分析其产生的根源,从而针对性的制定改进措施。

        下面以一个项目的系统测试故障为例进行分析:

        从系统测试故障来看,有较多故障是由接口原因造成的,细分有以下几种原因:

        1、跨项目间的接口,接口设计文档的更改没有建立互相通知的机制,导致接口问题到系统测试时候才暴露出来;

        2、部门内部跨子系统的接口,由于本项目设计文档按功能规划编写的,而不是按照产品组件,一般由主要承接功能工作的组编写该文档,接口内容可能不为其他开发组理解并熟悉,导致因接口问题而出错;

        3、系统设计基线化后,更改系统接口,没有走严格的变更流程,进行波及分析,导致该接口变更只在某个子系统中被修改,而使错误遗漏下来;

        那么我们可以针对性的制定改进建议:

        1、对接口文档的评审一定要识别受影响的相关干系人,使他们了解并参与接口设计的把关;

        2、对基线化的接口设计文档的变更一定要提交变更单给CCB决策,并做好充分的波及影响分析,以便同步修改所有关联的下游代码;

        3、概要设计文档按子系统规划,详细设计文档按模块规划,通过相关组参加评审协调接口设计;

        以上例子的缺陷分类只是为了描述方便,本身描述并不尽合理。实际定义缺陷分类可能有很多个维度,如发现活动、引入活动、缺陷来源、缺陷类型、严重程度等。只要满足自己的缺陷管理、缺陷分析需求即可。

    • 缺陷收敛趋势分析

        项目管理中一项非常重要但也十分困难的工作是衡量项目的进度、质量、成本等,统称为项目的状态,以确定项目是否能按期保质完成。这方面,测试提供了两个非常重要的参数,一个是缺陷数量的趋势,另一个是缺陷修复的趋势。(注:此节所说的测试均指代系统测试)

        缺陷趋势就是将每月新生成的缺陷数、每月被解决的缺陷数和每月遗留的缺陷数标成一个趋势图表。一般在项目的开始阶段发现缺陷数曲线会呈上升趋势,到项目中后期被修复缺陷数曲线会趋于上升;而发现缺陷数曲线应总体趋于下降;同时处于OPEN状态的缺陷也应该总体呈下降趋势,到项目最后,三条曲线都趋向于零。如:

        项目经理会持续观察这张图表,确保项目健康发展,同时通过分析预测项目测试缺陷趋于零的时间。在一定的历史经验的基础上分析使用这一图表会得到很多有价值的信息,比如说,可分析开发和测试在人力资源的配比上是否恰当,可以分析出某个严重的缺陷所造成的项目质量的波动。对于异常的波动,如本来应该越测试越收敛的,却到了某个点,发现的故障数反而呈上升趋势,那么,这些点往往有一些特殊事件的发生。如:

    • 在该时间段送测的回归版本增加了新的功能,导致缺陷引入;
    • 该回归版本开发部没有进行集成测试就直接送测?等等。

        当然,这个统计周期也可以根据我们的项目实施情况进行。如按照回归版本的版本号进行统计、按周进行统计等。也有公司把缺陷收敛情况当作判断版本是否可以最终外发的一个标志。

        小结:

        通过对测试缺陷分析,能够给予我们很多改进研发和测试工作的信息。

        当然,这种分析来源于一个前提,我们需要规划一个好的Bug管理系统,满足我们这些分析的信息需要。另外,我们的研发过程是稳定的,其质量表现大体是一致的,这样数据反映的趋势才具备可信度。

    此文在51testing首次发布,转载请注明出处:www.51testing.com
    展开全文
  • 软件测试缺陷分析方法简介

    千次阅读 2014-07-02 15:33:40
    是将一个缺陷在生命周期的各环节的属性组织起来,从单维度、多维度来对缺陷进行分析,从不同角度得到各类缺陷缺陷密度和缺陷比率,从而积累得到各类缺陷的基线值,用于评估测试活动,指导测试改进和整个研发流程的...
    ODC分析法

      ODC(正交缺陷分类)分析方法最早由IBM的waston中心推出,是将一个缺陷在生命周期的各环节的属性组织起来,从单维度、多维度来对缺陷进行分析,从不同角度得到各类缺陷的缺陷密度和缺陷比率,从而积累得到各类缺陷的基线值,用于评估测试活动,指导测试改进和整个研发流程的改进;同时根据各阶段缺陷分布得到缺陷去除过程特征模型,用于对测试活动进行评估和预测。

      无论测试人员还是开发人员在创建和处理一个缺陷时首先都要添加一些字段内容用于后面的ODC分析。

      创建缺陷人员需要填写的字段内容主要有:发现缺陷活动、功能模块、结果影响、严重程度和缺陷类型等。处理缺陷人员需要填写的字段内容主要有:开发处理决定、缺陷注入阶段等。(字段可以根据分析需要进行扩充、删减)

      基于这些字段内容便可以对累计的缺陷数据,根据不同需要单独或两两作出不同维度的数据分析。主要通过数据图表的形式来显示分析结果,常用的图表为饼图(单维度)、直方图(多维度)。通过结果评估测试活动,指导测试改进和研发流程改进。

      单维度分析主要采用饼图反映所选属性中各类缺陷数量所占比例。如对“功能模块”属性进行单维度分析,目的在于通过各个功能模块的缺陷密度,了解各个功能模块的质量状况。生成的饼图如下:

      多维度分析采用直方图的方式,结合两个或者多个属性对缺陷进行分析。如使用“功能模块”属性结合“严重程度”属性进行二维度分析。目的在于通过各个模块所产生的缺陷的严重级别了解各个模块的开发质量状况。生成的直方图如下:

      Gompertz分析法

      软件测试是为了发现软件产品中存在的缺陷,是软件质量保证的重要阶段。质量、进度和成本是软件项目关注的三大要素,它们互相依赖、互相制约。测试的总目标是充分利用有限的人力、物力,高效率、高质量的完成测试。Gompertz分析方法是在利用已有测试数据的基础上,对测试过程进行定量分析和预测,对软件产品质量进行定量评估,对是否结束测试任务给出判断依据。

    我们在日常的软件测试过程中会发现,在测试的初始阶段,测试人员对测试环境不很熟悉,因此日均发现的软件缺陷数比较少,发现软件缺陷数的增长较为缓慢;随着测试人员逐渐进入状态并熟练掌握测试环境后,日均发现软件缺陷数增多,发现软件缺陷数的增长速度迅速加快;但随着测试的进行,软件缺陷的隐藏加深,测试难度加大,需要执行较多的测试用例才能发现一个缺陷,尽管缺陷数还在增加,但增长速度会减缓,同时软件中隐藏的缺陷是有限的,因而限制了发现缺陷数的无限增长。这种发现软件缺陷的变化趋势及增长速度是一种典型的‘S’曲线,满足Gompertz增长模型的应用条件。模型表达式为:

      Y=a*b^(c^T)

      其中Y表示随时间T发现的软件缺陷总数,a是当T→∞时的可能发现的软件缺陷总数,即软件中所含的缺陷总数。a*b是当T→0时发现的软件缺陷数,c表示发现缺陷的增长速度。我们需要依据现有测试过程中发现的软件缺陷数量来估算出三个参数a,b,c的值,从而得到拟合曲线函数。

      对于三个参数a,b,c的估算需要大量复杂的数学计算过程,下面通过一个实例来做简单说明:

      某测试项目,已经执行测试21周,测试数据如下表所示:

      通过对以上测试数据进行数学计算并采用“非线性回归最小二乘法”,最终估算出a,b,c三个参数分别为448.685,0.078和0.874。则得到的Gompertz增长模型拟合曲线函数为:

      Y=a*b^(c^T)=448.685*0.078^(0.874^T)

      生成的曲线图如下:

      从得到的拟合曲线函数可以看出,该软件产品的总缺陷数估计共有448.685个(极限缺陷数=449)。执行测试21周后,共计发现缺陷数374个,发现缺陷率为83.3%,测试是不充分的。以目前的测试能力来看,若要想将发现缺陷率达到95%,在考虑进一定标准偏差和相关系数前提下,需要发现缺陷数至少达到419.93个。则有:

      419.93= a*b^(c^T)= 448.685*0.078^(0.874^T)

      解得T=28,即要测到第28周,还需要再测7周时间可将发现缺陷率提高到95%。之后产品经理就可以根据产品的质量等级、产品成本以及产品进度决定是继续测试还是退出测试。

      需要说明的是,这个方法使用前提是产品的整个测试活动中测试能力保持相对稳定,同时对测试过程中发现的缺陷只做数量上的处理,不做等级上的划分,这是这个方法的不足之处。

    DRE/DRM分析法

      DRE/DRM分析法是通过已有项目历史数据,得到软件生命周期各阶段缺陷注入和排除的模型,用于设定各阶段质量目标,评估测试活动。

      缺陷排除效果分析DRE矩阵:

      DRE主要针对历史数据,矩阵的每一列代表缺陷在何时(什么阶段)引入(产生),每一行代表发现缺陷时开展的工作。矩阵中的数值代表已经发现的缺陷数量。例如:在做代码审查工作时发现1095条缺陷,其中12条是在需求阶段就已经产生,941条是在编码阶段产生。而经过各项测试工作后,发现的缺陷中有1537条是在编码阶段引入。

      本矩阵的目标是要分别计算出各个阶段的缺陷移除率为后面所用。缺陷移除率的定义为当前阶段工作实际发现的缺陷数量占当前阶段应该发现的缺陷数量的比值。例如:做单元测试时实际发现332条缺陷,在单元测试及之前阶段应该已经发现122+859+939+1537+2=3459条缺陷,而在做单元测试工作之前已经发现730+729+1095=2554条缺陷。就是说单元测试工作本该可以发现到3459-2554=905条缺陷,实际却发现332条缺陷,缺陷移除率为332/905=36.7%。其他阶段的缺陷移除率依此算法都可得到。

      下面就可以用DRM缺陷排除模型进行项目质量策划。

      其中“前一阶段泄露的缺陷”等于上一阶段“阶段出口缺陷数”。每个阶段的“注入缺陷”一般来自于历史数据的平均值(经验值)。“缺陷排除有效率”同样来自于对历史数据的计算(前面已经提到)。“排除缺陷数”为我们最终想要的结果,它等于每个阶段还未排除的缺陷数(小计部分)与此阶段的缺陷排除有效率的乘积。从这个结果我们能估算出如果按之前的经验我们在每个阶段应该能发现的缺陷数。如果想降低最终“现场”阶段发现的缺陷,在每个阶段注入缺陷一定的情况下需要提高缺陷排除有效率来达到目的,它的提高意味着每个阶段排除缺陷数量的提高,也是质量目标的提高。

    展开全文
  • 软件测试中的缺陷分析与管理

    千次阅读 2019-08-20 17:03:48
    缺陷的编号、缺陷的标题、缺陷的基本信息、测试的软件和硬件环境、测试的软件版本、缺陷的类型、缺陷的严重程度、缺陷的处理优先级、缺陷的复现步骤、缺陷的实际结果描述、期望的正确结果、截取的缺陷图像、注释文字...

    1.软件缺陷报告地基本组成元素包括

         缺陷的编号、缺陷的标题、缺陷的基本信息、测试的软件和硬件环境、测试的软件版本、缺陷的类型、缺陷的严重程度、缺陷的处理优先级、缺陷的复现步骤、缺陷的实际结果描述、期望的正确结果、截取的缺陷图像、注释文字 等

    2.缺陷地状态主要包括

       激活(新建/打开)、已修复、关闭、从新打开、推迟、不能复现、重复、不是缺陷     

    3.缺陷地严重程度主要包括

      致命的、 严重的、一般的、较小的、建议性的

    4.什么是软件缺陷?  

    所谓软件缺陷,即为计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。

    5.怎么判断是不是软件缺陷?

        用户体验不好

        界面上有明显的错误信息

        功能不完备,导致功能缺失

        功能不完善

        逻辑不正确,与需求说明书不符

       模块之间的交互性不好,与其他的模块做集成性测试时遇到问题

       程序的性能不够好,不能承载压力考验

     

    6.软件缺陷必须符合哪5个原则?

     软件未达到产品说明书表明的功能

       软件出现了产品说明书指明不会出现的错误

       软件功能超出了产品说明书指明范围

       软件未达到产品说明书虽然未指明但应达到的目标

       软件测试人员认为难以理解、不易使用、运行速度缓慢、或者最终用户觉得不好

     

     

    7.缺陷地产生主要原因有哪些原因?最主要地原因是什么?

       没有编写说明书、设计、编码、其他

       没有编写说明书

     

    8.当你发现一个缺陷时,应该怎么确认的确是一个缺陷?

    首先,可以将软件需求说明书、用户手册以及联机帮助作为识别和判断缺陷的辅助工具。

    其次,通过增加自己对测试软件产品的行业背景知识的了解来发现被忽视的问题。

    最后,通过沟通的方式来收集、学习和分享其他人判断缺陷的方法和经验。

     

    9.正式提交一个缺陷前,你应该做什么?

     再次确认是否是缺陷,记录下缺陷查收的每一个步骤(在现缺陷),编写缺陷报告,提交缺陷

     

    10.怎么处理无法在现的缺陷?

    首先,应当对这样的缺陷进行详细的记录,并尽快提交给开发人员

    其次,对于寻找难以再现的缺陷要合理的安排时间

    最后,在测试过程中对未在现缺陷予以关注

     

    11.什么是重复缺陷?怎么避免重复缺陷?

      指在统计周期再次发生的同类型缺陷。

    一个人测试可以在提交的时候输入关键字进行筛选一下。

    多人测试尽量分模块进行测试,提交之前都应该筛选一下。避免重复提交。

     

    12什么是无效缺陷?怎么避免无效缺陷?

    软件产品中不符合用户需求的地方即可认定为软件缺陷(Bug)。这里软件产品可以是代码段、应用程序、软件系统、产品文档等任何软件工程行为的产品。

        前细化需求,保证对需求理解正确,避免提交存在歧义的缺陷:

    对于自己把握不准的缺陷,提交前进行讨论

    在提交bug之前,一定要保证bug能够重现,并且在bug中清楚的描述重现步骤

    保证测试环境的准确性,并且做好版本的配置管理

     

    13.什么是缺陷报告?有哪些用途?

    用于记录缺陷,对缺陷进行分类,为解决不同的缺陷分配合理的资源,并通过缺陷报告对处理缺陷的过程进行跟踪,从而使软件缺陷得以修复。

     记录缺陷、缺陷分类、缺陷跟踪几大用途

     

    14.缺陷报告的5个写作准则是什么?

    准确、清晰、简洁、完整、一致  (5C原则)

     

    15.缺陷报告的内容有哪些?

    缺陷的编号、缺陷的标题、缺陷的基本信息、测试的软件和硬件环境、测试的软件版本、缺陷的类型、缺陷的严重程度、缺陷的优先处理级、缺陷的复现步骤、缺陷的实际结果描述、期望的正确结果描述、截取的缺陷图像、注释文字

     

    16.缺陷报告的组织结构是什么?

    缺陷的编号、缺陷的标题、缺陷的基本信息、测试的软件和硬件环境、测试的软件版本、缺陷的类型、缺陷的严重程度、缺陷的优先处理级、缺陷的复现步骤、缺陷的实际结果描述、期望的正确结果描述、截取的缺陷图像、注释文字

     

    17.缺陷报告的写作需要注意什么问题?

    自我检查和提问:

      缺陷报告已经向读者包含完整、准确、必要的信息了吗? 一个缺陷报告是否只报告了一种缺陷?步骤可以完全复现而且表达清除吗? 实际结果和期望结果是否描述准确等

    避免常见的错误:

    不要“我”“你”而用动词或者必要时使用“用户”代替

    不要使用模糊词汇“似乎”“大概”等

    不要对软件的质量优劣做任何的主观性强的批评和嘲讽

    不确定的缺陷测试问题不要放在缺陷管理数据库。

     

    18.缺陷的分类?

    测试过程中发现的缺陷一般分为如下几类:

    代码问题:不满足需求、功能实现错误;对产品或项目质量有影响的bug可统一划入;

    设计缺陷:页面美观性、协调性、错别字等

    用户体验:对产品、项目的建议性意见,不强制要求修改

    性能问题:进行性能测试时使用,暂定:网络延时、内存问题、CPU占用、硬盘问题

    安全问题:业务功能存在的安全问题

    接口问题: 涉及有模块间数据传递时使用

    配置问题: 由于提供的配置不当或者配置不能够满足实际要求而出现的问题

    缺陷错误严重程度:

    5级-建议问题的软件缺陷(Enhancemental):由问题提出人对测试对象的改进意见或测试人员提出的建议、质疑。

    4级—较小错误的软件缺陷(Minor),使操作者不方便或遇到麻烦,但它不影响功能过的操作和执行,如错别字、界面不规范(字体大小不统一,文字排列不整齐,可输入区域和只读区域没有明显的区分标志),辅助说明描述不清楚。

    3级—一般错误的软件缺陷(major):次要功能没有完全实现但不影响使用。如提示信息不太准确,或用户界面差,操作时间长,模块功能部分失效等,打印内容、格式错误,删除操作未给出提示,数据库表中有过多的空字段等。

    2级—严重错误的软件缺陷(critical):系统的主要功能部分丧失、数据不能保存,系统的次要功能完全丧失。问题局限在本模块,导致模块功能失效或异常退出。如致命的错误声明,程序接口错误,数据库的表、业务规则、缺省值未加完整性等约束条件

    1级—致命的软件缺陷(Fatal):造成系统或应用程序崩溃、死机、系统挂起,或造成数据丢失,主要功能完全丧失,导致本模块以及相关模块异常等问题。如代码错误,死循环,数据库发生死锁、与数据库连接错误或数据通讯错误,未考虑异常操作,功能错误等。

     

    19.如果测试提交的缺陷开发人员不认可怎么办?

    第一步:与开发人员反复友好沟通;

    第二步:反复复现缺陷的存在,并可以将缺陷复现的截图与复现步骤整理成文档提供给开发人员;

    第三步:如果还是不能说服开发人员,可以将该情况反映给测试组长或者测试经理,由测由测试组长或者测试经理评估协调。

     

    20.简述缺陷的生命周期。

    1.New          新建

    2. Open        打开 

    3. Assign      指派

    4. Test        测试

    5. Verified     确认

    6. Deferred    延期

    7. Reopened    重新打开

    8. Duplicate   重复

    9. Rejected    拒绝

    10. Closed     关闭

     

    21.缺陷按照严重程度可以分为哪些类型?

    缺陷错误严重程度:

    5级-建议问题的软件缺陷(Enhancemental):由问题提出人对测试对象的改进意见或测试人员提出的建议、质疑。

    4级—较小错误的软件缺陷(Minor),使操作者不方便或遇到麻烦,但它不影响功能过的操作和执行,如错别字、界面不规范(字体大小不统一,文字排列不整齐,可输入区域和只读区域没有明显的区分标志),辅助说明描述不清楚。

    3级—一般错误的软件缺陷(major):次要功能没有完全实现但不影响使用。如提示信息不太准确,或用户界面差,操作时间长,模块功能部分失效等,打印内容、格式错误,删除操作未给出提示,数据库表中有过多的空字段等。

    2级—严重错误的软件缺陷(critical):系统的主要功能部分丧失、数据不能保存,系统的次要功能完全丧失。问题局限在本模块,导致模块功能失效或异常退出。如致命的错误声明,程序接口错误,数据库的表、业务规则、缺省值未加完整性等约束条件

    1级—致命的软件缺陷(Fatal):造成系统或应用程序崩溃、死机、系统挂起,或造成数据丢失,主要功能完全丧失,导致本模块以及相关模块异常等问题。如代码错误,死循环,数据库发生死锁、与数据库连接错误或数据通讯错误,未考虑异常操作,功能错误等。

     

    22.缺陷按照优先级可以分为哪些类型

     

     

     

    展开全文
  • 测试缺陷结果分析

    千次阅读 2006-09-14 12:24:00
    一般来说质量分析有以下集中情况利用缺陷引入-发现矩阵分析 缺陷有发现阶段和引入阶段两个重要指标,发现阶段和引入阶段可以是软件生命周期的各个阶段,根据这两个阶段可以绘制出一个矩阵,从而分析出软件开发各个...

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

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

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

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

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

        缺陷移除率定义为:缺陷移除率=(本阶段发现的缺陷数/本阶段引入的缺陷数)*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三级成熟度,同时在VALVER(验证和确认)过程域的达到CMMI四级的成熟度级别,即量化管理级别。

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

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

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

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

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

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

        1、测试环境不具备,导致部分测试项必须到系统测试阶段才具备测试条件;

        2、测试设计中某些测试项的缺失,需要加强测试设计的评审工作;

        3、回归测试过程中,开发部只是对测试故障进行验证,而对bug fix波及的范围缺乏分析和验证;

        这样,针对这些分析结论,我们就可以制定针对性的整改措施。如:

    • 加强开发部的故障波及分析及波及分析验证工作;

    • 项目计划中加强对测试需求的关注,提前采购和协调必要的测试环境;

    • 每次回归对泄露的缺陷开发部都作相应的复盘,并根据复盘结果,完善单元测试和集成测试的测试设计;

    利用缺陷分类来进行缺陷的根源分析

        对于测试出来的BUG进行缺陷分类,按照BUG的类型分布,找出那些关键的缺陷类型,进一步分析其产生的根源,从而针对性的制定改进措施。

        下面以一个项目的系统测试故障为例进行分析:

        从系统测试故障来看,有较多故障是由接口原因造成的,细分有以下几种原因:

        1、跨项目间的接口,接口设计文档的更改没有建立互相通知的机制,导致接口问题到系统测试时候才暴露出来;

        2、部门内部跨子系统的接口,由于本项目设计文档按功能规划编写的,而不是按照产品组件,一般由主要承接功能工作的组编写该文档,接口内容可能不为其他开发组理解并熟悉,导致因接口问题而出错;

        3、系统设计基线化后,更改系统接口,没有走严格的变更流程,进行波及分析,导致该接口变更只在某个子系统中被修改,而使错误遗漏下来;

        那么我们可以针对性的制定改进建议:

        1、对接口文档的评审一定要识别受影响的相关干系人,使他们了解并参与接口设计的把关;

        2、对基线化的接口设计文档的变更一定要提交变更单给CCB决策,并做好充分的波及影响分析,以便同步修改所有关联的下游代码;

        3、概要设计文档按子系统规划,详细设计文档按模块规划,通过相关组参加评审协调接口设计;

        以上例子的缺陷分类只是为了描述方便,本身描述并不尽合理。实际定义缺陷分类可能有很多个维度,如发现活动、引入活动、缺陷来源、缺陷类型、严重程度等。只要满足自己的缺陷管理、缺陷分析需求即可。

    缺陷收敛趋势分析

        项目管理中一项非常重要但也十分困难的工作是衡量项目的进度、质量、成本等,统称为项目的状态,以确定项目是否能按期保质完成。这方面,测试提供了两个非常重要的参数,一个是缺陷数量的趋势,另一个是缺陷修复的趋势。(注:此节所说的测试均指代系统测试)

        缺陷趋势就是将每月新生成的缺陷数、每月被解决的缺陷数和每月遗留的缺陷数标成一个趋势图表。一般在项目的开始阶段发现缺陷数曲线会呈上升趋势,到项目中后期被修复缺陷数曲线会趋于上升;而发现缺陷数曲线应总体趋于下降;同时处于OPEN状态的缺陷也应该总体呈下降趋势,到项目最后,三条曲线都趋向于零。如:

        项目经理会持续观察这张图表,确保项目健康发展,同时通过分析预测项目测试缺陷趋于零的时间。在一定的历史经验的基础上分析使用这一图表会得到很多有价值的信息,比如说,可分析开发和测试在人力资源的配比上是否恰当,可以分析出某个严重的缺陷所造成的项目质量的波动。对于异常的波动,如本来应该越测试越收敛的,却到了某个点,发现的故障数反而呈上升趋势,那么,这些点往往有一些特殊事件的发生。如:

    • 在该时间段送测的回归版本增加了新的功能,导致缺陷引入;

    • 该回归版本开发部没有进行集成测试就直接送测?等等。

        当然,这个统计周期也可以根据我们的项目实施情况进行。如按照回归版本的版本号进行统计、按周进行统计等。也有公司把缺陷收敛情况当作判断版本是否可以最终外发的一个标志。

        小结:

        通过对测试缺陷分析,能够给予我们很多改进研发和测试工作的信息。

        当然,这种分析来源于一个前提,我们需要规划一个好的Bug管理系统,满足我们这些分析的信息需要。另外,我们的研发过程是稳定的,其质量表现大体是一致的,这样数据反映的趋势才具备可信度。

     
    展开全文
  • 一次针对国产化办公自动化系统的疲劳测试缺陷分析 2013-12-13 15:57 来源:光明网科技 我有话说有4人参与  1、 基于国产软硬件的办公自动化系统简述  伴随我国对国产化的软硬件的支持,具有自主...
  • 测试报告是指把测试的过程和结果写成文档,对发现的问题和缺陷进行分析,为纠正软件的存在的质量问题提供依据,同时为软件验收和交付打下基础。...1.测试结果与缺陷分析(功能、性能) 1.1 缺陷...
  • 缺陷密度 基本的缺陷测量是以每千行代码的缺陷数(个/KLOC)来测量的称为缺陷密度,其测量单位是...缺陷数据分析的重要性 统计未修复的缺陷数目(特别是严重性高的缺陷),预计软件是否可以如期发布 分析缺...
  • 缺陷漏测分析测试过程改进

    千次阅读 2016-01-21 12:00:48
    一、漏测的定义  所谓漏测,是指软件产品的缺陷没有被测试组发现而遗漏到了用户那里,却最终被用户所发现。如果产品在用户那里出现问题,产生的后果是非常严重的。...因此,进行漏测分析、预防漏测、促使缺
  • 软件测试——测试缺陷报告

    千次阅读 2018-07-23 18:37:08
    1 缺陷管理工具:ALM,JIRA,BUGZILA.BUGFREE.,MANTIS 2 缺陷标题: 2.1 在什么情况下发生什么问题 2.2 描述问题本质 2.3 标题不已过长 3 缺陷概述:提供缺陷本质与现象的描述。还包括缺陷的延展部分避免重现步骤...
  • 这篇文章实际就是软件测试的”犯罪心理学”(初级版):利用软件缺陷数据,对缺陷进行分类汇总,计算缺陷分析指标,进而发现软件生命周期的各个阶段的不足,制定相应改进方法,增强软件过程人为活动的规范性,最终目标...
  • 缺陷趋势分析

    千次阅读 2017-02-05 00:15:52
    缺陷趋势分析可以帮助测试管理人员调整测试策略,帮助项目决策是否要结束测试
  • 缺陷分析之缺陷预防的过程

    千次阅读 2019-11-01 10:50:21
    在研发过程中,使用缺陷预防的策略是一个很复杂的过程,关于缺陷预防的...第二步:在测试过程中就会发现一些缺陷,此时就需要记录这些缺陷并对缺陷进行跟踪,现在主要是通过缺陷管理工具来对这些缺陷进行记录和跟...
  • 缺陷分析指标

    千次阅读 2017-10-23 15:08:39
    作为一个软件测试的管理者,除了关注测试的执行情况,缺陷的多少,还需要对已有的缺陷进行分析,以了解项目当前的状况和评价测试人员。 一、通过分析缺陷来了解当前项目各模块的质量 1. 首先我们要了解项目当前...
  • 系统测试缺陷定义说明

    千次阅读 2019-10-24 09:13:43
    整理的一份系统缺陷定义说明,供大家参考 一、系统缺陷分类 测试中发现的系统缺陷等级分为以下5类: 缺陷等级 缺陷说明 缺陷主要特征 P5 重大 系统不能正常运行 ...
  • 软件测试缺陷密度的计算方法

    万次阅读 2019-03-20 15:57:37
    软件测试缺陷密度的计算方法 一、缺陷密度  基本的缺陷测量是以每千行代码的缺陷数(Defects/KLOC)来测量的。称为缺陷密度(Dd),其测量单位是defects/KLOC。缺陷密度=缺陷数量/代码行或功能点的数量。  二、计算...
  • 代码安全缺陷分析

    千次阅读 2018-01-03 09:28:37
    根据缺陷形成的原因、被利用的可能性、造成的危害程度和解决的难度等因素进行综合考虑,可以将常见的安全缺陷分为八类: 1、输入验证与表示(Input Validation and Representation) 输入验证与表示问题通常是...
  • 软件缺陷分析方法

    2016-11-16 07:44:00
    ODC分析法 ODC(正交缺陷分类)分析方法最早由IBM的waston中心推出,是将一个缺陷在生命周期的各环节的属性组织起来,从单维度、多维度来对缺陷进行分析,从不同角度得到各类缺陷...详细参见:软件缺陷分析方法:O...
  • 内容会涉及到软件测试的各个方面(性能测试,性能调优,功能测试,自动化测试,测试管理,测试工具,测试用例设计,缺陷分析预防,前沿测试技术...)——也可能会覆盖到软件开发方面。整理此贴的目的:1.目前越来越多的同行...
  • 软件缺陷分析

    万次阅读 2005-02-28 14:28:00
     缺陷分析本质上是对缺陷中包含的信息项进行收集,汇总,分类之后使用统计方法(或者分析模型)得出分析结果。缺陷分析得出的结果可以用来度量软件开发过程中各阶段中工作产品的质量,了解缺陷集中的区域,明晰缺陷...
  • 如何作缺陷分析

    千次阅读 2018-10-23 14:46:45
    产品测试组_理财基金统计季度:2016_Q1关键字:jira、Bug收敛、零Bug反弹、同比/环比第一部分 jira图表数据分析1. 最新问题图(以柱状统计图显示指定项目最新创建的问题):说明:绿色柱体含义为某一周提交的bug数,...
  • ODC缺陷分析

    千次阅读 2009-07-15 14:21:00
    今天上网查看些资料,...之前和一些测试行业的朋友聊天时,说到ODC的优点,当时觉得该缺陷分析法以后肯定会有大的用处;经过这几年的工作实践,发现推行一套很规范的方法真的挺难的。 希望以后我们的公司,我们的开
  • 缺陷分析与处理

    千次阅读 2015-09-22 09:27:39
    怎么分析日志和处理缺陷缺陷的后期处理? 2 听听程序猿的心声 BUG的描述不清楚,表达逻辑欠缺; 无效问题一大摞,重复问题数不清,偶现问题log不全; 不会分析log或代码。 3 看看测试童鞋们的抱怨 偶现的bug已经...
  • 软件测试缺陷管理

    万次阅读 2018-03-21 20:31:13
    软件测试系列---缺陷管理 一、软件缺陷的基本概念 1、软件缺陷的基本概念主要分为:缺陷、故障、失效这三种。 (1)缺陷(defect):存在于软件之中的偏差,可被激活,以静态的形式存在于软件内部,相当于bug; ...
  • 当需要分析与开发者和测试人员相关、与开发阶段相关、与顾客的满意程度相关的产品质量的外部属性时,据IBM介绍可以通过ODC分析这些属性的结果提高软件的质量。 ODC技术对于以下3种情况特别适用: (1)开发生命...
  • 测试类型分析进行细化测试用例条件的重要手段之一,通过测试类型的分类,测试人员可以将测试条件从不同的维度进行考虑,并发现不同的缺陷类型,从而提高测试的覆盖率。 测试类型并不是一个标准,它的定义需要考虑...
  • 缺陷清除率的简单分析

    千次阅读 2017-11-01 10:30:15
    缺陷发现分为了4个活动,一个月内的统计数据见下表:某项目的缺陷清除率分析缺陷注入\缺陷发现Sprint planning设计与编码代码评审测试小计需求分析453 12设计与编码 27128测试 22小计4530342缺陷清除率33.3%...
  • 缺陷报告【软件测试

    千次阅读 2019-03-12 17:40:40
    软件缺陷一、软件缺陷定义二、常见的软件缺陷三、软件缺陷产生原因四、软件缺陷的生命周期五、软件缺陷报告应包含的内容六、缺陷报告模板七、企业案例分析案例1缺陷描述案例2缺陷标题提炼 Author:lucky多多 转载...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 117,830
精华内容 47,132
关键字:

怎么进行测试缺陷分析