• 0
  • 0
分享
  • 浅谈缺陷和软件模块的关联性分析——软件测试圈
  • 曼倩诙谐 2021-07-01 10:11:27 字数 1459 阅读 1654 收藏 0

  软件开发过程中贯穿着缺陷的引入、发现、修复和关闭的过程,包含较多缺陷的软件通常都被认为是低质量的,但是软件测试并不能找出软件中存在的所有缺陷。因此对于缺陷的研究及分析能够更好地预防缺陷的引入,对软件的正常运行和软件质量改进具有重要的意义。

  缺陷和模块属性的关联性分析是软件过程度量的一种方法,在实际软件开发过程中,我们发现缺陷与其所在的模块有着密切的联系,因此本文根据缺陷数量以及其所在模块属性进行缺陷分析,多维度深入地分析缺陷,从而提供更全面的缺陷分析。

  一、软件缺陷属性

  缺陷属性可为两类,一类为软件缺陷的常规属性,如缺陷类型、缺陷发现阶段、缺陷严重程度、缺陷来源等。一类为与缺陷相关的软件模块属性,如表1所示。

2-1.png

表1 模块属性

  二、缺陷分析

  缺陷分析本质上是对缺陷中包含的信息项进行收集,汇总,分类之后使用统计方法得出分析结果。

  本文给出了基于缺陷和软件模块关联性分析,它根据缺陷以及其所在模块属性进行缺陷分析,多维度深入地分析缺陷,从而提供更全面的缺陷分析,例如缺陷数量与模块复杂度关系分析、缺陷数量与模块扇入/扇出数关系分析、缺陷数量与模块参数数量的关系分析。

  1、缺陷数量与模块复杂度分析

  随着软件规模的增加,软件的复杂度也在逐步攀升,人们意识到缺陷数目不仅与规模有关,还与软件的复杂度有关,其中最著名的是McCabe复杂度量元。假设某项目有如下数据,表2为缺陷数与模块复杂度分析的一个例子,拟合曲线如图1所示。

2-2.png

表2 缺陷数与模块复杂度

2-3.png

图1 缺陷数量与模块复杂度分析图

  图1为不同模块所对应的McCabe复杂度和缺陷数,可以看到随着模块复杂度的增大,缺陷数量也随之增长,模块复杂度对缺陷数量有着较为显著的影响,即通常复杂度高的模块会引起更多的缺陷数。因此缺陷数量曲线一定程度反映了软件开发过程中缺陷数量随模块复杂度变化的趋势。软件开发人员可以依据该曲线,采取措施降低模块的复杂度,以提高软件质量。

  2、缺陷数量与模块参数分析

  软件开发中,由于不同模块功能不同,因此模块中所含参量数目也不相同,功能复杂的模块往往需要定义更多的参量,参量在赋值与传递过程中会引起程序错误,从而产生软件缺陷。假设某项目有如下数据,表3为缺陷数量与模块参数数量分析的一个例子,拟合曲线如图2所示。

2-4.png

表3 缺陷数与模块参数

2-5.png

图2缺陷数与模块参数分析图

  3、缺陷数量与模块扇入扇出系数分析

  模块的扇入是指有多少个上级模块调用它,扇入越大,表示该模块被更多的上级模块共享,模块的复用程序高。模块的扇出是指模块的直属下层模块的个数,扇出过大意味着管理模块过于复杂,需要控制和协调过多的下级。缺陷数与模块扇入、扇出系数有着密切的关系,即模块扇入、扇出系数越高,模块影响范围也越大。假设某项目有如下数据,表4为缺陷数量与模块参数数量分析的一个例子,拟合曲线如图3所示。

2-6.png

表4缺陷数与模块扇入扇出

2-7.png

图3 缺陷数与模块扇入扇出系数分析图

  如图3所示,我们发现缺陷数与模块扇入、扇出系数有着密切的关系,即模块扇入、扇出系数越高,模块影响范围也越大。因此在软件开发过程中,如果某个高扇入系数模块缺陷较多,我们应该优先将其解决。

  在实际软件开发过程中,我们也发现软件缺陷存在着二八定律,即百分之八十的缺陷来自百分之二十的模块中,按照本文给出的缺陷分析方法如果能找到产生大量缺陷的模块,并对其进行分析改进,则可以大大提高软件开发以及测试的效率,从而使软件产品质量得到很大提高。



