(论文阅读) Wasabi-A Framework for Dynamically Analyzing WebAssembly

Wasabi: A Framework for Dynamically Analyzing WebAssembly 作者:Daniel Lehmann,Michael Pradel 会议:ASPLOS'19 开源:http://wasabi.software-lab.org ABSTRACT 这篇文章提出了第一个Wasm动态分析框架,Wasabi。其基于binary instrumentation,通过将用JavaScript写成的测试函数插桩进Wasm binary中来实现分析。对 WebAssembly 进行动态分析会面临一些独特的挑战,例如使用具有固定类型的分析函数跟踪类型多态指令的问题,我们通过按需单态化(on-demand monomorphization)来解决这个问题。 我们在计算密集型的benchmarks和实际应用上对Wasabi的评估表明,Wasabi (i) 忠实地保留了原始程序行为,(ii) 为重量级动态分析带来了合理的开销,(iii) 使各种动态分析(包括指令计数、调用图提取、内存访问跟踪和污点分析)的实施变得简单易行。

阅读全文

(论文阅读)(Part2)SoK-Sanitizing for Security

(Part2)SoK: Sanitizing for Security 作者:Dokyung Song, Julian Lettner, Prabhu Rajasekaran(UC Irvine) 会议:S&P’19 Program InstrumentationSanitizer 通过在程序中嵌入inlined reference monitors(IRM)来执行其漏洞查找策略,这些IRM会监控和调和所有可能导致漏洞的程序指令,这些指令包括(但不限于)load和store、栈帧分配和释放、调用内存分配函数(如 malloc)和系统调用。IRM可以通过compiler、linker或instrumentation framework嵌入程序中。

阅读全文

(论文阅读)(Part1)SoK-Sanitizing for Security

(Part1)SoK: Sanitizing for Security 作者:Dokyung Song, Julian Lettner, Prabhu Rajasekaran(UC Irvine) 会议:S&P’19 ABSTRACTC 和 C++ 编程语言出了名的不安全,但仍然不可或缺。因此,开发人员采用多管齐下的方法,抢在对手之前发现安全问题。这些方法包括手动、静态和动态程序分析。动态错误查找工具(即 “sanitizers”)可以发现其他类型分析无法发现的错误,因为它们可以观察到程序的实际执行情况,因此可以直接观察到发生的不正确程序行为。 学术界已经开发了大量的sanitizer原型,实践者也对其进行了改进。我们系统地概述了sanitizer,重点介绍了它们在发现安全问题方面的作用。具体来说,我们对现有工具及其涵盖的安全漏洞进行了分类,描述了它们的性能和兼容性,并强调了各种权衡。

阅读全文

(论文阅读)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) 为开发人员提供代码完成支持,他们可以在编写测试代码时从推荐的断言语句中获益。

阅读全文