分享好友 最新资讯首页 最新资讯分类 切换频道
如何借助AI进行测试代码code review
2024-12-27 18:53

成熟测试团队会产出大量自动化代码,因测试人员的经验和习惯原因,代码质量可能参差不齐,通常需要依靠专家code review(CR)来确保产出的测试代码质量,借助大模型进行CR已经成为一种趋势,可以提高CR效率和有效性。

大模型CR优势

  • 自动化检查:利用大模型对代码进行自动化检查,可以快速识别出语法错误、代码风格问题、潜在安全漏洞等。这种自动化过程减少了人工审查的工作量,使开发者能够更加专注于代码的逻辑和功能问题。

  • 减少重复工作:传统的人工CR往往会耗费大量时间在识别低级错误上,而大模型可以有效过滤这些错误,从而让审查者能够关注更有价值的逻辑和设计问题。

  • 快速反馈:结合Gitlab CI等工具,大模型能够在代码提交后立即执行CR,并提供即时反馈,大大缩短了反馈周期。

简单来讲,可发起Merge Request(MR)请求的时候使用Gitlab CI触发该任务,借助中间平台,调用大模型并给到反馈,信息回到Gitlab。

给到的提示词例如

以下代码是GitLab代码补丁。请以测试专家的角度,从自动化测试用例设计;代码的实现;可改进的领域;这几个角度,给出详细的例子进行解释,尽量少离题和耍幽默。

这种模式,在CR具体场景内仍然会存在一些问题

  • 只针对表层问题,无法深度分析:拿UI自动化举例,通用大模型无法识别公共方法和业务相关的方法,这样给CR的深度会造成很大限制

  • 一致性检查:代码风格命名,测试数据的管理方式,case写法有较多的个性化的内容因团队而异,没有业界的统一标准,这方面AI难免会有误判

  • 修复建议噪音高:在review质量不够100%有效情况下,放入MR 的comments会非常困难,由谁去Resolve 提出的修改建议也是一个难题

借助RAG加强CR

改进思路

  1. 通过构造合适的prompt将约束条件,构建知识库系统来做规范管理,提供更加丰富和标准的信息,这里就要用到前序文章中对RAG的论述

  2. Review结果适合通过企信(钉钉)消息发出,而不是直接在gitlab评论上,CR建议只供参考,具体的Comments动作和Resolve过程由实际的Review人员来进行

现有业界的RAG支撑系统很多,这里我们选择的是FastGPT的平台,其他还有Dify,QAnything等,对CR场景没有太大区别,这里以fastGPT作为举例说明如何形成CR思路

搭建步骤

初始化CR知识库

这里非常重要,个性化的信息主要通过有效的知识库来实现

  1. 测试基础方法的信息,明确哪些是最佳方法以及语义

  2. 对测试代码规范自定义信息

  3. 不同业务线的要求,例如给到最佳实践的代码模板

新建FastGPT项目
  • 在界面和交互方面公司内针对FastGPT进行对应小范围改造,但基本遵从FastGPT对应用的定义

  • 新建的项目要勾选之前的知识库

  • 配置好一个FastGPT应用后,根据应用可提供API

选取待CR的Repo

从gitlab内筛选想要review的项目ID

优化提示词

测试代码的提示词可参考

触发Review

调用GET:https://fastqa.xxxx.com/api/review/work?projectId=xxxxx&mrId=xx 接口即可发起Review,此处我们改造fastGPT代码去抓取Gitlab的MR信息和代码变更

  • projectId:项目ID

  • mrId:MR请求ID

在Gitlab CI中添加以下内容

 

这样MR请求的时候就会触发Review任务,结果触发企信机器人。

结果查看

Review结束的时候企业微信(钉钉)会收到消息

打开企业微信(钉钉)通知中的链接就可以查看结果,高价值的CR信息具体review同学或者mgr可以补充到gitlab上进行修改,使用平台人员标记Review结果是否有效便于后续优化

实际内部CR实践

摘取对公司内某一个真实自动化代码的一些建议

从初步实践的情况看:

  1. 确实可产出大量值得采纳的建议

  2. 存在一些误报情况,和AI目前返回数据的不确定性相关,但可通过调优知识库进行优化

本文引入了大模型进行测试代码Code Review的思路,然后介绍了如何较低成本搭建基于FastGPT+通用大模型的的CR系统,我们相信机器审查代码是一个非常有价值的赛道,随着AI的不断增强,CR的能力有望变得更完善,希望文本能给大家带来启发,感兴趣的读者也可以留言参与讨论,可以持续关注本公众号关于AI实践的文章。

总结

感谢每一个认真阅读我文章的人

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

最新文章
Dopamine多巴胺越狱2.0最新版,支持iOS15.0-16.5.1越狱
opa334巨魔大神终于发布了Dopamine多巴胺越狱2.0!期待已久的好消息,终于有完整版的越狱了!注意是完整版越狱,而非完美越狱!
Chrome插件:Wappalyzer 展现网站背后用了哪些技术
我是鬼哥,10年+老程序员一枚。要说到在互联网世界里瞎逛,有时候咱们总会好奇那些炫酷的网站背后到底用了哪些黑科技。比如,有
AI 与人工同传首次正面交锋,翻译完整性成优势
现在的AI翻译真的比人好?AI会取代人工同传吗?为深入探讨这一问题,12月23日,科技媒体《差评》在中国传媒大学举办了行业首个“
css命名规则
页面制作最重要的就是CSS,定义合理的CSS命名规范,可以大幅提高页面制作的效率和方便开发及相关人员修改编写。1.通用命名规则:
Apo AI聊天助手
编辑点评:已接入GPT4接口提供每天的免费次数。这意味着,即使用户没有付费也可以免费地使用Apo AI,并且每天都可以享受一定数量
eBay刊登工具介绍:Title Builder
据介绍,Title Builder项目适用于eBay、亚马逊、Etsy和其他电商平台。可以帮助需要对店铺搜索引擎优化和网络营销活动的卖家。基
2022年新兴行业、2022新兴行业创业项目推荐十个!
一、未来10-20年,比较有前景的行业是什么?1.电商创业【淘宝客】——氧惠APP氧惠APP,2022全新模式,0投资,最快63天做到月入十
FL Studio21揭秘:AI编曲时代或将来临
【FL中文官网资讯】1997年是一个「古老」的年代,那时人们还在用「猫」上网,微信、QQ的江湖被ICQ统治,音乐编辑领域 Cool Edit
Facebook海外三不限和国内白名单三不限的区别体现在哪些方面?
Facebook海外三不限户和国内白名单三不限户同属于三不限企业户,但还是有很多人不是很清楚两者之间的区别。本期内容做一个具体介
Android笔试面试题AI答之Kotlin(9)
在Kotlin中, 和都是接口,它们都定义了对集合(即一系列元素)的基本操作,但它们在可变性ÿ