基于Fuzzing和ChatGPT结合的AI自动化测试实践.docVIP

基于Fuzzing和ChatGPT结合的AI自动化测试实践.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

基于Fuzzing和ChatGPT结合的AI自动化测试实践

一、前言

有赞目前,结合insight接口自动化平台、horizons用例管理平台、引流回放平台、页面比对工具、数据工厂等,在研发全流程中,已经沉淀了对应的质量保障的实践经验,并在逐渐的进化中。

在AI能力大幅进步的背景下,笔者尝试将业务场景给到ChatGPT,进行了文本用例生成的测试,观察到其输出测试用例的逻辑和测试人员编写用例的逻辑有较大的相似之处。在对ChatGPT的输出结果进行简单的调整和修改后,就可以用于业务测试中了。笔者发现AI设计的测试用例场景既能包括正向场景,也能包括逆向的异常场景,并能较为准确的给出测试用例描述和预期结果。在自动化测试中,测试工程师需要花费较多的时间去设计、实现和维护用例,对于该场景,我们是否可以应用ChatGPT的内容生成能力,来提升自动化测试脚本的编写效率呢?如果结合Fuzzing的测试思路,借助大量的生成用例来执行是否能挖掘潜在的代码问题呢?下面将介绍目前在做的基于Fuzzing(模糊测试)和ChatGPT结合的探索实践。

二、调研过程

2.1什么是Fuzzing

模糊测试(Fuzzing)的核心思想是通过系统自动生成随机数据作为输入,来验证被测程序的可靠性。在测试领域中,Fuzzing经常作为一种补充接口测试手段,来覆盖/探索接口中潜在的异常/临界值场景。简单来说,系统通过给定种子用例,随机生成大批量用例,调用被测接口,尝试发现问题(挖掘bug)。

模糊测试的难点在于如何基于种子用例生成随机有效的用例数据,从业界的经验来看,测试人员通过对生成内容进行建模、设计相应算法来匹配被测对象,才能取得比较好的生成效果。随着ChatGPT的发布,其AIGC的能力令人惊艳,如果借助ChatGPT的优势,能否降低生成随机数据的成本呢?于是,笔者围绕ChatGPT生成用例的可行性进行了尝试。

2.2ChatGPT生成用例的可行性

为了验证ChatGPT生成数据的能力,笔者随机找了一份公司的PRD,摘取了一部分需求(已脱敏)来测试ChatGPT生成用例的质量,以下是调研过程中的部分结果展示。

摘取需求:商品设置了会员价-会员等级-打折,则群团团下单享受会员折扣。前置条件为当前店铺A,消费者P是店铺的会员,店铺A笔记内的商品M售价100元,运费0元,店铺设置了该商品M会员打8折。

部分问答内容:

可以从上述的图片中发现,在给定较为完善的背景情况下,ChatGPT生成的测试用例还算那么回事。笔者和相关业务同学确认,如果在ChatGPT给出的用例上再做一些调整,就可以直接用于功能测试了,所以在ChatGPT生成用例这件事上,是有可行性的,值得进一步探索。而自动化测试,无外乎将生成内容和规则变更,让ChatGPT产出可行的入参内容即可。

2.3结合Fuzzing与ChatGPT可以做什么

经过上述的调研,模糊测试(Fuzzing)的思路是?基于种子用例生成随机用例-执行用例-发现问题(bug挖掘),但其难点在于如何生成高质量的随机用例,而ChatGPT的内容生成能力,似乎可以解决这一问题。笔者将两者尝试结合,模糊测试作为核心思想,ChatGPT作为用例生成服务,目标是通过大量ChatGPT生成的用例,来挖掘被测对象潜在的问题。

在自动化测试中,如果仅依赖模糊测试和ChatGPT生成的用例还不够,因为我们无法判断ChatGPT生成的用例是否有效,笔者尝试引入了自动化测试覆盖率的概念,将整体流程给串联起来:以模糊测试为基石,让ChatGPT来充当规则变异器,自动生成接口测试用例,覆盖率作为检验生成用例的有效性,目的是发现问题和提高自动化测试的效率。

下面,笔者将以ChatGPT用例生成、bug挖掘、代码覆盖率作为主线,来进行AI自动化测试实践。

三、设计与实现

前言提到,有赞已经有几个成熟的平台可以使用,为了降低实现的成本,笔者将尽可能基于现有平台的能力,来做设计与实现。

3.1?整体思路

有赞目前已有成熟的接口测试平台insight、流量回放平台zan-hunter,来承接日常接口测试、线上巡检、引流回放等测试活动。基于调研结果,笔者经过整理,核心思路可概括为拾取用例-生成用例-执行结果判别-覆盖率条件循环。具象的说,就是(1)insight/zan-hunter获取用例生成模版数据-(2)根据模版数据生成ChatGPT的输入(prompt)-(3)调用ChatGPT,根据要求生成用例(JSON输出)-(4)执行用例,调用java应用的接口进行测试,输出测试结果(bug挖掘)-(5)获取接口对应的行覆盖率,并根据判断是否要继续执行-(6)循环往复,直到覆盖率摸高到天花板(可能是70%~80%)-(9)End。

在现有资

文档评论(0)

wu9872 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档