基于人工智能的代码分析与 Bug 检测实战

发表于:2023-10-18 09:10

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:知乎

  简介
  在人工智能还未盛行的时候,检测 Bug 通常是通过以下几种方式完成:1.研发编写单元测试。2.代码扫描工具,SonarQube、Findbugs。3.测试人员进行集成测试。
  而现在其中的一部分工作,都可以通过人工智能提升效率,辅助开发与测试发现更多的问题,降低成本和提高软件质量。
  在本章节,可以先了解一下在代码层面,基于人工智能工具,可以帮助我们提升哪些效率。
  实践演练
  人工智能可以帮助我们发现各种类型的 Bug,包含:1.代码执行报错。2.没有实现需求。3.变量命名不规范。
  代码执行报错
  以下代码的逻辑非常简单,给定一段列表 a,列表 a 中有四个元素,要从列表 a 中找到索引为 5 的元素,很容易就会发现,这段代码一定是跑不通的。这种会执行报错的代码,Copilot 可以很容易帮我们定位到其中的问题。
  1.输入错误代码:
  a = [1, 2, 3, 4]
  print(a[5])
  2.给到提示词:
  请找出以上代码的Bug,先说明错误在哪并修复。
  3.根据 Copilot 的智能提示展示后面的代码内容。以下为 Copilot 返回的信息,精准的定位到了问题。
  # 请找出以上代码的Bug,先说明错误在哪并修复
  # 1. IndexError: list index out of range
  # 2. a[5] 为列表中的第6个元素,而列表中只有4个元素,所以会报错
  # 3. a[3] 为列表中的第4个元素,所以应该是a[3]
  # 请找出以上代码的Bug,先说明错误在哪并修复没有实现需求
  通过Copilot发现冒泡排序中的Bug。
  1.输入错误代码:
  def bubble_sort(list):
      for i in range(len(list)):
          for j in range(i+1,len(list)):
              if list[i] < list[j]:
                  list[i],list[j] = list[j],list[i]
      return list
  2.给到提示词:
  # bubble_sort()是一段实现了冒泡排序算法的函数请找出缺陷,先提示问题是什么,然后再给出修改后的代码3.根据 Copilot 的智能提示展示后面的代码内容。以下为 Copilot 返回的信息,精准的定位到了问题。
  变量命名不规范
  以下代码没有什么特别严重的问题,只是在变量名命名上面不符合 Python PEP8 的规范。但是 Copilot 偶尔也能发现这种命名不规范的问题。
  1.输入不规范的代码:
  def getAge():pass
  2.给到提示词:
  请指出以上代码不符合规范的地方,并予以修改的信息: 
  3.根据 Copilot 的智能提示展示后面的代码内容。
  # 请指出以上代码不符合规范的地方,并予以修改
  # 1. 函数名应该小写,且用下划线分隔
  4.但是这种类型的问题, Copilot 也有很多时候发现不了,或者给出的提示毫无价值。所以也不能完全依赖 Copilot 返回的结果内容。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号