用ChatGPT生成Lua单体测试代码

1.5k 词

Excerpt

0x01 前言OpenAI的ChatGPT智能AI引擎,在全世界范围流行,各种ChatGPT应用场景也遍地开花。 问题回答、文章续写、代码审计、自动生成单体测试、木马生成等等,都可以实现。 用户方面也有很多相关活动,有媒体号拉…


OpenAI的ChatGPT智能AI引擎,在全世界范围流行,各种ChatGPT应用场景也遍地开花。 问题回答、文章续写、代码审计、自动生成单体测试、木马生成等等,都可以实现。

用户方面也有很多相关活动,有媒体号拉群推广技术、有中间商提供相关服务、内容代理转发机器人、相关组织加紧封号,技术人员先行进入战场,然后是自媒体流量段子飞起。

简单测试一下,ChatGPT在软件开发方面的功能是否好用,就用一个自动生成单元测试代码作为例子。文章最后,提供一些好用的ChatGPT插件,覆盖了日常最常用的ChatGPT的使用场景。

0x02 ChatGPT自动生成代码单元测试用例

源代码,先写一个简单的Lua函数代码,太复杂的理解的也慢,如下:

function ChatGPT(num1, num2)
local ret = num1 + num2
return ret
end
ChatGPT(5,7)

然后,查看ChatGPT返回的单元测试代码,如下:

图-1 ChatGPT生成的Lua单元测试的代码(两个用例)

看到了ChatGPT返回的两个测试用例。

测试用例1

function test_ChatGPT()
assert(ChatGPT(1, 2) == 3)
end

测试用例2

function test_ChatGPT()
assert(ChatGPT(-2, 3) == 1)
end

把单体测试代码复制源代码中,等待执行。

图-2 测试执行Lua单元测试代码

正常执行代码,显示空内容。

图-3 返回结果为空

0x03 改造AI生成单元测试代码

ChatGPT返回的Lua单体测度代码,都是断言(Assert)正确的结果,手段把生成的代码改了,生成的是不出断言出错的,改成会造成代码断言出错的。

改之前,代码:

function test_ChatGPT()
assert(ChatGPT(1, 2) == 3)
end

改之后,代码:

function test_ChatGPT()
assert(ChatGPT(1, 2) == 5)
end

故意把断言(assert)的条件改错,出现下面的执行结果。

图-4 单体断言出错

正常用ChatGPT自动生成的函数单元测试代码是没有问题的, 用例都是断言(Assert)对的用例,“异常系”的用例,需要自己改造测试代码,从这个角度看,ChatGPT生成单元测试代码,还是可以提高工作效率的。

0x04 好用有的ChatGPT插件汇总

最后,推荐几个常用插件, 可以让用户在多种情况下,使用ChatGPT的功能,这三个插件都有一定的用户基数, 用起来还是可以的,Obsidian笔记社区本身支持也很强大。ChatGPT最开始是从日文站看到的。

Chrome浏览器插件:ChatGPT Everywhere

图-5 浏览器插件

这是一个浏览器插件,可以在插件市场中下载,对不同的浏览器找对应的版本。

VSCode插件:ChatGPT

图-6 VSCode插件

VSCode的插件,本文生成单元测试代码就靠这个插件。

Obisidian笔记插件:Text Generator

图-7 Obsidian笔记插件

用Obsidian笔记做知识管理和工作流的可以安装这个插件使用ChatGPT。以上这三个插件,是比较常用的,覆盖了基本使用场景,不用切换到浏览器下使用。

0x05 总结

以上插件使用,遇到什么相关问题,请留言,提供相关支持。