写点什么

软件测试 / 人工智能|使用 ChatGPT 帮我们查找 bug

  • 2023-11-23
    北京
  • 本文字数:1354 字

    阅读完需:约 4 分钟

简介

作为一个程序员,发现自己写的 bug 其实不是一件容易的事情,我们会更容易发现别人的错误,对于自己代码里的错误会更难发现,这也是测试的必要性。通常,我们会有以下几种方式来检测发现代码中的 bug:


  • 研发编写单元测试。

  • 代码扫描,比如 sonarqube,findbugs。

  • 测试人员进行集成测试


现在有了人工智能工具,我们自然也可以使用人工智能工具来帮我们查找 bug,本文就来介绍一下使用 ChatGPT 来帮我们查找代码中的 bug。

演练示例

人工智能能够帮助我们发现各种类型的 bug,比如代码执行报错,需求未实现,变量命名不规范等问题,下面我们就来逐一举例说明。


  1. 代码执行报错


首先我们输入错误代码:


list_a = []for i in range(1, 5):    list_a.append(i)
print(list_a[5])
复制代码


然后我们给到 ChatGPT 提问:请找出以上代码的 Bug,先说明错误在哪并给出修复建议。


之后 ChatGPT 会输出回复,回复如下:


这段代码的 bug 在于它尝试打印列表 list_a 中索引为 5 的元素,但是 list_a 只有 4 个元素,所以索引 5 超出了列表的范围。修复建议是要么修改打印语句,要么修改列表创建的方式,以确保索引不会超出范围。


修复方式有两种:


  • 修改打印语句:


list_a = []for i in range(1, 5):    list_a.append(i)
# 打印列表的最后一个元素,索引为 -1print(list_a[-1])
复制代码


  • 修改列表创建方式:


# 使用 range 函数创建列表,包含 1 到 4 的元素list_a = list(range(1, 5))
# 打印列表的第四个元素,索引为 3print(list_a[3])
复制代码


  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
复制代码


然后我们向 ChatGPT 提问,上述代码是用于实现冒泡排序的,请先找到代码中的问题,然后给出修改意见


ChatGPT 给出的修改意见如下:


在这段代码中,冒泡排序通常是将较大的元素向右移动,但你的代码中,如果 list[i] 小于 list[j],则交换它们。这会导致排序结果是从大到小而不是从小到大。


要修复这个问题,需要修改判断条件,将不等号的方向反过来,以便在发现 list[i] 大于list[j]时进行交换。


修正后的代码应该是这样的:


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. 变量命名不规范


有的时候我们的代码没有功能上的问题,但是不符合 python pep8 的规范,这样的问题我们也可以使用 ChatGPT 来查找并提出修改意见。


首先,我们先输入不规范的代码,如下:


def getNumber():    pass
复制代码


然后我们向 ChatGPT 提问,请指出以上代码不符合规范的地方,并给出修改的信息


ChatGPT 的回复如下:


函数名应该小写,且用下划线分隔


注:ChatGPT 并不是每次都能发现这样的问题,因为这样的问题并没有影响功能的实现。

总结

本文主要介绍了使用 ChatGPT 发现代码中的 bug,我们可以借助 ChatGPT 发现代码中的执行问题,功能未实现以及一些不符合语法规范的问题,希望本文能够帮到大家。


获取更多技术资料,请点击!



用户头像

社区:ceshiren.com 微信:ceshiren2021 2019-10-23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
软件测试/人工智能|使用ChatGPT帮我们查找bug_霍格沃兹测试开发学社_InfoQ写作社区