首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在测试之前,机器学习如何帮助预测应用程序中容易出现缺陷的模块?

在测试之前,机器学习如何帮助预测应用程序中容易出现缺陷的模块?
EN

Stack Exchange QA用户
提问于 2017-06-08 13:11:12
回答 2查看 1.1K关注 0票数 4

我在互联网上看到,使用静态代码分析数据,我们可以预测应用程序中哪些模块容易出现缺陷。当我试图想象数据集,它是很难适应它作为二维。因为每个构建可以有许多模块,对于每个模块,我们将有源代码度量和缺陷计数。我的怀疑是

  1. 我们能不能建立一个有意义的二维数据集来进行分析(如回归)和预测?
  2. 这仅仅是一种理论或机器学习被实际用于这一目的吗?如果是,目前正在使用哪些技术/用例?
  3. 在缺陷预测分析中需要考虑的其他实际因素是什么,我们能在现实中收集它们吗?

如果你能指出这方面的一些详细文章,这将是非常有帮助的。

PS:我在这里发布这篇文章,是因为在测试方面有很好的专业知识的人只能建议在哪里寻找缺陷。

EN

回答 2

Stack Exchange QA用户

发布于 2017-06-08 13:31:07

在左垂直的y轴上有一个有缺陷数的图

然后,我将有关于相关因素的行,例如代码行数、语句数、行长、变量数、全局变量等。您还可以有一个公式,将它们相乘到一起,给出一行。

我不会尝试做多维模型,除非你有所需的经验和知识,并且已经用2d模型完成了这个工作。3d的细节很重要,不适合于堆栈交换问题。

票数 1
EN

Stack Exchange QA用户

发布于 2017-06-08 13:32:39

关于易出错模块检测

的思考

一行“易缺陷模块”分析可以使用代码复杂性分析将模块分类为“容易出错”或“不容易出错”。这将基于这样一个事实,即更复杂的代码往往有更多潜在的bug。

在代码复杂性分析中,有几个度量标准可以用作机器学习算法的参数:

  • 圈码复杂度 (我的代码的“圈复杂度”意味着什么?):圈复杂度是一种软件度量(度量),它是对程序源代码中线性无关路径数量的定量度量。
  • 维修性指数可维护性索引计算0到100之间的索引值,该索引值表示代码维护的相对容易程度。
  • 代码行一个非常高的计数可能表示一个类型或方法试图做太多的工作,应该分开。它还可能表示该类型或方法可能难以维护。

现有项目

根据谷歌的Bug预测的文章,他们成功地使用了基于模块更改次数的修改后的"Rahman“算法:

我们通过创建一个连接到我们的源代码控制系统的程序实现了Rahman算法,并提取了所有带有bug的更改。它查看每个bug编号,并与bug跟踪数据库验证它是否真的是一个bug,并过滤掉其他所有内容,例如功能请求。然后,它将查看这些更改中出现的所有文件,并过滤掉那些已被删除且不再处于首位的文件。对于每个文件,计算了它所进行的错误修复更改的数量,并输出了排在前10%的文件。

本文为bugspotshotfiles项目提供了灵感。

还有FixCache项目 (未维护)。

还有桅杆组 (机器学习技术用于源代码文本分析),它发布了几种用于源代码分析的机器学习模型和算法。我没有看到一些特定的东西来检测源代码中的错误倾向,但是有一些有趣的和相关的算法。

关于这一主题的更多文章:

票数 1
EN
页面原文内容由Stack Exchange QA提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://sqa.stackexchange.com/questions/27686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档