写点什么

软件测试 / 测试开发丨基于人工智能的代码分析与 Bug 检测实战

作者:测试人
  • 2023-10-12
    北京
  • 本文字数:1274 字

    阅读完需:约 4 分钟

免费领取:测试资料+测试用例+简历模板+测试文档

简介

在人工智能还未盛行的时候,检测 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]
复制代码

没有实现需求

通过 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 返回的信息,精准的定位到了问题。

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

2.给到提示词:

请指出以上代码不符合规范的地方,并予以修改的信息:
复制代码

3.根据 Copilot 的智能提示展示后面的代码内容。

# 请指出以上代码不符合规范的地方,并予以修改# 1. 函数名应该小写,且用下划线分隔
复制代码

4.但是这种类型的问题, Copilot 也有很多时候发现不了,或者给出的提示毫无价值。所以也不能完全依赖 Copilot 返回的结果内容。

总结

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

  1. 代码执行报错。

  2. 没有实现需求。

  3. 变量命名不规范。

发布于: 刚刚阅读数: 3
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨基于人工智能的代码分析与 Bug 检测实战_人工智能_测试人_InfoQ写作社区