Java Code Analysis and Transformation into AWS Lambda Functions
软件开发人员面临的问题是,要么使他们的编程模型适应执行模型(例如云平台),要么找到适当的工具来自动适应模型和代码。一个可以从自动化启用中受益的最新执行模型是Function-as-a-Service。自动化这个过程需要一个管道,其中包括代码分析,转换和部署的步骤。在本文中,我们概述了Poetizer的设计和运行时特性,Poetizer是一种专门针对Java源代码作为输入和AWS Lambda作为输出实现管道的工具。我们通过观察两个有代表性的Java软件项目的Poverzer行为,为这个具体的“FaaSification”过程提供技术和经济指标。
2017-02-17 cs.DC cs.SE
JUGE: An Infrastructure for Benchmarking Java Unit Test Generators
研究人员和实践者已经设计并实现了各种自动化测试用例生成器来支持有效的软件测试。这样的生成器存在于各种语言(例如,Java、C#或Python)和各种平台(例如,桌面、网络或移动应用程序)。这种发生器表现出不同的有效性和效率,这取决于它们旨在满足的测试目标(例如,库的单元测试与整个应用程序的系统测试)以及它们实现的底层技术。在这种情况下,从业人员需要能够比较不同的发电机,以确定最适合他们的要求,而研究人员寻求确定未来的研究方向。这可以通过系统地对不同发电机进行大规模评估来实现。然而,进行这种经验性评价并非易事,需要作出大量努力来收集基准,建立评价基础设施,并收集和分析结果。在本文中,我们介绍了我们的JUnit生成基准测试基础设施(JUGE)支持生成器(例如,基于搜索、基于随机、符号执行等)寻求自动化用于各种目的的单元测试的产生(例如,验证、回归测试、故障定位等)。其主要目标是通过标准化评估和比较过程,减少总体工作量,简化几个发电机的比较,并加强学术界和工业界之间的知识转移。自2013年以来,与基于搜索的软件测试研讨会一起举办的单元测试工具竞赛已经举办了八届,并使用和更新了JUGE。因此,越来越多来自学术界和工业界的工具(超过十种)在JUGE上进行了评估,这些工具多年来已经成熟,并可以确定未来的研究方向。
2022-10-28 cs.SE
An In-depth Study of Java Deserialization Remote-Code Execution Exploits and Vulnerabilities
如今,越来越多的应用程序使用了并行化。此技术基于从序列化字节流重建对象实例,可能是危险的,因为如果要验证的数据来自不受信任的源,则它可能使应用程序受到远程代码执行(RCE)等攻击。恶意化漏洞是如此重要,以至于它们被OWASP列为Web应用程序的十大安全风险之一。这主要是由应用程序开发过程中的错误及其依赖关系中的缺陷造成的,即,这些应用程序使用的库中的缺陷。以前的工作没有深入研究过网络化攻击:它们是如何执行的?如何引入和修补漏洞?漏洞在代码库中存在多长时间?为了更深入地了解这种重要的漏洞,我们进行了两个主要的分析:一个是攻击工具,即,Java库中存在的可利用代码片段,以及Java应用程序中存在的漏洞。对于第一个分析,我们通过运行256515个实验进行了探索性的大规模研究,在这些实验中,我们为19个公开可用的漏洞中的每一个改变了库的版本。这种攻击依赖于一个或多个Java库中存在的小工具的组合。Gadget是一种使用攻击者可以控制的对象或字段的方法。我们的目标是精确识别包含小工具的库版本,并了解小工具是如何引入的以及如何修补的。我们观察到,对类中一个看似无辜的细节进行修改--比如将其公开--已经可以引入一个小工具。此外,我们注意到,在所研究的库中,37.5%没有打补丁,这使得小工具可以用于未来的攻击。对于第二个分析,我们手动分析了104个虚拟化漏洞CVE,以了解漏洞是如何在实际的Java…
2022-08-17 cs.CR cs.SE
Badger: Complexity Analysis with Fuzzing and Symbolic Execution
涉及模糊测试和符号执行的混合测试方法在实现高代码覆盖率、发现各种软件应用程序中的细微错误和漏洞方面显示出有希望的结果。在本文中,我们描述獾-一种新的混合方法的复杂性分析,发现漏洞时发生的最坏情况下的时间或空间复杂度的应用程序是显着高于平均情况的目标。Badger使用模糊测试来生成一组不同的输入,其目的不仅是增加覆盖率,而且还与每个路径相关联的资源相关的成本。由于模糊可能无法执行深程序路径,由于其有限的知识的条件,影响这些路径,我们补充了分析与符号执行,这也是定制的搜索路径,增加资源相关的成本。符号执行特别擅长生成满足各种程序条件的输入,但它本身会遭受路径爆炸。因此,獾使用模糊和象征性执行串联,以利用他们的好处,克服他们的弱点。我们实现了我们的方法分析的Java程序,基于Kelinci和Symbolic Pathwords。我们在Java应用程序上评估了Badger,结果表明,与模糊或符号执行相比,我们的方法在生成最坏情况的执行方面要快得多。
2018-06-08 cs.SE
A tool for visualizing the execution of programs and stack traces especially suited for novice programmers
软件工程教育和培训存在由于缺乏关于程序执行过程的基本知识而引起的障碍。这篇文章致力于帮助可视化过程的特殊工具的开发。我们分析了现有的工具,并提出了一种新的方法来堆栈和堆可视化。该解决方案能够很好地克服现有工具和套件的主要缺点,用于分析Java和C/C++编写的程序。
2017-11-30 cs.SE
Faster Variational Execution with Transparent Bytecode Transformation
变分执行是一种新的动态分析技术,用于探索高度可配置的系统和精确跟踪信息流。它能够有效地分析许多配置,积极共享冗余的程序执行。变式执行的思想已经被证明是有效的探索程序中的变化,特别是当配置空间增长失控。现有的变分执行的实现通常需要繁重的运行时解释器,这是艰苦的和容易出错的。此外,这种方法的性能是次优的。例如,最先进的Java变分执行解释器VarexJ,对于中小型Java程序,单次执行的执行速度要慢100到800倍。我们不修改现有的JVM,而是建议转换现有的字节码,使其可变,这样它就可以在未修改的商品JVM上执行。我们的评估表明,在最先进的性能上有显着的改善,具有2至46倍的加速比,并在共享计算的高效率。
2018-09-11 cs.PL cs.SE
An approach for Test Impact Analysis on the Integration Level in Java programs
测试影响分析是一种获取受代码更改影响的测试子集的方法。这种方法主要应用于单元测试,在这种测试中,代码和相关测试之间的联系很容易获得。然而,在集成级别上,通过编程找到这样的链接并不简单,特别是当集成测试保存在单独的存储库中时。我们提出了一种基于代码变化的运行时分析来选择集成测试的方法,以减少测试执行开销。我们提供了一组工具和框架,可以插入现有的CI/CD管道。我们已经评估了一系列的开源Java程序的方法,发现$\approx$ 50\%的测试减少,并在少数情况下超过80\%。我们还将该方法应用于生产中的大规模商业系统,并发现了类似的结果。
2022-11-14 cs.SE
ClassSpy: Java Object Pattern Visualization Tool
现代的java程序由大量的类和在程序执行过程中实例化的大量对象组成。软件开发人员总是渴望知道为每个类创建的对象的数量。这些信息有助于开发人员理解程序的包/类并优化其代码。然而,理解如此大量的信息并不是一项微不足道的任务。可视化有助于在单个屏幕上描述这些信息并有效地理解它。本文提出了一种可视化的方法,描述了在程序执行过程中实例化的所有对象的信息。所提出的技术具有更高的空间效率和可扩展性,可以处理大量数据集,同时有助于识别关键程序组件。这个易于使用的界面为用户提供了一个环境,在一个屏幕上浏览整个对象。所提出的方法允许在类、线程和方法级别对对象进行排序。所提出的方法的有效性和可用性,通过案例研究。
2014-06-09 cs.PL cs.SE
Translating PL/I Macro Procedures into Java Using Automatic Templatization and Large Language Models
IBM Research(IBM 研究院)
本文提出了一种基于模板化和大语言模型的方法,用于将PL/I宏过程翻译成Java,以生成能复现原始行为的代码。
2025-12-06 cs.SE
An Empirical Study on Failed Error Propagation in Java Programs with Real Faults
在测试过程中,开发人员可以在方法的外部或内部放置Oracle。给定错误的执行状态,即,一个与预期的错误不同的错误,如果它被放置在不能访问不正确的程序状态或程序状态不再被破坏的程序点处,则Oracle可能无法暴露该错误。在这种情况下,oracle会受到失败的错误传播的影响。我们进行了一项实证研究,以衡量失败的错误传播缺陷4J,参考基准的Java程序与真正的故障,考虑所有6个项目(386个真正的错误和459个固定的方法)。我们的研究结果表明,失败的错误传播的流行是可以忽略不计的测试时,在单元级。然而,当提供系统级输入时,失败的错误传播的发生率大幅增加。这表明,方法后置条件仅根据外部可观察状态/数据进行预测就足够了,并且在系统级测试时应检查中间步骤。
2020-11-21 cs.SE
Technical Report: A Formal Semantics for Java Symbolic Evaluation using Large-Block Encoding
Faculty of Computer and Information Sciences, Ain Shams University(艾因夏姆斯大学计算机与信息科学学院);Faculty of Computing and Information Sciences, Egypt University of Informatics(埃及信息大学计算机与信息科学学院);Faculty of Computer Science and Engineering, University of Minnesota(明尼苏达大学计算机科学与工程学院);Luddy School of Informatics, Computing, and Engineering, Indiana University(印第安纳大学卢迪信息、计算与工程学院);Amazon Web Services(亚马逊网络服务);Zoox, Inc.(Zoox公司)
本文针对符号执行工具自身正确性缺乏形式审查的问题,对带路径合并的符号执行进行形式化处理,以Java Ranger为对象证明其转换的健全性,确立其路径合并过程可保留程序语义。
2026-08-06 cs.SC cs.SE
Parichayana: An Eclipse Plugin for Detecting Exception Handling Anti-Patterns and Code Smells in Java Programs
反模式和代码气味是源代码中的标志,它们不是缺陷(不会阻止程序运行,也不会导致编译错误),而是更深层次和更大问题的指标。异常处理是一种编程构造,设计用于处理异常或异常条件(改变程序执行的正常流程)的发生。在本文中,我们提出了一个Eclipse插件(称为Parichayana),用于检测Java程序中的异常处理反模式和代码气味。Parichayana能够自动检测几个常见的例外处理编程错误。我们扩展了Eclipse IDE,并通过Parichayana插件(托管在GitHub上的免费开源)创建了新的菜单项和相关操作。我们比较和对比Parichayana与几个代码气味检测工具,并证明我们的工具提供了独特的能力,在现有的工具。我们已经创建了一个更新站点,开发人员可以使用Eclipse更新管理器从我们的站点安装Parichayana。我们在几个基于Java的大型开源项目中使用了Parichyana,并检测到异常处理反模式的存在
2016-12-31 cs.SE
A Journey Among Java Neutral Program Variants
中性程序变体在功能上与原始程序相似,但实现的行为略有不同。诸如近似计算或遗传改进之类的技术共享这样的直觉,即增强的潜力在于这些可接受的行为差异(例如,增强的性能或可靠性)。然而,通过推测性转换自动合成中性程序变体仍然是一个关键挑战。这项工作旨在描述Java程序中的塑料代码区域,即,容易合成中性程序变体的区域。我们的实证研究依赖于6个真实世界的Java程序的自动变化。首先,我们用三种最先进的推测转换来转换这些程序:添加、替换和删除语句。我们得到了23445个中性变体,从中我们收集了以下新颖的见解:开发人员自然地编写支持细粒度行为更改的代码;语句删除是一种令人惊讶的有效推测转换;高级设计决策,例如数据结构的选择,是可以在保持功能的同时进化的自然点。其次,我们设计了3个新的投机转换,针对特定的塑料区域。新的实验表明,分别有60%、58%和73%的合成变体(总共175688个)是中性的,并且表现出与原始变体不同的执行轨迹。
2019-06-22 cs.SE
BoostAPR: Boosting Automated Program Repair via Execution-Grounded Reinforcement Learning with Dual Reward Models
State Key Laboratory of Networking and Switching Technology(网络与交换技术国家重点实验室);Beijing University of Posts and Telecommunications(北京邮电大学);University of Luxembourg(卢森堡大学)
BoostAPR通过基于执行的强化学习与双奖励模型,解决程序修复中反馈稀疏和奖励粗粒度的问题,实现40.7%的SWE-bench Verified准确率,展现强大的跨语言泛化能力。
2026-09-21 cs.AI cs.SE
Efficient and Expressive Bytecode-Level Instrumentation for Java Programs
我们提出了一个有效的和富有表现力的工具,在字节码级的Java程序的仪器。BISM(Bytecode-Level Instrumentation for Software Monitoring)是一个轻量级的Java字节码插装工具,它具有一种表达性高的高级控制流感知插装语言。该语言受到面向方面编程范例的启发,将插装模块化为单独的Transformers,封装连接点选择和内联建议。BISM允许捕获从字节码指令到方法执行的连接点,并提供全面的静态和动态上下文信息。它以两种检测模式运行:构建时和加载时。BISM还提供了一种机制来组合Transformers并自动检测它们在基本程序中的冲突。组合中的Transformers可以控制它们的通知和来自基本程序的其他指令的可见性。我们展示了BISM的几个示例应用程序,并使用三个实验证明其有效性:安全场景,金融交易系统和一般运行时验证案例。结果表明,BISM插装引起低的运行时间和内存开销。
2021-06-02 cs.PL cs.SE
AI-driven Java Performance Testing: Balancing Result Quality with Testing Time
University of L’Aquila(拉奎拉大学)
针对Java性能测试中预热阶段估计不准导致结果质量差或测试时间长的问题,提出基于AI时间序列分类的动态终止预热框架,在50万JMH测量片段上实验,最多使35.3%的微基准测试获得质量或时间的净提升。
2024-09-14 cs.AI cs.LG cs.PF
Enhancing Symbolic Execution of Heap-based Programs with Separation Logic for Test Input Generation
符号执行是测试输入生成的一种成熟方法。尽管在数值域上取得了巨大的成功,现有的基于堆的程序的符号执行技术是有限的,由于缺乏一个简洁和精确的描述符号值在无界堆。在这项工作中,我们提出了一个新的符号执行方法的堆为基础的程序的基础上分离逻辑。我们的建议的本质是上下文敏感的惰性初始化,有效的测试输入生成的新方法。我们的方法在两个方面不同于现有的方法。首先,我们的方法是基于分离逻辑,这使我们能够准确地捕捉基于堆的程序的先决条件,使我们避免产生无效的测试输入。其次,我们只生成完全初始化的测试输入,这是更有用的,在实践中相比,那些部分初始化的测试输入所产生的最先进的工具。我们已经实现了我们的方法作为一个工具,称为Java Starcraft,并评估了一组程序与复杂的堆输入。实验结果表明,该方法显著减少了无效测试输入的数量,提高了测试覆盖率。
2019-09-16 cs.SE
CoTran: An LLM-based Code Translator using Reinforcement Learning with Feedback from Compiler and Symbolic Execution
Georgia Institute of Technology(佐治亚理工学院);University of Toronto(多伦多大学);University of California San Diego(加利福尼亚大学圣迭戈分校);Columbia University(哥伦比亚大学)
针对现有LLM代码翻译方法编译可靠性与功能等价性不足的问题,本文提出CoTran工具,通过结合编译器与符号执行测试反馈的强化学习微调LLM,在超5.7万组Java-Python代码对基准上,相较现有工具显著提升了编译准确率与功能等价准确率。
2024-10-30 cs.AI cs.PL cs.SE
A Soundness and Precision Benchmark for Java Debloating Tools
针对 Java 去臃肿工具,构建包含 59 个测试用例的 Deblometer 基准,评估 Deptrim、JShrink 和 ProGuard,发现所有工具均存在移除必要构造导致的不正确性问题,需改进以保障软件可靠性。
2025-10-23 cs.SE
Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs
我们提出了NOPOL,一种自动修复错误条件语句的方法(即,if-then-else语句)。这种方法将一个有缺陷的程序和一个测试套件作为输入,并生成一个带有条件表达式的补丁作为输出。测试套件需要包含通过测试用例,以模拟程序的预期行为,以及至少一个失败的测试用例,以揭示要修复的错误。NOPOL的过程包括三个主要阶段。首先,NOPOL采用天使修复本地化,以确定在测试执行过程中的条件的预期值。其次,运行时跟踪收集用于收集变量及其实际值,包括原始数据类型和面向对象的特征(例如,空性检查),以用作补丁生成的构建块。第三,NOPOL将这些收集的数据编码成可满足性模理论(SMT)问题的实例,然后将SMT实例的可行解翻译回代码补丁。我们评估NOPOL的22个真实世界的错误(16个错误与错误的IF条件和6个错误与缺少先决条件)在两个大型开源项目,即Apache Commons Math和Apache Commons Lang。这些错误的实证分析表明,我们的方法可以有效地修复错误的IF条件和缺少先决条件。我们说明了NOPOL的能力和局限性,使用真正的错误修复的案例研究。
2018-11-10 cs.SE
Bears: An Extensible Java Bug Benchmark for Automatic Program Repair Studies
错误基准测试对于经验性地评估自动程序修复工具是必不可少的。在本文中,我们提出了熊,一个项目收集和存储错误到一个可扩展的错误基准自动修复研究在Java中。bug的收集依赖于持续集成(CI)的提交构建状态,以从GitHub上托管的开源项目中找到潜在的bug和补丁程序版本对。每一对程序版本都通过一个管道,在管道中尝试复制一个错误及其补丁。再现流水线的核心步骤是在两个程序版本上执行程序的测试套件。如果在有缺陷的程序版本候选中发现测试失败,并且在其修补程序版本候选中没有发现测试失败,则错误及其修补程序成功再现。Bears的独特之处在于使用CI(构建)来识别有缺陷和打补丁的程序版本候选者,这在过去几年中已被广泛采用在开源项目中。这种方法允许我们从各种各样的项目中收集bug,而不仅仅是使用bug跟踪系统的成熟项目。此外,Bears被设计为公开可用,并通过在给定的GitHub存储库中自动创建带有bug的分支来轻松扩展研究社区,这些分支可用于Bears存储库中的拉取请求。我们在本文中介绍的方法所采用的熊,我们提供了版本1.0的熊,其中包含251个可重复的错误收集72个项目,使用特拉维斯CI和Maven构建环境。
2019-01-17 cs.SE
The Visual Debugger Tool
本文提出一种集成于IntelliJ IDEA的可视化调试工具,通过对象图图形化展示程序执行信息,以降低软件调试与维护成本。
2024-04-19 cs.SE
Compiler Testing using Template Java Programs
我们提出了JAttack,一个框架,使基于模板的测试编译器。使用JAttack,开发人员编写一个模板程序,该程序描述了一组要生成的程序,并作为编译器的测试输入。这样的框架使开发人员能够将他们的领域知识结合在测试编译器上,给出了一个基本的程序结构,允许探索可以触发复杂编译器优化的复杂程序。开发人员用宿主语言(Java)编写一个模板程序,其中包含需要JAttack填补的漏洞。每一个使用领域特定语言编写的洞都在扩展抽象语法树(eAST)中构造一个节点。eAST节点定义孔的搜索空间,即,一组表达式和值。JAttack通过执行模板生成程序,并通过随机选择表达式和值(在由漏洞定义的搜索空间内可用)来填充每个漏洞。此外,我们引入了几个优化,以减少JAttack的生成成本。虽然JAttack可用于测试各种编译器功能,但我们展示了它在帮助测试即时(JIT)Java编译器方面的功能,这些编译器在执行足够数量的执行后会在运行时进行优化。使用JAttack,我们发现了六个关键的bug,这些bug已经被Oracle开发人员确认。其中四个是以前未知的,包括两个未知的CVE(常见漏洞和暴露)。JAttack展示了将开发人员的领域知识(通过模板)与随机测试相结合以检测JIT编译器中的错误的强大功能。
2022-09-09 cs.PL cs.SE
AlgoTouch: An Execution-Centered Approach to Incremental Construction of Imperative Programs
University of South Brittany(南布列塔尼大学);IRISA
提出AlgoTouch系统,通过直接操作程序数据并记录执行行为,增量构建命令式程序,自动合成控制结构并生成多种主流语言代码。
2026-06-02 cs.SE
DifFuzz: Differential Fuzzing for Side-Channel Analysis
侧信道攻击允许攻击者通过观察程序相对于资源的行为(例如执行时间、消耗的内存或响应大小)来发现秘密程序数据。侧通道漏洞很难推理,因为它们涉及分析多个程序路径上资源使用之间的相关性。我们提出了DifFuzz,一种基于模糊的方法,用于检测与时间和空间相关的侧通道漏洞。DifFuzz通过分析程序的两个版本并使用资源引导的搜索来找到最大化秘密依赖路径之间的资源消耗差异的输入,从而自动检测这些漏洞。DifFuzz的方法是通用的,可以应用于任何语言编写的程序。在本文中,我们提出了一种实现,目标分析的Java程序,并使用和扩展的Kelinci和AFL模糊。我们评估了大量的Java程序的DifFuzz,并证明它可以揭示流行的应用程序中的未知的侧通道漏洞。我们还表明,DifFuzz比较有利的Blazer和Themis,两个国家的最先进的分析工具,在Java程序中找到侧通道。
2019-02-26 cs.CR cs.SE
An Execution-Verified Multi-Language Benchmark for Code Semantic Reasoning
Singapore Management University(新加坡管理大学);Monash University(墨尔本大学);Nanjing University of Science and Technology(南京理工大学);GovTech Singapore(新加坡政府科技局)
本文提出TraceEval,首个经过执行验证的多语言代码语义推理基准,通过验证执行消除标注偏差,评估10个LLM在零样本下的表现,展示了其在代码语义推理中的有效性。
2026-05-10 cs.AI cs.SE
On-the-fly Query-Based Debugging with Examples
程序错误很难发现,因为在错误发生的时间和程序员发现错误的时间之间存在因果差距。虽然调试技术(如条件断点和数据断点)有助于在简单情况下找到错误原因,但在许多情况下,它们无法有效地弥合因果差距。基于查询的调试器为程序员提供了一个有效的工具,它通过在被调试程序运行时不断检查对象间的关系来提供即时的错误警报。为了使基于查询的调试器在程序执行中以便携式的方式,我们提出了高效的Java类文件插装,并讨论替代技术。虽然动态调试器的开销比基于查询的动态调试器高,但它提供了额外的交互能力和灵活性,同时保持了完全的可移植性。为了加快动态查询评估,我们的调试器在可移植的Java实现使用的组合,程序插装,加载时代码生成,查询优化,和增量重新评估。本文讨论了动态调试,并演示了基于查询的调试器应用程序调试Java煤气罐小程序以及SPECjvm 98套件应用程序。
2000-11-16 cs.PL cs.SE
DISTEA: Efficient Dynamic Impact Analysis for Distributed Systems
动态影响分析是一种基本的技术,用于理解特定程序实体或对它们的更改对具体执行的程序其余部分的影响。然而,现有的技术对于在多个并发进程中运行的分布式程序是不适用的或者是非常有限的效用。本文介绍了DISTEA,分布式系统的动态影响分析的技术和工具。通过对分布式方法执行事件进行部分排序并从排序的事件中推断因果关系,DISTEA可以预测在流程边界内和跨流程边界传播的影响。我们实现了DISTEA for Java,并将其应用于四个不同类型和大小的分布式程序,包括两个企业系统。我们还评估了DISTEA的精度和实用性,并通过两个案例研究展示了它在程序理解中的应用。结果表明,DISTEA是高度可扩展的,比现有的替代品更有效,并有助于理解分布式系统及其执行。
2016-04-15 cs.DC cs.SE
A Direct Symbolic Execution of SQL Code for Testing of Data-Oriented Applications
符号执行是一种能够自动生成测试输入(和输出)的技术,它在要测试的程序中执行一组执行路径。如果路径覆盖了被测代码的足够部分,则测试数据提供了程序实际行为的代表性视图,这尤其使得能够检测错误和纠正故障。关系数据库在软件中无处不在,但操作它们的代码片段的符号执行仍然是一个不小的问题,特别是因为这种数据库的复杂结构和SQL语句的复杂行为。在这项工作中,我们定义了一个直接的符号执行数据库操作代码,并将其与一个更传统的符号执行正常的程序代码。数据库表由关系符号表示,SQL语句由这些符号上的关系约束表示,符号表示程序的正常变量。基于这些原则的算法的符号执行的Java方法,实现业务用例的读写关系数据库,后者受到数据完整性约束。该算法被集成在一个测试生成工具,并在示例代码进行了实验。工具生成的约束的目标语言是SMT-Lib标准,使用的求解器是Microsoft Z3。结果表明,该方法能够在合理的时间内生成有意义的测试数据,包括有效的数据库内容。特别是,Z3求解器被证明是更可扩展的比合金求解器,在我们以前的工作中使用,解决关系约束。
2015-01-21 cs.DB cs.SE
Advancing BDD Software Testing: Dynamic Scenario Re-Usability And Step Auto-Complete For Cucumber Framework
本文提出在Cucumber Java框架中实现Gherkin场景内场景复用及VSCode步骤定义自动补全,并集成Jenkins,以提升BDD测试套件的模块化、编写效率与持续部署自动化水平。
2024-02-24 cs.CY cs.PL cs.SE