npm-filter: Automating the mining of dynamic information from npm packages
代码存储库的静态属性,例如,代码行、依赖项、依赖关系等可以容易地从代码托管平台(诸如GitHub)和包管理系统(诸如用于JavaScript的npm)中抓取;尽管同样重要,但与程序的动态属性相关的信息,例如,测试套件中通过或失败的测试的数量是不容易获得的。轻松收集这种动态信息的能力对进行语料库分析的研究人员非常有用,因为他们可以根据只能通过运行它们来观察的属性来区分项目。在本文中,我们介绍了npm-filter,一个自动化工具,可以下载,安装,构建,测试和运行自定义用户脚本的源代码的JavaScript项目上npm,最流行的JavaScript包管理器。我们概述了这个工具,描述了它的实现,并表明,npm过滤器已经在开发多个JavaScript工具的评估套件是有用的。
2022-03-30 cs.SE
Code Reborn AI-Driven Legacy Systems Modernization from COBOL to Java
Campbellsville university(坎贝尔斯维尔大学)
本研究针对老旧软件系统的关键挑战,利用Legacy COBOL 2024语料库,通过Java解析、AI升级建议和React可视化,实现COBOL到Java的AI驱动现代化,准确率达93%,复杂度和耦合度显著降低,优于人工和规则工具。
2025-04-15 cs.AI cs.LG cs.SE
Can We Trust Tests To Automate Dependency Updates? A Case Study of Java Projects
开发人员越来越多地使用Dependabot等服务来自动更新依赖关系。然而,最近的研究表明,开发人员认为这些服务是不可靠的,因为他们严重依赖于测试覆盖率来检测更新中的冲突。为了了解依赖测试的流行程度,我们计算了521个经过良好测试的Java项目中直接和间接使用依赖的测试覆盖率。我们发现测试只覆盖了58%的直接依赖调用和20%的传递依赖调用。通过创建1,122,420个人工更新,其中包含262个项目中所有依赖项使用的简单故障,我们测量了测试套件在检测依赖项中的语义故障方面的有效性;我们发现测试平均只能检测到47%的直接人工故障和35%的间接人工故障。为了提高可靠性,我们研究了使用变更影响分析作为减少假阴性的一种手段;平均而言,我们的工具可以发现74%的直接依赖关系中的注入错误和64%的传递依赖关系,几乎是测试套件的两倍。然后,我们将我们的工具应用于22个真实世界的依赖更新,其中它确定了三个语义冲突的情况和五个未使用的依赖关系的情况。我们的研究结果表明,静态和动态分析相结合,应该是未来的依赖更新系统的要求。
2021-09-24 cs.SE
Empirical Review of Java Program Repair Tools: A Large-Scale Experiment on 2,141 Bugs and 23,551 Repair Attempts
在过去的十年中,基于测试套件的自动程序修复的研究有了显着增长。每年,新的方法和实现都会出现在主要的软件工程场所。然而,大多数这些方法都是在单一的bug基准上进行评估的,其他研究人员也很少复制这些bug。在本文中,我们提出了一个大规模的实验,使用11个Java测试套件为基础的修复工具和5个基准的错误。我们的目标是更好地了解自动程序修复工具在大量基准测试中的现状。我们的调查是指导的假设,修复工具的可修复性可能不会在不同的基准程序错误的一般化。我们发现,这11个工具1)能够为5个基准测试中21%的bug生成补丁,2)与其他基准测试相比,在Defects 4J上具有更好的性能,通过为Defects 4J中47%的bug生成补丁,而其他基准测试中的bug只有10-30%。我们的实验总共包括23,551次修复尝试,我们用来找到非补丁生成的原因。本文对这些原因进行了分析,有助于维修工具设计人员改进技术和工具。
2019-05-28 cs.SE
Application of Seq2Seq Models on Code Correction
在SARD的Juliet Test Suite for C/C++和Java测试集上,将不同的seq 2seq模型应用于程序设计语言的纠错任务,获得了75%(C/C++)和56%(Java)的修复率。我们在这些seq 2seq模型中引入了金字塔编码器,这大大提高了计算效率和内存效率,同时保持了与非金字塔模型相似的修复率。利用迁移学习和在Juliet Test Suite上预先训练好的模型,成功地对ITC基准测试样本(只有685个代码实例)进行了错误类型分类,为处理小型程序设计语言数据集提供了一种新的方法。
2020-08-04 cs.SE
LittleDarwin: a Feature-Rich and Extensible Mutation Testing Framework for Large and Complex Java Systems
变异测试是一种被广泛研究的提高测试套件质量的方法。我们设计LittleDarwin作为一个突变测试框架,能够应付大型和复杂的Java软件系统,同时仍然很容易扩展新的实验组件。LittleDarwin解决了突变测试领域中存在的两个问题:拥有一个能够在工业环境中工作的工具,并且可以扩展学术界提供的尖端技术。LittleDarwin已经提供了高阶突变、空型突变体、突变体采样、手动突变和突变体包容分析。目前还没有一款工具具备所有这些功能,能够与典型的工业软件系统一起工作。
2017-07-04 cs.SE
Empirical study of software quality evolution in open source projects using agile practices
我们分析了两个开源Java项目的时间演变:Eclipse和Netbeans,这两个项目都是按照敏捷实践开发的,尽管程度不同。我们的研究是集中在质量分析的系统,衡量缺陷的存在,其与软件度量的演变。这两个项目通过软件图来描述,其中节点由Java文件表示,边描述节点之间的现有关系。本文在Chidamber和Kemerer度量套件的基础上提出了一个Java文件度量套件,并利用它来研究软件演化及其与bug计数的关系。
2009-05-20 cs.PL cs.SE
JEDI: Java Evaluation of Declarative and Imperative Queries
Università della Svizzera italiana (USI)(瑞士意大利语大学)
提出JEDI基准测试套件,通过自动将SQL基准转换为Java基准,分析Stream API与命令式实现的性能差异,以指导开发者优化代码。
2026-05-22 cs.PL cs.SE
Demonstrating ARG-V's Generation of Realistic Java Benchmarks for SV-COMP
University of Nebraska–Lincoln(内布拉斯加大学林肯分校);Boise State University(博伊西州立大学)
ARG-V工具通过生成真实Java基准,揭示了现有验证器在新基准上的性能下降,提升了验证工具评估的全面性和现实性。
2026-02-04 cs.SE
Exploring Plausible Patches Using Source Code Embeddings in JavaScript
MTA-SZTE Research Group on Artificial Intelligence(MTA-SZTE人工智能研究组);University of Szeged(塞格德大学)
尽管自动程序修复(APR)领域非常受欢迎,但补丁验证的问题仍然是开放的。目前的大多数方法都遵循所谓的生成和验证方法,首先生成候选解决方案,然后根据Oracle进行验证。然而,后者可能不会给出可靠的结果,因为这样的预言机中存在缺陷;其中之一通常是测试套件。尽管(重新)运行测试套件是在人们的眼皮底下,但在现实生活中的应用程序中,过度拟合和欠拟合的问题经常发生,导致补丁不足。解决这个问题的努力包括补丁过滤,测试套件扩展,仔细的补丁制作等等。迄今为止,大多数方法使用后过滤依赖于测试执行跟踪或利用一些相似性的概念上产生的补丁测量。我们的目标是调查这些基于相似性的方法的性质。为此,我们在一个开源JavaScript项目上训练了一个Doc 2 Vec模型,并为其中的10个bug生成了465个补丁。然后,根据与原始程序的相似性,将这些看似合理的补丁与开发人员修复一起进行排名。我们分析了这些相似性列表,发现普通的文档嵌入可能会导致错误分类-它无法捕获细微差别的代码语义。然而,在某些情况下,它也提供了有用的信息,从而有助于更好地理解自动程序修复领域。
2021-03-31 cs.AI cs.SE
Generating executable oracles to check conformance of client code to requirements of JDK Javadocs using LLMs
The University of Texas at Austin(德克萨斯大学)
本文提出利用大语言模型从Java核心库Javadocs自动生成测试预言,实验显示98.8%可编译且96.4%准确反映预期属性,验证了该方法对客户端代码一致性检查的有效性。
2024-12-14 cs.AI cs.SE
CATTO: Just-in-time Test Case Selection and Execution
回归测试确保被测系统(SUT)在更改后仍能按预期工作。最简单的回归测试方法包括针对SUT的更改版本重新运行整个测试套件。但是,这可能会导致耗时且耗费资源的过程;在处理大型和/或复杂的SUT和测试套件时,需要使用\eg。为了解决这个问题,可以使用测试用例选择(TCS)策略。这样的策略寻求构建一个临时的测试套件,该测试套件仅包括那些与对SUT所做的更改相关的测试用例,从而避免执行那些不执行更改部分的测试用例。本文介绍了CATTO(Commit Adaptive Tool for Test suite Optimization)和CATTO INTELLIJ PLUGIN。前者是一个为Java编写的SUT实现TCS策略的工具,而后者是一个包装器,允许开发人员直接在IntelliJ中使用\toolName。我们还对七个开源Java SUT进行了CATTO的初步评估,包括测试套件大小的减少、故障暴露测试用例和故障检测能力。结果是有希望的,并建议CATTO可以帮助开发人员进行回归测试时。该工具的视频演示和文档可从以下网址获得:\url{https://catto-tool.github.io/}
2022-06-17 cs.SE
Linking Sketches and Diagrams to Source Code Artifacts
最近的研究表明,草图和图表在软件开发人员的日常工作中起着重要的作用。如果这些可视化工件被存档,它们通常与它们记录的源代码分离,因为没有足够的工具支持来帮助开发人员捕获、存档和检索与某些源代码工件相关的草图。本文介绍了SketchLink,一个工具,旨在增加软件开发过程中创建的草图和图表的价值,支持开发人员在这些任务。我们的原型实现提供了一个Web应用程序,该应用程序采用智能手机和平板电脑的摄像头来捕获模拟草图,但也可以在台式计算机上用于上传,例如,计算机生成的图表。我们还为Java IDE实现了一个插件,该插件将链接嵌入Javadoc注释中,并在源代码编辑器中将其可视化为图形图标。
2017-06-29 cs.SE
Assessing Exception Handling Testing Practices in Open-Source Libraries
现代程序设计语言(例如,Java和C#)提供了将错误处理代码与常规代码分离的功能,旨在增强软件的可理解性和可维护性。然而,异常处理(EH)代码的结构,在这样的语言可能会导致多个,不同的,复杂的控制流,这可能会影响软件的可测试性。以前的研究报告,EH代码通常被忽视,没有得到很好的测试,它的误用可能导致可靠性下降和灾难性的故障。然而,很少有人知道测试实践和EH测试有效性之间的关系。在这项探索性研究中,我们(i)测量了EH测试关于代码覆盖(指令,分支和方法)标准的充分程度;(ii)通过测量其检测人工注入故障(即,突变体)。我们的研究是使用来自开源生态系统的27个长寿Java库的测试套件进行的。我们的研究结果表明,指令和分支内的$\mathtt{catch}$块和$\mathtt{throw}$指令覆盖较少,与整体指令和分支的统计意义。尽管如此,大多数研究的图书馆提出的测试套件能够检测到超过70%的注入故障。在这项研究中创建的总共12,331个突变体中,测试套件能够检测到其中的68%。
2021-05-02 cs.SE
AST-Based Automated Elimination of break and continue Statements in Java Code
University of Málaga(马拉加大学)
该研究开发了一个基于Eclipse JDT API的Java自动重构工具,通过引入辅助布尔变量重写抽象语法树,消除循环中的break和continue语句,保持语义等价,并经测试和开源项目验证,支持后续提取方法等重构。
2026-09-24 cs.SE
BugsInPy: A Database of Existing Bugs in Python Programs to Enable Controlled Testing and Debugging Studies
受Java缺陷基准Defects4J启发,本研究构建了包含17个真实Python项目493个真实缺陷的BugsInPy基准数据库及工具,以填补Python测试调试基准的不足,推动相关工具研究发展。
2024-01-27 cs.SE
ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolutionary Search
执行大型测试套件是耗时和资源消耗的,有时甚至是不可能的,并且这样的测试套件通常包含许多冗余的测试用例。因此,测试用例最小化被用来删除不太可能检测到新故障的冗余测试用例。然而,大多数测试用例(套件)最小化技术依赖于代码覆盖(白盒),基于模型的功能,或需求规格,这并不总是由测试工程师访问。最近,一组新的技术被提出,称为FAST-R,完全依赖于测试用例代码的测试用例最小化,这似乎是更有效的比白盒技术。然而,它在Java项目中实现了相当低的故障检测能力,这使得它的应用在实践中具有挑战性。本文提出了ATM(基于AST的测试用例最小化),一个基于相似性,基于搜索的测试用例最小化技术,以特定的预算作为输入,也完全依赖于测试用例的源代码,但试图通过细粒度的相似性分析和专用的搜索算法,以实现更高的故障检测。ATM将测试用例代码转换为抽象树(AST),并依赖于四个基于树的相似性度量来应用进化搜索,特别是遗传算法,以最小化测试用例。我们评估了ATM的有效性和效率的16个Java项目的661个错误的版本使用三个预算范围从25%到75%的测试套件的大型数据集。ATM实现了显着更高的故障检测率(平均0.82),相比FAST-R(平均0.61)和随机最小化(平均0.52),当运行只有50%的测试用例时,在实际可接受的时间内(平均1.1-4.3小时),考虑到最小化只是偶尔应用时,许多新的测试用例被创建(主要版本)…
2022-12-21 cs.SE
Evaluating LLMs on Java Code Snippet Adaptation Using a Mutation-Injection Framework
University of Windsor(温莎大学);University of Manitoba(曼尼托巴大学);University of Saskatchewan(萨斯喀彻温大学)
通过突变注入框架构建Java代码片段数据集,研究无指令条件下LLM对代码片段的适配能力,分析适配类型难度、复杂度影响及所需上下文范围。
2026-06-26 cs.SE
REMODEL-LLM: Transforming C code to Java using LLMs
REMODEL-LLM研究利用LLMs将C代码转换为Java代码,发现大多数模型无法生成基本代码,仅少数模型通过部分测试,揭示了量化模型在复杂转换任务中的局限性。
2025-12-12 cs.AI cs.SE
RefExpo: Unveiling Software Project Structures through Advanced Dependency Graph Extraction
本文提出基于 IntelliJ 的多语言依赖图提取工具 RefExpo,并通过微观与宏观实验证明其在 Java、Python 项目上具有更高召回率和分析准确性。
2024-12-04 cs.SE
Automatic Software Diversity in the Light of Test Suites
一些作品解决了自动化软件多样化的挑战,他们都有一个核心思想:使用自动化测试套件来驱动多样化。然而,缺乏对测试套件、程序和转换在此过程中如何相互作用的坚实理解。我们探讨这种复杂的相互作用的背景下,一个特定的多元化技术称为“sosiefication”。Sosification生成Sosie程序,即,一种程序的变体,其中某些语句被删除、添加或替换,但仍能通过原程序的测试集。我们的调查的影响,测试套件的sossification利用以下观察:测试套件覆盖不同地区的程序在非常不平等的方式。因此,我们假设SOSIE合成在一个语句上有不同的性能,该语句被100个测试用例覆盖,而在一个语句上被一个单一的测试用例覆盖。我们合成24583 sosies 6流行的开源Java程序。我们的研究结果表明,有两个维度的多元化。第一个问题在于规格说明:越多的测试用例覆盖一个语句,越难合成sosies。然而,令我们惊讶的是,我们也能够在高度测试的语句(多达600个测试用例)上合成sosies,这表明了我们研究的程序的内在属性。第二个维度是在代码中:我们手动探索了几十个sosies,并描述了易于多样化的新类型的宽容代码区域。
2018-12-23 cs.SE
Automatically Removing Unnecessary Stubbings from Test Suites
本文提出ARUS技术,通过执行测试识别并基于特征自动移除测试套件中不必要的存根,在128个Java项目中实现98.6%解决率,时间成本可忽略且代码复杂性增加有限。
2024-07-30 cs.SE
Do Null-Type Mutation Operators Help Prevent Null-Type Faults?
空类型是Java程序中的一个主要错误源,它的过度使用对软件维护有严重影响。然而传统的变异测试算子在默认情况下不能覆盖空类型的错误,因此不能作为一种预防措施。我们通过设计四个新的突变算子来解决这个问题,这些算子明确地模拟了空型故障。我们展示了这些变异算子是如何能够揭示缺失的测试,我们证明了这些变异算子在实践中是有用的。对于后者,我们分析了15个开源项目的测试套件,以描述通过这些运营商,以加强测试套件的权衡。
2020-04-08 cs.SE
Can Large Language Models Resolve Real Java Merge Conflicts? An Evaluation with a Calibrated LLM-as-Judge
Virginia Polytechnic Institute and State University(弗吉尼亚理工大学)
该研究针对真实Java合并冲突,构建仅用推理信号的LLM求解器,经校准的LLM评判者评估发现,其解决冲突的覆盖和匹配开发者方案的表现优于传统工具AutoMerge,但结构正确性仍需确定性检查保障。
2026-07-31 cs.SE
NodeSRT: A Selective Regression Testing Tool for Node.js Application
Node.js是构建Web应用程序最流行的框架之一。随着软件系统的成熟,运行整个回归测试套件的成本可能会变得很大。选择性回归测试(SRT)是一种只执行测试子集的技术,回归测试集可以更有效地检测软件故障。以前的SRT研究主要集中在标准的桌面应用程序。Node.js应用程序被认为很难执行测试缩减,因为Node的异步、事件驱动的编程模型,而且JavaScript是一种动态规划语言。在本文中,我们介绍了NodeSRT,一个用于Node.js应用程序的选择性回归测试框架。NodeSRT通过执行静态和动态分析,识别变更方法和测试之间的关系,然后将回归测试集缩减为仅受变更影响的测试,以改善回归测试集的执行时间。为了评估我们的选择技术,我们将NodeSRT应用于两个开源项目:Uppy和Simorgh,然后将我们的方法与retest-all策略和当前行业标准的SRT技术:Jest OnlyChange进行比较。结果表明,NodeSRT根据更改正确选择受影响的测试,比Jest OnlyChange快250%,精确450%。
2021-03-31 cs.SE
Unmasking the Genuine Type Inference Capabilities of LLMs for Java Code Snippets
本研究针对现有类型推断基准可能存在的数据泄露问题,构建了全新无泄露基准ThaliaType,验证了主流LLMs在真实场景下性能大幅下降,且受数据泄露影响的结果泛化性有限,为LLM代码类型推断能力评估提供了可靠基准。
2025-10-02 cs.SE
Test Smell Detection Tools: A Systematic Mapping Study
测试气味被定义为开发人员在实现测试用例时做出的次优设计选择。因此,类似于代码气味,研究社区已经产生了许多测试气味检测工具,以调查测试气味对测试套件的质量和维护的影响。然而,很少有人知道的特点,类型的气味,目标语言,以及这些出版的工具的可用性。在本文中,我们提供了所有已知的,同行评审的,测试气味检测工具的详细目录。我们首先对同行评审的科学出版物进行全面搜索,以构建一个包含22种工具的目录。然后,我们进行比较分析,以确定每个工具检测到的气味类型和其他显着特征,包括程序设计语言,测试框架支持,检测策略和采用,等等。从我们的发现中,我们发现了在Java、Scala、Smalltalk和C++测试套件中检测测试气味的工具,大多数工具都支持Java。这些工具可以作为命令行和IDE插件等。我们的分析还表明,大多数工具在检测特定的气味类型时会重叠,例如通用设备。此外,我们遇到了这些工具用来检测气味的四种类型的技术。我们设想我们的研究是研究人员和从业人员确定适合他们需求的工具的一站式来源。我们的研究结果还为社区提供了指导未来工具开发的信息。
2021-05-03 cs.SE
CamBench -- Cryptographic API Misuse Detection Tool Benchmark Suite
上下文:加密API在现实世界的应用程序中经常被滥用。因此,许多加密API误用检测工具被引入。然而,目前还没有一个既定的参考基准,可供对这些工具进行公平和全面的比较和评价。虽然有基准测试,但它们通常只针对领域的一个子集,或者只用于评估现有误用检测工具的一个子集。目的:为了公平地比较加密API误用检测工具,并推动该领域的未来发展,我们将设计这样一个基准。生成过程的公开性和透明度是公平生成和建立所需基准的关键因素。方法:我们提出了一种方法,我们从文献中获得的基准生成方法,其中包括一般的最佳实践基准和特定领域的基准生成。这种方法的一部分是生成过程的透明度和公开性,这是通过预先登记这项工作来实现的。基于我们的方法,我们设计了CamBench,一个公平的“加密API滥用检测工具基准套件”。我们将实现CamBench的第一个版本,将域限制为Java、JCA和静态分析。最后,我们将使用CamBench比较当前的误用检测工具,并将CamBench与其领域的相关基准进行比较。
2022-04-13 cs.SE
An ensemble meta-estimator to predict source code testability
Iran University of Science and Technology(伊朗科技大学)
与大多数其他软件质量属性不同,可测试性不能仅仅基于源代码的特性进行评估。测试套件的有效性和分配给测试的预算极大地影响了被测代码的可测试性。测试集的大小决定了测试工作量和成本,而覆盖度量则表明了测试的有效性。因此,考虑到测试预算,可测试性可以根据测试套件提供的测试用例的覆盖率和数量来衡量。本文提供了一个新的方程来估计一个给定的测试套件的大小和覆盖率的可测性。该公式已被用于标记属于110个Java项目的23,000个类及其可测试性度量。使用262个度量对标记的类进行向量化。标记的向量被送入一系列有监督的机器学习算法,回归,以预测源代码度量的可测试性。回归模型预测的R2为0.68,均方误差为0.03,适用于实践的可测试性。15个软件度量高度影响可测试性预测确定使用的学习模型上的特征重要性分析技术。与预测分支覆盖率作为测试标准的相关研究相比,由于采用了新的标准、度量和数据,所提出的模型将平均绝对误差提高了38%。作为可测试性预测的一个应用,它表明,42个臭Java类的自动重构,旨在提高15个有影响力的软件度量,可以提高其可测试性的平均86.87%。
2022-08-24 cs.LG cs.SE
JavaBench: A Benchmark of Object-Oriented Code Generation for Evaluating Large Language Models
The Hong Kong University of Science and Technology(香港科技大学);Guangzhou HKUST Fok Ying Tung Research Institute(广州香港科技大学霍英东研究院);Nanjing University(南京大学)
提出项目级Java基准JavaBench,包含4个项目、106个类和389个方法,评估LLM面向对象代码生成能力,发现LLM在项目级Java编程上远落后于本科生。
2024-10-11 cs.AI cs.LG cs.PL
PITMuS: A Tool for Automated Bug Dataset Generation via Source-Level Mutant Reconstruction
University of Texas at Dallas(德克萨斯大学达拉斯分校)
本文提出PITMuS工具,通过源级变异体重建生成自动化bug数据集,解决现有工具生成的变异体难以复现和利用的问题,为bug定位和修复技术提供结构化数据支持。
2026-08-04 cs.SE
Efficient Incremental Code Coverage Analysis for Regression Test Suites
针对全量代码覆盖率重复计算开销大且 RTS 与覆盖率分析不兼容的问题,提出基于最小测试子集的增量分析技术,并实现 iJaCoCo,在 22 个开源仓库上显著加速。
2024-10-29 cs.SE
Design and Implementation of Parallel Debugger and Profiler for MPJ Express
MPJ Express是一个消息传递系统,允许计算科学家在高性能计算(HPC)硬件上编写和执行并行Java应用程序。尽管MPJ Express软件在Java HPC社区中获得了成功的采用,但它目前不提供对调试和分析并行应用程序的任何支持,因此迫使其用户依赖手动和繁琐的调试/分析方法。对这些工具的支持对于帮助应用程序开发人员提高整体生产力至关重要。为了解决这个问题,我们已经开发了调试和分析工具的MPJ快递,这是本文的主要主题。这些工具的主要设计目标包括:1)保持与现有日志记录,调试和可视化工具的兼容性,2)通过扩展现有的调试/分析工具而不是重新发明轮子来构建这些工具。第一个工具名为MPJAR,构建在开源Eclipse集成开发环境(IDE)上。它提供了一个使用Eclipse插件开发环境(PDE)开发的基于Eclipse的插件。默认的Eclipse调试器目前不支持调试在计算集群上运行的并行应用程序。第二个工具名为MPJProf,是一个基于TuningandAnalysisUtility(TAU)的实用程序,TAU是一个开源的性能评估工具。我们的目标是利用TAU来生成配置文件和跟踪,从而对使用MPJ Express并行化的Java应用程序进行配置,这些配置文件和跟踪稍后可以使用paraprof和Jumpshot等现有工具进行可视化。在论文的最后,我们量化了使用MPJProf的开销,我们发现…
2014-08-27 cs.DC cs.SE
BlueCov: Integrating Test Coverage and Model Checking with JBMC
自动化测试用例生成工具帮助企业编写测试,并在进行代码更改时增加高回归测试覆盖率所提供的安全网。测试生成需要覆盖尽可能多的未覆盖代码,同时避免为现有测试套件已经覆盖的代码生成冗余测试。在本文中,我们提出了我们的工作在现实世界中的应用集成形式分析与自动测试用例生成的工具。测试用例的生成是基于使用Java有界模型检查器(JBMC)的覆盖率分析。模型检查器的反例可以转换为具有特定参数的Java方法调用。为了避免生成冗余测试,有必要以与JBMC生成其覆盖目标完全相同的方式测量覆盖率。每个现有的覆盖测量工具使用稍微不同的仪器,因此使用不同的覆盖标准。这使得与基于形式分析的测试用例生成器的集成变得困难。因此,我们开发了BlueCov作为一个特定的运行时覆盖率测量工具,它使用与JBMC完全相同的覆盖率标准。这种方法还允许增量测试用例生成,仅为先前未测试的代码生成测试覆盖率,例如,以完成现有的测试套件。
2022-12-30 cs.PL cs.SE
The Visual Debugger Tool
本文提出一种集成于IntelliJ IDEA的可视化调试工具,通过对象图图形化展示程序执行信息,以降低软件调试与维护成本。
2024-04-19 cs.SE
Beyond Coverage and Kill Scores: Empirically Measuring Test Suite Behavioural Gaps
University of British Columbia(不列颠哥伦比亚大学)
提出一种从自然语言文档和源码中提取预期方法级行为并映射到测试用例的方法,发现17.5%的预期行为未被测试,且行为差距与高覆盖率和变异分数不相关,表明行为覆盖是独立的测试充分性维度。
2026-06-09 cs.SE
Using CognitIDE to Capture Developers' Cognitive Load via Physiological Activity During Everyday Software Development Tasks
本文提出使用基于 IntelliJ 的插件 CognitIDE,在开发者执行日常软件开发任务时收集、映射并可视化其生理活动数据,以无干扰地捕获认知负荷,实验证明该插件能有效支持长达一小时的数据收集并反映任务期间的认知负荷变化。
2025-03-05 cs.SE
Small-Amp: Test Amplification in a Dynamically Typed Language
一些测试放大工具使用额外的测试用例来扩展手动创建的测试套件,以增加代码覆盖率。该技术是有效的,在这个意义上,它建议强大的和可理解的测试用例,通常采用的软件工程师。不幸的是,目前的测试放大技术严重依赖于程序分析技术,这些技术从静态类型语言中的显式类型声明中受益匪浅。在动态类型语言中,这种类型声明是不可用的,因此测试放大还没有找到适合程序设计语言的方法,如Smalltalk,Python,Ruby和JavaScript。我们建议利用分析信息-容易获得的执行相关的测试套件-推断必要的类型信息创建特殊的测试输入与相应的断言。我们在从包含大约400种测试方法的Pharo生态系统中的13个成熟项目中选择的52个测试类上评估了这种方法。我们在52个测试类别中的28个(53%)中至少显示了杀死新突变体和突变覆盖率的改进。此外,这些生成的测试是人类可以理解的:提交的11个pull请求中有8个被合并到主代码库中(72%)。这些结果与最先进的测试方法相当,因此我们得出结论,测试放大对于动态类型语言是可行的。
2022-04-14 cs.SE
What It Would Take to Use Mutation Testing in Industry--A Study at Facebook
传统上,突变测试会产生大量的程序小偏差,称为突变体。在Facebook这样规模的工业系统中,这样做是不可行的。我们不应该创建测试套件可能会失败的突变体,或者不给开发人员可操作的信号。为了解决这个问题,在本文中,我们半自动地从常见的Java编码错误语料库中学习错误诱导模式,并从导致Facebook操作异常的变化中学习。我们将突变与测量哪些测试恰好访问了突变的代码片段的检测相结合。超过15,000个生成的突变体的结果显示,超过一半的生成的突变体通过了Facebook严格的单元测试,集成测试和系统测试。此外,在一个有26名开发人员的案例研究中,除了两名开发人员之外,所有人都发现了自动检测到的测试漏洞的信息。因此,26人中几乎有一半会通过调整现有测试或创建新测试来对呈现给他们的突变体采取行动。其他人没有因为各种各样的原因,通常超出了突变测试的范围。如何将这些外部信息纳入突变体研究,以提高突变体的真实可操作性,这仍然是一个实际的挑战。
2021-01-27 cs.SE
CodeLens: An Interactive Tool for Visualizing Code Representations
Luxembourg Institute of Science and Technology(卢森堡科学技术研究院);University of Luxembourg(卢森堡大学)
本文介绍了 CodeLens,一个支持多种编程语言和四种代码表示类型的交互式可视化工具,旨在帮助开发者理解和探索代码表示并获取模型输入。
2023-07-27 cs.AI cs.LG cs.SE
SysMap: A Lightweight Software Visualization Tool to Analyze the Software Evolution of a System
软件可视化通过提供生动的说明来帮助理解系统。开发人员和分析人员都可以通过这种技术从高层次的角度浏览整个系统,以了解随着时间的推移发生的基本变化。近年来,人们提出了许多基于不同建筑隐喻(如太阳系、城市或公园)的软件可视化工具。一些解决方案只是在系统可视化方面工作,其中一些试图解释不同版本中软件的变化,仍然需要繁重的手动工作。考虑到这些限制,本文提出了一个轻量级的工具SysMap,需要不同版本的软件系统的源代码,提供这些系统的3D插图和其演变的图形统计。为了构建表示系统的图形元素,对源代码进行了研究,以找出不同的软件度量。为了进行实验,我们选择了几个开源java项目来找出必要的信息。尽管如此,这个工具肯定会提高开发人员和分析人员的工作效率,减少手动工作,并通过提供图形视图来理解软件随时间的演变。
2021-08-12 cs.SE
On the Distribution of "Simple Stupid Bugs" in Unit Test Files: An Exploratory Study
保证软件系统质量的一个关键方面是单元测试的实践。通过单元测试,开发人员验证产品源代码的正确性,从而验证系统在测试中的预期行为。然而,单元测试代码容易出现问题,从代码中的错误到糟糕的测试用例设计(即,测试气味)。在这项研究中,我们比较和对比了一种被称为“简单愚蠢错误”(SStuBs)的单语句错误修复在测试和非测试(即,生产)文件。我们的研究结果表明,SStuB更频繁地出现在非测试文件比在测试文件中,与大多数修复相关的代码与断言语句在测试文件中。此外,大多数显示SStuB的测试文件也显示测试气味。我们设想我们的研究结果使工具供应商能够更好地支持开发人员改善测试套件的维护。
2021-03-17 cs.SE
Source Code Optimization using Equivalent Mutants
一个变种是通过语法修改程序的源代码获得的程序;一个等价变种是一个变种,它在功能上等价于原始程序。突变体主要用于\emph{mutation testing},在推导试验套件时,获得等效突变体被认为是高度阴性的,尽管这些等效突变体可用于其他目的。我们提出了一种方法,认为等价突变体的价值,并利用它们的源代码优化。源代码优化增强程序的源代码,保持其行为。我们展示了一个程序,以实现源代码优化的基础上等价的突变体,并讨论适当的变异算子。Java和C程序的实验评估证明了所提出的方法的适用性。提出了一种基于等价突变体的源代码优化算法。它表明,只要适用,该方法可以优于传统的编译器优化。
2018-07-02 cs.SE
Towards Behavior Tree-Guided Vulnerability Detection with Lightweight LLMs
Örebro University(欧雷布罗大学)
本文提出用行为树(BT)作为中间表示,结合量化本地LLM Mistral Small 3.2 24B(Q4_K_M),在460个Java样本上验证其可提升漏洞检测性能,适配上下文窗口,为漏洞检测提供紧凑结构化表示。
2026-09-03 cs.CR cs.SE