【论文阅读005】:Nuances are the Key: Unlocking ChatGPT to Find Failure-Inducing Tests with Differential...

论文基本情况:

论文名: Nuances are the Key: Unlocking ChatGPT to Find Failure-Inducing Tests with Differential Prompting

作者:Tsz-On Li, Wenxi Zong, Yibo Wang, Haoye Tian, Ying Wang, Shing-Chi Cheung, Jeff Kramer

单位:The Hong Kong University of Science and Technology

来源:23 ASE

论文主题:漏洞挖掘,测试用例,大模型

一句话论文:

通过引导,使ChatGPT了解到程序正确版本与有缺陷版本之间的细微差别,从而能生成触发程序缺陷的测试用例。

重点与思考:

这一篇论文主要学习写作方法和文章排布

论文大致说明
本文核心方法建立在两个点上,一是ChatGPT可以了解有缺陷的程序的预期功能,二是当ChatGPT被引导关注程序间细微差别时,它可以成功地生成诱导失败的测试用例。基于这两个点,本文提出了名为差分提示的方法。首先,ChatGPT理解原程序的预期功能,并生成若干个相同功能的代码,其次,把这些新生成的代码以及原程序一起输入到ChatGPT中,为这些程序生成一部分测试用例。随后,分别执行这些测试用例,如果所有程序的运行结构都相同,则认为原程序没有缺陷,否则,认为有缺陷。最后,在Quixbugs和Codeforce两个数据集上验证了方法的有效性。

1. 文章结构

整体结构上跟一般的论文比较类似,包括 Introduction + Preliminaries + Methodology + Evaluation + Discussion and Future Work + Related Work + Conclusion 这么几部分,最后还有一小段关于开源的内容,但整体上差别不大。
结构上可能有两个比较值得提的点,一是实验部分跟那么几篇论文都一样,先说明要分析哪几个问题,在分问题分析实验结果。二是 Introduction 里分出了小标题,问题描述与挑战 + 核心观点 + 方法说明 + 贡献 + 应用场景。这个确实是之前没怎么见过的,特别是应用场景这个内容。虽然大家默认写的内容跟这个划分的内容差不多,但没有这么准确的写出来。、

2. 内容排布

Introduction

首先先简单说一下本文主要的工作内容是什么,生成导致失败的测试用例。并且,说明白困难点在哪里。再引入了一下本文要用的ChatGPT。接下来就说明研究内容的介绍了。前面的背景介绍没有太多,一段多一点。可能也跟这个研究内容比较常见有关系?
但介绍本文方法的时候没有直接说明具体的步骤,而是先说明生成的目标,属于是在解释方法的目的。而且,着重说了一下研究的过程,相当于一个motivation。先说本身的想法是什么,然后发现了问题,再给出一个可能的解释和例子佐证。这种内容感觉还是比较少见的,相当于其他论文里动机和motivation的说明,而且篇幅可能占的更多,差不多能有双栏的一栏?
随后,提出了本文的两个观点,或者说方法的几个依据。类似于修复里说明可以通过修改几行来实现修复这种。
再之后,才是方法具体的说明。方法是做什么的,包含几部分,每部分承担什么角色。解释了详细的过程。写了半栏的内容,到这里,一些比较短的 Introduction 都已经写完了…
然后,说明实验过程,数据集是什么,对比方案是什么,实验结果是怎么样的。而且结果说的还相对于比较详细。
接下来,本文的贡献,每一篇论文都要有的。本文的角度-用到了ChatGPT,具体的技术内容,实验。
最后,是没有在其他论文里见过的内容,应用前景。一方面,承认本文方法的局限性,只适用于简单程序,另一方面,认为可以用于教育方面。----感觉这一部分内容怎么看怎么奇怪…
这些内容写完,已经到第三页了,感觉算是比较长的了。如果之后论文内容不够,可以学习一下这种写法
Preliminaries
继续分析了Introduction提到的那个例子,说明了两个程序不同的输出。再引出了测试用例的分类。纠正故障诱导测试用例(FT-IA) + 巧合失败诱导测试用例(FT-Ia) + 错误失败诱导测试用例(FT-ia) + 通过测试(PT) + 非法参数测试用例(IT)。这几种测试用例,第一类是可以导致失败的输入以及对应的输出,第二类是可以导致失败的输入以及不对应的输出,第三类是正常的输入以及错误的输出,第四类是可以通过的测试用例,即正常的输入和对应的输出,最后一类是非法的输入。
这些跟方法本身应该没什么联系,只跟跟实验相关。实际上这部分放到实验里说明貌似也可以,只是放到实验里再写这么长可能就不太合适了?

Methodology

