目录
一、利用人工智能自动找bug
应用场景与适用对象
常用工具
相关工具介绍
二、结对编程助手GitHub Copilot
环境准备
使用介绍
注意事项
相关快捷键
应用场景
三、利用ChatGPT生成自动化测试脚本
四、利用ChatGPT生成基于po的驱动数据测试框架
五、利用ChatGPT进行代码分析与bug检测
应用场景1 - 提升效率
应用场景2 - 发现各种类型的bug
在程序员编程的过程中,产生Bug是一件稀松平常的事情,以前在编码的过程中提前找出Bug,需要通过单元测试、CodeReview等各种方式。
当今,人工智能技术的发展给软件开发和测试带来了许多机会。利用人工智能技术,可以开发出自动化的 bug 检测工具,从而提高软件质量和可靠性。
除了Bug 检测,人工智能甚至还能根据需求说明,自动编写代码,这都是目前基于大语言模型的编程工具能做到的事情。
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 支持多种主流语言,包含:
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 都会随着你的输入过程,不断提供代码补全建议。
1. 使用 Copilot 编写一个快速排序,比如输入相关注释以及开头
它会自动开始补全代码。灰色部分是它提示的代码,点击 tab后就可以接收它的建议了。
2. 合并两个列表,并且排序,输入注释与要求: 合并两个列表,并且排序。
根据提示的需求,一直按tab键,中间会自动产生注释以及实现的代码,以下所有的代码都是自动生成:
编写一个单元测试用例,测试是否实现,编写一个函数名为def test_merge_list():
,其他使用自动补全,最终单元测试用例生成的结果为:
Copilot 的环境安装与使用都非常简单,可以把它当作一个在 IDE 中使用的ChatGPT。一些明确的代码逻辑,可以交给它完成。Copilot并非所有的输出都是正确的,在使用的过程中,需要适当进行纠错。
自动化测试脚本可以模拟用户与应用程序的交互,例如点击按钮、输入数据、导航到不同的页面等等,以验证应用程序的正确性、性能和稳定性。
提示词:请帮我编写一个接口自动化测试脚本,要求使用 pytest + requests 。只需要对响应状态码完成断言即可
提示词:请帮我编写一个 Web 自动化测试脚本,要求使用 pytest + playwright。
PO(PageObject)设计模式将某个页面的所有元素对象定位和对元素对象的操作封装成一个Page 类,并以页面为单位来写测试用例,实现页面对象和测试用例的分离。
数据驱动测试(DDT)是一种方法,其中在数据源的帮助下重复执行相同顺序的测试步骤,以便在验证步骤进行时驱动那些步骤的输入值和/或期望值。
无论是 PO 设计模式还是数据驱动测试,其实都是目前测试工程师在编写自动化测试框架中的常用技巧与设计模式。而以前复杂的设计模式与框架,可以利用ChatGPT轻松生成,只需要在其基础之上做适当的调优即可。
提示词:请示使用PO设计模式编写一个Web自动化测试脚本,要求使用到pytest测试框架和selenium web自动化框架。
提示词:现在用户名密码,需要使用数据驱动+参数化的方式传入,请修改你的 test_login 的代码。
提示词:测试数据要求放在一个yaml文件中,然后代码读取该yaml文件
人工智能前,如何检测bug?
通过人工智能提升效率,辅助开发与测试发现更多的问题,降低成本和提高软件质量。
当前通过人工智能,如何检测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
提示词:请指出以上代码不符合规范的地方,并予以修改