ChatGPT与代码分析结合(二)

目录

一、利用人工智能自动找bug

应用场景与适用对象

常用工具

相关工具介绍

二、结对编程助手GitHub Copilot

环境准备

使用介绍

注意事项

相关快捷键

应用场景

三、利用ChatGPT生成自动化测试脚本

四、利用ChatGPT生成基于po的驱动数据测试框架

五、利用ChatGPT进行代码分析与bug检测

应用场景1 - 提升效率

应用场景2 - 发现各种类型的bug


一、利用人工智能自动找bug

在程序员编程的过程中,产生Bug是一件稀松平常的事情,以前在编码的过程中提前找出Bug,需要通过单元测试、CodeReview等各种方式。

当今,人工智能技术的发展给软件开发和测试带来了许多机会。利用人工智能技术,可以开发出自动化的 bug 检测工具,从而提高软件质量和可靠性。

除了Bug 检测,人工智能甚至还能根据需求说明,自动编写代码,这都是目前基于大语言模型的编程工具能做到的事情。

应用场景与适用对象

  • 通过文本生成需求,发现Bug
    • 对应工具:ChatGPT
  • 将需求(英语)翻译成代码,通过注释生成代码
    • codex + copilot + ide

常用工具

相关工具介绍

ChatGPT:通过提示词,让ChatGPT检查是否有bug。比如提示词:请帮我查找以下代码中的Bug,并添加注释信息

Codex:OpenAI Codex是由OpenAI开发的人工智能模型。它能解析自然语言并生成相应的代码。使用Github数十亿代码训练而成。该模型驱动了GitHub Copilot,一个为选定的IDE(如Visual Studio Code和Neovim)提供的编程自动补全工具。

Codex官方网站:https://openai.com/blog/openai-codex

GitHub Copilot:GitHub Copilot 是由 GitHub 和 OpenAI 共同开发的人工智能代码辅助工具,可以自动地生成高质量代码片段、上下文信息等。通过自然语言处理和机器学习技术,能够通过分析程序员编写的代码、注释和上下文信息,自动生成代码,减轻程序员的工作量,节省开发者的时间和精力。

GitHub Copilot 支持多种主流语言,包含:

  • Python
  • JavaScript
  • Go
  • TypeScript
  • 其他多种语言

同时也支持多种IDE工具:
    

二、结对编程助手GitHub Copilot

GitHub Copilot 是一款 AI 结对程序员,可帮助您更快、更少地编写代码。它从注释和代码中提取上下文,以立即建议单独的行和整个函数。GitHub Copilot 由 GitHub、OpenAI 和 Microsoft 开发的生成式 AI 模型提供支持。它可作为 Visual Studio Code、Visual Studio、Neovim 和 JetBrains 集成开发环境 (IDE) 套件的扩展。官网地址:https://github.com/features/copilot

环境准备

进入官网github-copilot注册信息。github-copilot 收费 10 美元一个月,需要先填写信用卡信息,但是可以免费试用 30 天,所以可以在 30 天到期前取消续费。

取消 github coilpot 订阅:这里显示 10 美元是下个月的扣费本月是没有费用产生的。点击右上角头像 -> settings -> billing and plans -> plans and usage 划到下处取消 github coilpot 的订阅。

使用介绍

PyCharm 右下方状态栏中,红圈表示 GitHub Copilot 的logo,表示开启 GitHub Copilot 插件。不论是编写代码中的注释,还是一句执行代码,或是一个代码块、一个函数,GitHub Copilot 都会随着你的输入过程,不断提供代码补全建议。

注意事项

  • GitHub Copilot 也可能猜错你打算写的代码,但只要你继续输入,它就会给出新的建议。
  • 对于任何给定的输入,GitHub Copilot 可能会提供多种建议。可以根据需求选择要使用的建议,也可以拒绝所有建议。
  • 用户可以启用或禁用 GitHub Copilot:单击 PyCharm 右下方状态栏中的状态图标选择启用或禁用 GitHub Copilot 的建议 。

相关快捷键

应用场景

1. 使用 Copilot 编写一个快速排序,比如输入相关注释以及开头