作者:姚璇   

来源:51Testing软件测试网原创

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 用postman进行接口测试的时候,我们经常会把接口地址的全路径填在url地址栏当中。这种做法不太好的地方在于,当你需要从一个测试环境切换到另一测试环境时, 需要把所有的url全部修改一遍,当你有 500个用例都需要修改,直接累瘫。那在postman当中,如何更方便的修改测试环境呢?其实只需要两步。第一步,点击 postman 左侧工具栏的 environment, 点击 + 号添加新的测试环境。 一个测试环境当中可以创建很多环境变量,有了环境变量,在请求数据中就可以引用这些变量。在这里,我创建一个了一个开发环境,一个线上环境,里面都有一个叫 baseUrl 的变量。第二步,在请求发送界面,点...
            0 0 2795
            分享
          • 最近在做移动端报表的测试,根据实际测下来的情况阿常先总结一版测试流程和测试方案(这是初版 v1.0,后续在此基础上做更新迭代)。由于不同的报表需求具有定制化差异,阿常这里仅针对自己测过的报表做测试经验归纳总结,可能并不适用于大家所负责的报表测试需求,大家可根据需要选择性阅读此文。一、测试流程序节点名称节点说明1    分析业务和需求    熟悉业务流程和业务规则:指标项的数据来源、取数口径、计算公式;源数据的更新(包括增、删、改或状态的变化),对报表中指标项的计算产生的影响。   2    制定测试方案和计划 &n...
            0 0 922
            分享
          •   谷歌云今日发文宣布,原百度副总裁尹世明加入谷歌云,担任大中华区总裁。  谷歌云方面称,随着越来越多的企业借助谷歌云开放、安全、集成的技术栈拓展全球业务,尹世明将带领大中华区业务发展团队,通过市场战略,帮助用户和合作伙伴充分利用云和 AI 的能力,在国际市场上取得成功。  公开资料显示,加入谷歌云前,尹世明曾担任微盟首席运营官、百度集团副总裁等职务,在百度智能云业务的建设中发挥重要作用。他的职业生涯还包括在 Apple 和 SAP 担任领导职务,成功推动其在华东和华中地区的业务增长。  这是谷歌云中国近六年来的首次高层变动。上一任谷歌云大中华区总裁为李孔源(Kathy Lee),多位消息人士...
            0 0 76
            分享
          •   前言  UI测试是测试应用中的各种交互是否达到了实现的效果。常用的UI测试框架有Espresso和UIAutomator。  今天给大家分享5个可能不曾听过的新自动化测试框架。  1.Kaspresso  Kaspresso是一个基于Espresso和UIAutomator构建的测试自动化框架。并针对Espresso的一些已知缺点进行优化:  ·解决flakiness问题;  · 解决Espresso不支持adb问题;  · 优化代码可读性;  以如下示例说明代码可读性:  Espresso测试示例写法:  @Testfunlogout(){   onView(with...
            0 0 2165
            分享
          •   对于经常接触代码的人来说,git以及github并不陌生。但是对于刚接触git环境的人,尤其是对于测试人来说,使用起来还是有一定难度的。  我想大部人对于这块的疑问有可能存在下面的几点:  1.没有全局观,不理解每个工具实现的功能,也就是不理解原理,只知道直接照着网上的教程走,以至于出现问题,不知道如何解决。  2.有的资料是直接命令,有的是通过工具,也就是实现方式不唯一,不确定自己到底想要以什么方式实现。  3.不知道注意的点。缺少技巧,比如某个命令执行了,但是就是不生效,原因有可能是一类问题。  针对上面的问题,逐一简单介绍一下。  每个工具职责  pycharm  pycharm是p...
            15 15 2025
            分享
      • 51testing软件测试圈微信