(论文阅读)CODAMOSA-Escaping Coverage Plateaus in Test Generation with Pre-trained Large Language Models

(论文阅读)CODAMOSA: Escaping Coverage Plateaus in Test Generation with Pre-trained Large Language Models 时间:2023.5 作者:Caroline Lemieux(University of British Columbia), Jeevana Priya Inala(Microsoft) 会议:ICSE’23 开源:https://github.com/microsoft/codamosa ABSTRACT通过将test case generation与mutation相结合,SBST为待测试程序生成高覆盖率的test cases。SBST的表现依赖于生成test cases的合理概率,这些test cases可执行被测程序的核心逻辑。使用这些test cases,SBST可以探索这些cases周围的空间来探索更多的程序空间。 这篇文章探索了例如OpenAI的Codex等LLM是否可以被用于帮助SBST的搜索过程。我们提出了名为CODAMOSA的方法,其首先执行SBST直到覆盖率提升停滞,接着询问Codex提供example test cases来探索没未访问过的函数。这些examples帮助SBST调整其搜索方向到更有用的领域。在486个benchmarks上的evaluation结果表明,与仅有SBST或者仅有LLM相比,CODAMOSA在更多benchmark(173 和 279 个)上实现了更高的覆盖率明显,其数量高于其减少的覆盖率数量(10 和 4 个)。

阅读全文

(论文阅读)An orchestrated survey of methodologies for automated software test case generation

An orchestrated survey of methodologies for automated software test case generation 时间:2013 作者:Saswat Anand(Stanford) 期刊:The Journal of Systems and Software(JSS,软工B) ABSTRACTTest Case Generation是Software Testing中最耗费人力的工作之一,它对软件测试的效果和效率也有很大影响。因此,几十年来,它一直是软件测试领域最活跃的研究课题之一,并产生了许多不同的方法和工具。本文对自动生成软件测试案例的最重要技术进行了系统分析,并在独立章节中进行了回顾。介绍的技术包括 : structural testing using symbolic execution model-based testing combinatorial testing random testing及其自适应随机测试变体 search-based testing。 每一部分都由该技术领域的世界知名研究人员撰写,简要介绍了该方法的基本思想、技术现状、未决研究问题讨论以及该方法的未来发展前景。总体而言,本文旨在对自动生成测试用例的研究做一个介绍性的、最新的和(相对)简短的概述,同时确保处理的全面性和权威性。

阅读全文

(论文阅读)On Learning Meaningful Assert Statements for Unit Test Cases

[技术积累]On Learning Meaningful Assert Statements for Unit Test Cases 会议:ICSE’2020 作者:Cody Watson(Washington and Lee University),Michele Tufano(Microsoft) ABSTRACTSoftware testing是软件生命周期的重要组成部分,其需要花费大量的时间和精力。据估计,软件开发人员将近 50% 的时间用于测试他们编写的代码。因此,学术界的一个长期目标就是实现软件测试的(部分)自动化。虽然已经提出了几种自动生成测试方法的技术和工具,但最近的研究对其生成的断言语句的质量和实用性提出了批评。因此,我们采用了一种基于神经机器翻译(NMT)的方法叫ATLAS(AuTomatic Learning of Assert Statements)来自动化地为测试方法生成有意义的断言语句。给定一个test method和一个focal method(即被测试的方法),ATLAS 就能预测有意义的断言语句,以评估focal method的正确性。我们将 ATLAS 应用于 GitHub 项目中的数千个测试方法,当只考虑top1的预测断言时,它能在 31% 的情况下准确预测开发人员手动编写的断言语句。当考虑到top5的预测断言语句时,ATLAS 能够在 50% 的情况下预测出精确匹配的断言语句。这些令人鼓舞的结果表明,我们的方法具有以下潜在用途:(i) 作为自动测试案例生成技术的补充;(ii) 为开发人员提供代码完成支持,他们可以在编写测试代码时从推荐的断言语句中获益。

阅读全文

(论文阅读)Go or No Go-Differential Fuzzing of Native and C Libraries

Go or No Go: Differential Fuzzing of Native and C Libraries 时间:2023.5 作者:Alessandro Sorniotti(IBM)、Michael Weissbacher、Anil Kurmus 会议:S&P‘2023 Abstract​ 十多年来,Go 已经成为当今最流行的编程语言之一。Go 是一种静态类型的编译语言,通过强类型、自动插入的边界检查和标记-清扫垃圾收集器,实现了空间和时间上的内存安全性。Go 开发人员可以即时使用大量的本地库,这些库可以作为运行时的一部分提供,也可以从社区代码中导入;或者,Go 开发人员可以直接链接到 C/C++ 库,这些库可以通过cgo功能从GO源码中调用。做出支持以上功能的这一决定的原因包括稳定性、性能和可用性。因此,开发人员可以在 Go 本地库或非本地代码之间做出选择。然而,如今人们对如何在这一决策中考虑安全问题还知之甚少。

阅读全文

(论文阅读)Security Risks of Porting C Programs to WebAssembly

(论文阅读)Security Risks of Porting C Programs to WebAssembly 时间: 2022 作者:Quentin Stiévenart、Coen De Roover、Mohammad Ghafari 会议:Proceedings of the 37th ACM/SIGAPP Symposium on Applied Computing Abstract​ WebAssembly是一种用于跨平台应用程序的编译目标,目前正被越来越多地使用。在本文中,我们研究了能否将 C 程序不需要大量修改直接编译到 WebAssembly 中,如果不能,移植会对其安全性产生什么影响。我们将表现出常见漏洞的17802个程序编译成64位的x86和WebAssembly二进制文件,并观察到在这些平台上执行4911个二进制文件会产生不同的结果。 ​ 通过人工检查,我们找出了造成这种差异的三类根本原因: 使用了不同的标准库实现; WebAssembly 缺乏安全措施; 执行环境的语义不同。 ​ 我们描述了我们的观察结果,并讨论了从安全角度来看至关重要、最需要开发人员关注的问题。我们的结论是,将现有的 C 程序编译成 WebAssembly 进行跨平台发布可能需要对源代码进行调整;否则,WebAssembly 应用程序的安全性可能会受到威胁。

阅读全文