• 0
  • 1
分享
  • 结合正交缺陷分类法(ODC)理论分析生产缺陷
  • 恬恬圈 2019-08-22 13:46:54 字数 2113 阅读 4955 收藏 1

每当一个系统上线开始运维以后,项目组就会进行到一个阶段,不断的收到从线上反馈回来的生产事件,对生产事件进行有效的深度挖掘、分析,形成正确的改进项,可以持续的完善系统和研发管理过程。

常用的缺陷分析方法有:根本原因缺陷分析法、四象限缺陷分析法、ODC 缺陷分析法、Rayleigh缺陷分析法和Gompertz 缺陷分析法。

ODC(Orthogonal Defect Classification,正交缺陷分类)是获取缺陷的一种分类方案,但它不仅仅是一个分类方案,还是一个软件过程的度量系统,它是建立在包含于缺陷流中的语义信息基础上的,可以帮助评估测试效率,对错误进行跟踪,通过方案的分析机制可以评估客户的满意度。

1990 年Ram Chillarege 博士等人提出ODC 概念,并于1997 年基本完成ODC 理论体系建设。1998 年以后,IBM 公司开始在其全球24 个研发机构推广该技术,并取得了很好的经济效益。

ODC 一共有8 个属性,如下图所示。

15243603_201901211128521SxYs.png

ODC属性.png

通常ODC缺陷分析法是在研发阶段,当测试工程师发现缺陷并进行提交时,可以为该缺陷分配“活动(Activity)”“触发(Trigger)”和“影响(Impact)”三个属性;开发工程师在修改缺陷时,可以为该缺陷分配“阶段(Age)”“来源(Source)”“限定符(Qualifier)”“类型(Type)”和“目标(Target)”五个属性。

而针对生产缺陷来说,处理流程一般为: 

1、用户或者业务人员发现生产环境的问题,告知运维人员

2、运维人员判定是否为系统的缺陷 

3、运维人员无法判定时,需要通知系统的开发团队协助判定是否为系统缺陷 

4、若问题为系统缺陷,则转为生产缺陷,进入Hotfix流程或者下一个版本排期进行修复

结合ODC理论来说,我们可以在生产事件分析时采用对应的八个属性来做分析。

在分析生产事件产生的整个过程的阶段时,可应用的三个属性为Activity、Trigger、Impact

Activity:就是当生产事件发生时的处理步骤。比如部署数据库,应用发布等。 Trigger:描述了暴露缺陷时存在的环境或者条件。针对不同的 Activity,会对应有不同的 Trigger。 Impact:是指事件可能造成的影响,包括资金影响、用户影响、声誉影响等。

当对生产事件进行全面的复盘分析以后,基本可以定位在代码或者流程的某个地方进行完善,对于修改部分的分类有利于以后的流程改进和代码质量改善,此处可应用接下来的五个属性:Target、Type、Qualifier、Source、Age

Target:将要在哪里改正错误,例如:需求分析阶段、编码阶段、测试阶段、发布阶段 等等。 Type:表示所进行的实际修正的种类,比如算法,接口,初始化等等。针对不同的 Target,也会定义不同的 Type。 Qualifier:指明了所进行的修复应归于缺失,错误或者还是外来的代码或者信息。 Source:指明了发现的缺陷的来源,是出现在内部代码编写中,重用自一个程序库中,从一个平台转移到另一个平台上的,或者是外包一个软件销售商的。

Age:确定这个缺陷是新代码还是旧代码,或者是重写的代码。

ODC分析案例

比如在某一个金融系统中,出现了A账户的钱出现在B账户中,上线后用户爆出故障后,紧急处理,原因就是开发人在使用多线程时,将多例使用成单例,导致系统在高并发进出现了串数据的现象,导致系统在处理时放错款,将A的钱放到B的账户中去了。

用ODC的理论来分析一下上述的事件。

Activity:上线后用户进行转存帐的操作

Trigger:大于500个用户高并发的同时使用转存帐的操作

Impact: - 资金影响:用户A的账户钱数目会减少,公司需要进行赔付 - 用户影响:用户对此金融系统易产生不安全感 - 声誉影响:金融系统出现账务错误是影响面很坏的事件,严重的时候甚至可能受到银监会的处罚

