首页 > 其他分享 >软件测试/人工智能|使用ChatGPT帮我们查找bug

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

时间:2023-11-23 17:33:37浏览次数:38  
标签:代码 list 列表 range ChatGPT bug 软件测试

简介

作为一个程序员,发现自己写的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)

# 打印列表的最后一个元素,索引为 -1
print(list_a[-1])
  • 修改列表创建方式:
# 使用 range 函数创建列表,包含 1 到 4 的元素
list_a = list(range(1, 5))

# 打印列表的第四个元素,索引为 3
print(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发现代码中的执行问题,功能未实现以及一些不符合语法规范的问题,希望本文能够帮到大家。

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

标签:代码,list,列表,range,ChatGPT,bug,软件测试
From: https://www.cnblogs.com/hogwarts/p/17852093.html

相关文章

  • 软件测试/人工智能|如何使用ChatGPT帮我们写自动化测试脚本
    简介当今软件开发中,自动化测试脚本的编写是确保软件质量和稳定性的重要步骤。随着人工智能和自然语言处理技术的进步,像ChatGPT这样的语言模型已经成为编写自动化测试脚本的有力工具。ChatGPT可以根据给定的指令和条件生成代码,简化了测试流程并提高了效率。演练示例假设我们有......
  • 全新Self-RAG框架亮相,自适应检索增强助力超越ChatGPT与Llama2,提升事实性与引用准确性
    全新Self-RAG框架亮相,自适应检索增强助力超越ChatGPT与Llama2,提升事实性与引用准确性1.基本思想大型语言模型(LLMs)具有出色的能力,但由于完全依赖其内部的参数化知识,它们经常产生包含事实错误的回答,尤其在长尾知识中。为了解决这一问题,之前的研究人员提出了检索增强生成(RAG),它通......
  • 使用EF8在Core8中出现的奇葩bug
    1.add-migrationaddtable 一切正常  2.在update-database-verbose出现奇葩bug System.Globalization.CultureNotFoundException:Onlytheinvariantcultureissupportedinglobalization-invariantmode.Seehttps://aka.ms/GlobalizationInvariantModeformore......
  • nanomq clion 远程debug尝试
    很简单因为nanomq是基于cmake开发的对于clion来说基于debug就比较方便了,同时因为nanomq相关依赖都是通过模块的,还是比较方便的,以下是一个简单的debug测试环境准备基于clion的remotesshclone代码 gitclonehttps://github.com/emqx/nanomq.gitcdna......
  • Flask-debug模式
    不开debug模式的问题修改源代码需要重启程序才会生效程序出错没有错误的详细信息,不利于排查分析开启debug模式 终端执行:pythonapp.py  ......
  • pycharm中debug布局
    由于一直忘记,这里做个笔记吧。为了方便调试代码,如下布局比较方便实用。左侧为调试区,右侧是变量区。成为上面这种格式需要三步:1右键选择layout->restoredefaultlayout得到如下2把从consolt鼠标拖到左下角得到如下3右击frame->layout->去掉frame对号选择......
  • Xdebug延长调试时间
    因为我在phpstorm用xdebug调试时,没过多久就断掉然后出现500服务器错误的现象解决办法1.打开apache的配置文件,在apache\conf\httpd.conf里修改找到这一行并且把前面的注释去掉Includeconf/extra/httpd-default.conf添加这一行Includeconf/extra/httpd-fcgid.conf 2.在apac......
  • bug未解之谜
    import{defineStore}from'pinia'import{ref}from'vue'exportconstempStore=defineStore( 'big-stustore', ()=>{  //声明数据state-count  constempId=ref(100)  //声明操作数据的方法action(普通函数)  //cons......
  • ChatGPT的未来
    ChatGPT的未来发展前景非常广阔。以下是一些可能的趋势和发展方向:更加智能化:未来的ChatGPT可能会拥有更强大的自然语言理解和生成能力,能够更好地理解和处理人类语言,并生成更加准确和流畅的文本。应用范围更广:除了现有的应用场景,如客户服务、虚拟助手、情感分析等,未来的ChatGPT可能......
  • 软件测试/人工智能|如何利用人工智能来帮助我们找bug
    简介在软件开发中,Bug是难免的。然而,GitHubCopilot(GitHub提供的人工智能编程助手)已经成为了开发者的强力工具。它不仅能够加速开发,还能帮助找出代码中的Bug。本文我们就来看看它如何帮助我们轻松解决Bug。示例问题描述:假设我们有一个Python函数,用于计算两个数的乘积。......