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

举报
霍格沃兹测试开发 发表于 2024/08/05 17:24:24 2024/08/05
【摘要】 简介在人工智能还未盛行的时候,检测 Bug 通常是通过以下几种方式完成:研发编写单元测试。代码扫描工具,SonarQube、findbugs。测试人员进行集成测试。而现在其中的一部分工作,都可以通过人工智能提升效率,辅助开发与测试发现更多的问题,降低成本和提高软件质量。对应流程相关工具单元测试Copilot+Codex集成测试通过 ChatGPT 或者辅助工具,例如 AutoGPT 开发脚...

简介

在人工智能还未盛行的时候,检测 Bug 通常是通过以下几种方式完成:

  1. 研发编写单元测试。
  2. 代码扫描工具,SonarQube、findbugs。
  3. 测试人员进行集成测试。

而现在其中的一部分工作,都可以通过人工智能提升效率,辅助开发与测试发现更多的问题,降低成本和提高软件质量。

对应流程 相关工具
单元测试 Copilot+Codex
集成测试 通过 ChatGPT 或者辅助工具,例如 AutoGPT 开发脚本、编写测试用例

在本章节,可以先了解一下在代码层面,基于人工智能工具,可以帮助我们提升哪些效率。

实践演练

人工智能可以帮助我们发现各种类型的 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]

没有实现需求

以下代码原本是一段冒泡排序的代码,但是冒泡排序通常要求:从小到大排序,但是这段代码是从大到小排序。接下来,可以通过 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
  1. 给到提示词:# bubble_sort()是一段实现了冒泡排序算法的函数请找出缺陷,先提示在问题是什么,然后再给出修改后的代码

  2. 根据 copilot 的智能提示展示后面的代码内容。以下为 copilot 返回的信息,精准的定位到了问题。

# bubble_sort()是一段实现了冒泡排序算法的函数请找出缺陷,先提示在问题是什么,然后再给出修改后的代码
# 问题:冒泡排序是从小到大排序,但是这段代码是从大到小排序
# 修改后的代码:
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

变量命名不规范

以下代码没有什么特别严重的问题,只是在变量名命名上面不符合 Python PEP8 的规范。但是 copilot 偶尔也能发现这种命名不规范的问题:

  1. 输入不规范的代码:

def getAge():
    pass
  1. 给到提示词:请指出以上代码不符合规范的地方,并予以修改

  2. 根据 copilot 的智能提示展示后面的代码内容。以下为 copilot 返回的信息:

# 请指出以上代码不符合规范的地方,并予以修改
# 1. 函数名应该小写,且用下划线分隔
  1. 但是这种类型的问题, copilot 也有很多时候发现不了,或者给出的提示毫无价值。所以也不能完全依赖 copilot 返回的结果内容。

总结

在这个章节,主要学习了在代码层面,基于人工智能工具,如何帮助我们查找Bug的技巧。其中Bug的类型也分为多种,主要包含以下几种:

  1. 代码执行报错。
  2. 没有实现需求。
  3. 变量命名不规范。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。