这一部分的开头倒是没什么特殊的,给一张整体的流程图,再加一个帽子,然后分步进行说明。
第一部分:程序生成。还是有一部分对于依据的说明,也就是上面提到的两个观点。但内容部分还是有夹杂着对后续部分的影响和实验分析。这种写法感觉不是特别好…然后跟流程图里的内容又做了一部分对应,说明图里的内容具体是什么。这个确实是可以学习的地方。
第二部分:测试用例生成。跟第一步类似,都是先重复了一部分理论依据,再说工作流程。一下子没看明白,有仔细理解了一下,差不多弄懂了。分三步,先生成十轮测试用例,步骤2,对所有的生成版本,找到选择所有输出相同的测试用例。然后是步骤3,根据这个找到的测试用例,比较步骤2里的一致性输出与目标程序的输出,如果不一致,则认为有漏洞。否则,这个测试用例被认为是无法导致故障的,回滚到步骤一。这个过程中记录所执行到的代码行,如果分支覆盖率达到100%或者饱和,则认为已经被充分测试,停止。
这两部分的写法倒是保持了一致,都是那种比较混杂的写法,虽然有一定的分割关系,但都有很多的混在一起,导致不好理解。不过,方法部分确实没有太多的篇幅,大概有三栏,可能还没有 Introduction 多,到这里也才5页占了个开头,可以算4页,大概看了一下,后面有6页实验,但这是怎么做出来的呀…

Evaluation

首先,是整个部分的概览,说明实验设置以及涉及到的分析。分四个问题,能否有效找到Quixbugs代码导致失败的测试用例;能否有效的推断项目意图;能否有效的生成代码;能够为Codeforce程序找到测试用例。
这几个问题,特别是2和3有点像消融?但也不是。但也不能说跟方法不相关,
问题一
先说实验设置,两个对比方案,一个 ChatGPT 直接生成测试用例,一个 PYNGUIN–一个python单元测试工具。然后用一段介绍了一下数据集,将有漏洞和没漏洞的程序都作为测试数据。然后,还用一段分析了一下为什么不用Java版本的,也大概说了一下把注释都删掉了。这里数据集的介绍是不是有点多了?可能是审稿人提到了?
终于到具体的对比了,然后又说了一下做了十次重复实验,以及结果的计算方法,这个应该放到实验设置里吧…然后对于 PYNGUIN 方法,说明了一下在本文中的具体使用方法。在这些之后,又来了一个精确度的概念,跟上面提到的结果计算方法,一个是单次的,一个是全部的。这个让我想到了自己的论文的写法,为了凑实验量,恨不得一个值算三遍。
对于结果的分析里,由于这个图比较复杂,可以再说明一下具体的一个值是怎么计算的,在图中是怎么表示的。这么一段的分析倒是没什么问题,但还是混杂着计算方法的介绍…表二和表一是反的,先提到了表二再提到表一。内容上,表一是数量,表二是百分比,感觉有点废话?下面图4实际上也是表一的具体化。
体感上,还是有点废话的意思,就几组数据翻来覆去说,感觉顶会不应该这样的。然后这一部分就写了整整两页…
问题二
同样是先说实验数据,然后十次。但这个十次是指的每次都是新的会话+同样的输入?还是说有变化?
这一部分倒不是特别长,也算是正常的写法。先说实验数据的结果,然后举了一个例子进一步的分析。长度上也没什么特别的。
问题三
这个问题实际上是看生成的代码是否有跟目标代码一样的漏洞。具体做法是对生成的代码,跑一下 QuixBugs 中提供的测试用例。以 ChatGPT 为基线,只针对其认为有漏洞的程序生成修复版本。感觉里面好多废话,是个名字都得解释一下,call一下其他部分。
这里的实验感觉对比有点问题?基数就不一样, ChatGPT 只对其认为漏洞的版本生成,所以他的概率会底好多,还不如像问题二里的一样,不要对比了。现在的做法实际上还包含了一部分对于检测能力的判别,而不是单纯的生成能力。而且,感觉有些话看了不止两遍了。整体上倒是还好,内容上也没有太多。
问题四
又是很多废话(?)关于构建数据集。其他的又把问题一里的重复了一下。
接下来是实验结果的分析。先把表中的数据复述一下,再说提升了多少,再给一个可能的原因。
这一部分内容上倒也还好,但是这个表3感觉有点不太合理。如果仔细分析的话,对于有漏洞的程序,如果稍微复杂一点,实际上不如直接使用 ChatGPT 或者其他方法。而对于正确的程序,本文的方法啥都生成不了,是不是也有点问题?感觉应该也得看为每一个程序一共生成了多少,不应该只看某一类测试用例的平均值。
问题五
这部分之前没有体现,在这里才能看出来,结构上有点不太合理,这一块可以放到一个大标题里
不过这个第一点倒是回应了之前的一个疑问,虽然不能说服我。但确实尝试解释了ChatGPT训练数据的问题。剩下的感觉都是片汤话了,没感觉到太大的价值,而且二和三感觉都是一个内容。
剩下的倒是没什么其他的了,都比较普通

总结

整篇文章看下来,实际上东西确实不是很多,而且跟之前想象的方法部分有一些新奇的写法也不一样,方法部分实际上只占了两页,也算是一个正常体量。但实验部分确实是把有限的内容写出花来了,虽然也是一个数据反复分析,实验量也太少了吧,A会真的没人提这个吗?而且,文章结构也不是特别清楚,前后关联比较多,而且,不是那种简单提一句的形式,说的还是比较多的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值