通过对代码的分析,知道是在开发人员使用多线程时,将多例使用成单例,所以出现的在高并发情况下会有串数据的现象。

后续的修复措施可以总结为:

Target:需要在代码设计阶段针对这种会有多用户并发的业务场景中,明确在编码过程中需要用多例的方式。

Type:实际修正的种类为多线程的实现。

Qualifier:所进行的修复应归于代码错误。

Source:发现的缺陷的来源是出现在内部代码编写中。

Age:确定这个缺陷是新代码。

同时分析出来在编码中,虽然使用单例能节省资源,降低系统的占用率,但这种情况并不合适目前的系统。而此中情况在测试过程中并不一定能测试出来,这种出现的机率不定,必须在数据高并发时才有可能出现。

CC说:可以设想一下,如果在一段时间以内,对多个缺陷进行Target种类的分析,代码设计阶段占比较多的情况下,就需要对研发过程中的代码设计阶段进行很好的改善以此来提高之后的研发过程。


版权声明:本文出自51Testing原创,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 软件测试是软件生存周期中必不可少的环节,软件的典型生存周期可以用下图来形容:软件测试的目的是尽可能早的发现软件缺陷并确保其得以修复,因此软件测试是提高软件质量的重要手段,大量的经验实践证明,软件测试越早参与到软件开发过程中,开发出来的软件质量相对越高,时间和物力也越经济。根据软件工程的基本理论,多模块程序的测试共包括以下4个层次:各阶段测试的具体内容会在以后章节具体介绍,下面介绍一下软件测试的经典技术。软件测试的经典技术分为黑盒测试和白盒测试技术。其中黑盒测试技术忽略程序内部结构,看不到程序的代码细节,只针对程序的功能进行测试,黑盒测试的方法有:具体方法会在以后章节中具体介绍,敬请期待。说完黑...
            11 11 2768
            分享
          • 一、安全测试(1)SQL注入(比如登陆页面)(2)XSS跨网站脚本攻击:程序或数据库没有对一些特殊字符进行过滤或处理,导致用户所输入的一些破坏性的脚本语句能够直接写进数据库中,浏览器会直接执行这些脚本语句,破坏网站的正常显示,或网站用户的信息被盗,构造脚本语句时,要保证脚本的完整性。  document.write("abc")   <script>alter("abc")</script>(3)URL地址后面随便输入一些符号,并尽量是动态参数靠后(4)验证码更新问题(5)现在的Web应用系统基本采用先注册,后登陆的方式。因此,必...
            0 0 872
            分享
          •   分布式搜索分析,即ES。在之前的文章《掌握2个小工具,轻松解决大数据/数据库测试!》中,笔者介绍了elasticsearch-head和elasticsearch-sql两个工具,前者具有可视化、操作简单、能够完成es基本管理等特点,后者能够直接将一些基本mysql查询语句翻译为es语句进行查询,两者各具特色。  但随着对es的了解不断深入,发现了一款新的比较好用的es工具——cerebro。本文将从对比的角度出发,介绍cerebro的基本功能和用法,以及与elasticsearch-head和elasticsearch-sql对比,各自的优缺点。  cerebro介绍  安装方式  ce...
            0 0 1144
            分享
          •   测试工程师这个岗位对于有些人来说,可能月薪过万很容易,可对于有些人来说,仿佛已经达到瓶颈,任凭工作再卖力每月也只是四五千的薪资,月入过万对于这些人来说就是可望不可即,那么这些人怎么才能冲破瓶颈,拿到满意的薪资呢?这篇文章就为大家解答一下。  其实对于一个技术岗位而言,最快的晋升方法就是提升我们的技术等级,下面小编就根据不同的技术等级为大家罗列出薪资,从事相关领域的小伙伴可以自行代入,这里的薪资参照区间以西安为主。  手工测试工程师,(月薪8k左右)  主要技能:测试分析+用例设计+测试执行  在测试行业,手工测试属于初级阶段,类似于游戏王者荣耀里面的青铜段位,一般这个段位基本上都是刚接手游...
            0 0 1343
            分享
          •   Pytest简介  Pytest is a mature full-featured Python testing tool that helps you write better programs.The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries.  通过官方网站介绍我们可以了解到,pytest是一个非常成熟的全功能的python测试框架,主要有以...
            0 0 1268
            分享
      • 51testing软件测试圈微信