它会自动开始补全代码。灰色部分是它提示的代码,点击 tab后就可以接收它的建议了。

2. 合并两个列表,并且排序,输入注释与要求: 合并两个列表,并且排序。

根据提示的需求,一直按tab键,中间会自动产生注释以及实现的代码,以下所有的代码都是自动生成:

编写一个单元测试用例,测试是否实现,编写一个函数名为def test_merge_list():,其他使用自动补全,最终单元测试用例生成的结果为:

Copilot 的环境安装与使用都非常简单,可以把它当作一个在 IDE 中使用的ChatGPT。一些明确的代码逻辑,可以交给它完成。Copilot并非所有的输出都是正确的,在使用的过程中,需要适当进行纠错。

三、利用ChatGPT生成自动化测试脚本

自动化测试脚本可以模拟用户与应用程序的交互,例如点击按钮、输入数据、导航到不同的页面等等,以验证应用程序的正确性、性能和稳定性。

提示词:请帮我编写一个接口自动化测试脚本,要求使用 pytest + requests 。只需要对响应状态码完成断言即可
提示词:请帮我编写一个 Web 自动化测试脚本,要求使用 pytest + playwright。


提示词:请结合 harmcrest 优化断言。

  • 在使用 ChatGPT 编写自动化测试脚本的时候,提示词最好明确相关的技术栈,这样可以在生成的脚本基础之上做对应的修改。
  • 写清楚需求:在要求ChatGPT编写自动化测试脚本的时候,需要给它明确使用的技术栈,方便基于脚本做修改。
  • 将复杂的任务拆分为更简单的子任务/系统地测试变化:通过多次提问,进一步修正ChatGPT的回复,直到满足需求。

四、利用ChatGPT生成基于po的驱动数据测试框架

PO(PageObject)设计模式将某个页面的所有元素对象定位和对元素对象的操作封装成一个Page 类,并以页面为单位来写测试用例,实现页面对象和测试用例的分离。

数据驱动测试(DDT)是一种方法,其中在数据源的帮助下重复执行相同顺序的测试步骤,以便在验证步骤进行时驱动那些步骤的输入值和/或期望值。

无论是 PO 设计模式还是数据驱动测试,其实都是目前测试工程师在编写自动化测试框架中的常用技巧与设计模式。而以前复杂的设计模式与框架,可以利用ChatGPT轻松生成,只需要在其基础之上做适当的调优即可。

提示词:请示使用PO设计模式编写一个Web自动化测试脚本,要求使用到pytest测试框架和selenium web自动化框架。


提示词:现在用户名密码,需要使用数据驱动+参数化的方式传入,请修改你的 test_login 的代码。


提示词:测试数据要求放在一个yaml文件中,然后代码读取该yaml文件

五、利用ChatGPT进行代码分析与bug检测

应用场景1 - 提升效率

人工智能前,如何检测bug?

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

通过人工智能提升效率,辅助开发与测试发现更多的问题,降低成本和提高软件质量。

当前通过人工智能,如何检测bug?

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

应用场景2 - 发现各种类型的bug

  • 代码执行报错。  
# 错误代码
a = [1, 2, 3, 4]
print(a[5])

复制代码到ChatGPT聊天框,提示词:请找出以上代码的bug,先说明错误在哪并修复。

也可以根据 GitHub Copilot 的智能提示展示后面的代码内容。IDE工具中输入“# 请找出以上代码的bug,先说明错误在哪并修复” Copilot 能精准的定位到了问题并返回的信息。

  • 没有实现需求。
# 错误代码
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聊天框,提示词:# bubble_sort()是一段实现了冒泡排序算法的函数请找出缺陷,先提示问题是什么,然后再给出修改后的代码

也可以根据 GitHub Copilot 的智能提示展示后面的代码内容。IDE工具中输入“# ubble_sort()是一段实现了冒泡排序算法的函数请找出缺陷,先提示问题是什么,然后再给出修改后的代码” Copilot 能精准的定位到了问题并返回的信息。

  • 变量命名不规范。
# 输入不规范的代码
	def getAge():
    pass

提示词:请指出以上代码不符合规范的地方,并予以修改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值