Development of a Web Platform for Code Peer-Testing
作为编程课程形成性和总结性评估的一部分,学生根据给定的规范开发编程工件。这些作品由教师进行评价。在评估结束时,学生会收到反馈和分数。提供关于编程工件的反馈是需要时间的,并且可能使反馈到达得太晚而不能有效地用于学生的学习。我们建议将软件测试与同行反馈相结合,这被称赞为提供了一个及时有效的学习活动与程序测试。在本文中,我们报告了一个Web平台的开发,通过程序测试的同行反馈的编程工件。我们讨论了我们的同行测试平台的开发过程中,教师和学生的通知。
2020-08-13 cs.SE
Finding Failure Causes through Automated Testing
程序失败。在什么情况下会发生这种故障?一个单一的算法,增量调试算法,足以确定这些故障诱导的情况。增量调试系统地和自动地测试程序,以隔离导致失败的环境,例如程序输入,程序代码的更改或执行的语句。
2000-12-14 cs.SE
ProbTest: Unit Testing for Probabilistic Programs (Extended Version)
本文提出黑盒单元测试方法 ProbTest,基于优惠券收集者问题自动确定概率程序所需测试次数并提供统计保证,以 PyTest 插件实现,并在 Gymnasium 和随机数据结构案例中评估。
2025-09-02 cs.SE
Cross-coverage testing of functionally equivalent programs
该研究提出功能等价程序的交叉覆盖概念,将其应用于测试套件增强,证实交叉测试比随机基线更能提升覆盖率,且可发现人工构造的功能缺失故障,为冗余软件测试提供新方法。
2023-04-28 cs.SE
A Symbolic Execution Algorithm for Constraint-Based Testing of Database Programs
在所谓的基于约束的测试中,符号执行是一种常见的技术,用作为命令式程序生成测试数据的过程的一部分。数据库在软件中无处不在,因此对操纵数据库的程序进行测试对于提高软件的可靠性至关重要。本文提出了一种基于约束的数据库程序测试的符号表示算法,并进行了实验评估。首先,我们描述了SimpleDB,一种形式语言,它提供了一个最小的和定义良好的语法和语义,以模拟程序和数据库之间的常见交互场景。其次,我们详细介绍了所提出的算法,符号执行的SimpleDB模型。该算法将SimpleDB程序视为对一组关系变量的操作序列,对数据库表和程序变量进行建模。通过将程序的这种关系模型与经典的静态符号执行相结合,该算法可以为程序的控制流图中的任何有限路径生成一组路径约束以进行测试。这些约束的解是程序的测试输入,包括数据库的初始内容。当相对于这些输入执行程序时,保证遵循生成约束的路径。最后,该算法进行了实验评估,使用有代表性的SimpleDB模型。
2015-01-23 cs.SE
Distinguishability-guided Test Program Generation for WebAssembly Runtime Performance Testing
本文提出WarpGen方法,通过从历史问题触发测试程序中提取算子并插入种子程序生成测试程序,并以可区分性指标评估质量,在三个Wasm运行时中发现七个新性能问题。
2024-12-28 cs.SE
Solsmith: Solidity Random Program Generator for Compiler Testing
本文提出并实现Solidity编译器测试程序生成器Solsmith,通过独特程序生成策略和差分测试验证其有效性,发现四个已确认编译器缺陷。
2025-06-04 cs.SE
QuanFuzz: Fuzz Testing of Quantum Program
目前,量子程序得到了广泛的应用和迅速的发展.然而,缺乏测试方法限制了它们的质量。与传统程序不同的输入格式和运算符使得这个问题很难解决。在本文中,我们提出了QuanFuzz,一个基于搜索的测试输入生成器的量子程序。我们定义了量子敏感信息来评估量子程序的测试输入,并使用矩阵生成器来生成具有更高覆盖率的测试用例。首先,我们从量子源代码中提取量子敏感信息--对这些量子寄存器的测量操作以及与这些测量结果相关联的敏感分支。然后,我们使用敏感信息引导的算法变异的初始输入矩阵,并选择那些提高量子寄存器的值的概率权重的矩阵来触发敏感分支。该进程一直迭代,直到敏感分支被触发。我们在基准测试上测试了QuanFuzz,与传统的测试输入生成相比,覆盖率提高了20% - 60%。
2018-10-16 cs.SE
A Theoretical Framework for Understanding Mutation-Based Testing Methods
在突变分析领域,突变是突变程序的系统生成(即,变种人)从一个原始程序。变异的概念已被广泛应用于各种测试问题,包括测试集选择,故障定位和程序修复。然而,令人惊讶的是,很少有人关注基于突变的测试方法的理论基础,使得难以理解,组织和描述各种基于突变的测试方法。本文的目的是考虑一个理论框架来理解基于突变的测试方法。虽然一般测试有一个坚实的测试框架,但这与基于变异的测试方法不一致,因为它关注的是测试程序的正确性,而基于变异的测试的本质是测试程序(包括突变体)之间的差异。在本文中,我们开始我们的框架的建设,定义了一个新的测试因素,称为测试区分,转换测试的范式从正确性的概念,差异的概念。我们正式定义一组测试的程序的行为差异作为一个数学向量,称为d-向量。我们探索了由d-向量表示的多维空间,并提供了一个描述空间的图形模型。基于我们的框架和形式化,我们解释现有的基于突变的故障定位方法和突变集最小化的应用,并确定新的影响,为未来的工作。
2016-01-25 cs.SE
Robustness Testing of Intermediate Verifiers
程序验证器也不能避免几乎影响每一个软件的bug。此外,它们经常表现出脆弱的行为:它们的性能随着输入程序如何表达的细节而发生显著变化,这些细节应该是无关紧要的,比如独立声明的顺序。这种健壮性的缺乏使用户感到沮丧,他们必须花费大量的时间来弄清楚工具的特性,然后才能有效地使用它。本文介绍了一种技术来检测缺乏程序验证器的鲁棒性,该技术是轻量级的,全自动的,因为它是基于测试方法(如突变测试和变形测试)。其关键思想是生成最初通过验证的程序的许多简单变体。通过构造,所有变体都等同于原始程序;因此,任何未通过验证的变体都表明验证器缺乏鲁棒性。我们实现了我们的技术在一个工具,称为“mugie”,它的操作程序写在流行的布吉语言验证作为中间表示在众多的程序验证。针对135个Boogie程序的实验表明,脆性行为发生得相当频繁(16个程序),并且不难触发。基于这些结果,本文讨论了脆性行为的主要来源,并提出了提高鲁棒性的措施。
2018-05-08 cs.SE
Towards Automated Boundary Value Testing with Program Derivatives and Search
在测试软件时,一种自然且经常使用的策略是在边界处使用输入值,即预期行为变化最大的地方,这种方法通常称为边界值测试或分析(BVA)。尽管这一直是一个关键的测试思想,但很难明确定义和形式化。因此,它也很难自动化。在本研究报告中,我们提出了一个这样的形式化的BVA,以类似的方式如何在数学中定义函数的导数,考虑(软件)程序的衍生物。我们定义的关键是输入和输出之间的距离的概念,我们可以形式化,然后根据信息论的思想进行量化。然而,对于我们的(黑盒)方法是实用的,必须搜索具有特定属性的测试输入。耦合它与搜索为基础的软件工程,因此需要,我们讨论了如何程序衍生物可以被用来作为和健身功能。这个简短的说明不允许更深入的经验调查,但我们使用一个简单的说明性例子来介绍主要思想。通过结合程序的衍生物与搜索,我们因此提出了一个实用的,以及理论上有趣的技术自动边界值(分析和)测试。
2019-05-27 cs.SE
NovaQ: Improving Quantum Program Testing through Diversity-Guided Test Case Generation
针对量子程序可靠性保障需求,本文提出多样性引导测试框架NovaQ,结合分布式生成器与新颖性评估模块,实验显示其在多样性和bug检测上优于现有基线。
2025-09-05 cs.SE
On Extracting Unit Tests from Interactive Programming Sessions
软件工程方法论建议开发人员应该捕获他们的努力,以确保程序在可重复和自动化的工件中正确运行,例如单元测试。然而,当从探索性测试到脚本测试的范围内观察开发人员活动时,我们发现许多工程活动都包括探索性测试的爆发。在本文中,我们建议利用这些探索性的测试突发自动提取脚本测试从这些会话的记录。为了做到这一点,我们窃听开发环境,这样我们就可以记录所有的程序输入,所有用户发出的函数调用,以及探索性测试会话的所有程序输出。然后,我们建议使用机器学习(即聚类)从这些记录中实时提取脚本测试用例。我们概述了两个早期原型,一个是静态的,一个是动态的。我们通过例子概述了这个想法如何融入编程的更大研究方向。
2012-12-08 cs.SE
FlakiMe: Laboratory-Controlled Test Flakiness Impact Assessment. A Case Study on Mutation Testing and Program Repair
许多关于软件测试的研究都隐含着这样的假设:测试失败是确定性的,它们总是见证相同缺陷的存在。然而,这种假设并不总是正确的,因为一些测试失败是由于所谓的测试失败,即,不确定结果的测试。不幸的是,重复测试对测试和依赖于测试的活动(如突变测试和自动程序修复)有很大的影响。为了解决这个问题,我们引入了一个测试片状评估和实验平台,称为FlakiMe,支持播种(可控)程度的片状到一个给定的测试套件的行为。因此,FlakiMe为研究人员提供了在实验室控制条件下调查测试片状性对其技术影响的方法。我们使用FlakiME报告案例研究的结果和见解,这些案例研究评估了片状性对突变测试和程序修复的影响。这些结果表明,5%的片状故障足以影响突变评分,但效果大小是适度的(2% - 4%),而它完全消除了程序修复修补50%的主题程序的能力。我们还观察到,flakiness具有特定于案例的效果,这主要会破坏许多测试所覆盖的bug的修复。此外,我们发现,最小量的用户反馈足以减轻片状的影响。
2019-12-06 cs.SE
Search-Based Quantum Program Testing via Commuting Pauli String
Simula Research Laboratory(Simula 研究实验室);University of Oslo(奥斯陆大学);Oslo Metropolitan University(奥斯陆都市大学);National Institute of Informatics(信息学国立研究所)
SB-QOPS通过交换Pauli字符串提出了一种基于搜索的量子程序测试方法,有效提高了测试效率并实现了高故障检测率。
2026-02-12 cs.SE
MorphQ: Metamorphic Testing of the Qiskit Quantum Computing Platform
MorphQ提出首个针对量子计算平台的蜕变测试方法,通过程序生成器和量子蜕变关系缓解预言机问题,在Qiskit上两天生成超8000个程序对,发现13个错误,其中9个已确认。
2023-02-09 cs.SE
Testing Multi-Subroutine Quantum Programs: From Unit Testing to Integration Testing
本文针对多子程序量子程序的测试需求,提出从单元到集成测试的完整测试准则与技术,涵盖IO分析、关系检查、结构及行为测试等,并通过变异体和随机输入验证了方法的有效性。
2024-05-24 cs.SE quant-ph
Is Measurement Enough? Rethinking Output Validation in Quantum Program Testing
Southwest Jiaotong University(西南交通大学);University of Luxembourg(卢森堡大学);Kyushu University(九州大学);Zhejiang University(浙江大学)
该研究通过实证分析量子程序测试中的输出验证方法,对比基于测量与基于状态向量的验证,发现前者适用于简单检查,后者更利于复杂行为评估。
2025-10-19 cs.SE
Search-based Testing for Scratch Programs
基于块的程序设计语言使年轻的学习者能够快速实现有趣的程序和游戏。Scratch编程环境在这方面特别成功,在撰写本文时,它拥有超过5000万注册用户。虽然Scratch简化了创建语法正确的程序,但学习者和教育者仍然经常需要反馈和支持。动态程序分析可以实现这种支持的自动化,但是对于Scratch程序来说,动态分析所需的测试套件通常不存在。然而,可以将Scratch的测试生成作为搜索问题。在本文中,我们介绍了一种方法,自动生成测试套件的Scratch程序使用语法进化。语法进化的使用清楚地将搜索编码与特定于框架的实现细节分开,并允许我们使用高级测试加速技术。我们实现了我们的方法作为晶须测试框架的扩展。对Scratch程序的评价表明了该方法的潜力。
2020-09-09 cs.SE
Geometric Theory for Program Testing
将程序验证的形式化方法推广到程序测试。它们的结合旨在为可靠的程序开发、测试和演进带来好处。我们的几何测试理论旨在作为测试环境的规范,包括作为工具链的最后阶段,帮助专业程序员,业余爱好者和计算机科学的学生。测试环境包括一个自动化算法,它可以定位已经运行的测试中的错误,并帮助纠正它们。它通过在监视器屏幕上显示被测程序执行过程中的因果链的条形图来实现这一点。然后,可以按照熟悉的卫星导航方式在地图上的道路上向后导航该图。这将显示应修改程序以删除错误的位置的选择。
2022-06-05 cs.PL cs.SE
Quantum Program Testing Through Commuting Pauli Strings on IBM's Quantum Computers
针对工业量子程序缺乏完整规约且难与错误缓解兼容的问题,本文提出基于对易 Pauli 字符串的 QOPS 测试方法,并在近19.5万个程序和三台 IBM 真机上验证其完美分类效果。
2024-08-01 cs.SE
Enhancing NeuroEvolution-Based Game Testing: A Branch Coverage Approach for Scratch Programs
本文针对Scratch游戏测试提出基于分支覆盖的适应度函数扩展NEATEST框架,引导神经进化最大化分支探索,实验表明其比语句覆盖方法具有更高的分支覆盖率和更低的故障误报率。
2025-07-12 cs.SE
A Black-box Testing Framework for Oracle Quantum Programs
Institute of High Energy Physics, Chinese Academy of Science(中国科学院高能物理研究所);Kyushu University(九州大学)
本文提出一个黑盒测试框架,用于测试通用量子 oracle 程序,通过定义程序并建立理论基础,开发原型工具并进行实验验证,以提高量子软件的可靠性。
2026-03-17 cs.SE quant-ph
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
Prioritization of Metamorphic Relations to reduce the cost of testing
oracle是一种机制,用于确定程序执行测试用例的输出是否正确。对于机器学习程序,这样的预言是不可用的或太难应用。变形测试是一种使用变形关系的测试方法,变形关系是被测软件的必要属性,有助于验证程序的正确性。变形关系的优先级有助于降低变形测试的成本[1]。然而,基于代码覆盖率对变形关系进行优先级排序对于为机器学习程序对MR进行优先级排序通常不是有效的,因为机器学习模型的决策逻辑是从训练数据中学习的,并且可以利用单个测试输入容易地实现100%代码覆盖率。为此,在这项工作中,我们提出了一个具有成本效益的方法的基础上的多样性的来源和后续数据集的优先级的变形关系的机器学习程序。我们表明,所提出的基于数据多样性的优先级排序方法相比,基于代码覆盖率的方法,故障检测的有效性提高了40%,并减少了29%的时间来检测故障时相比,随机执行的MR。总体而言,我们的方法导致节省时间和成本在测试过程中。
2022-09-01 cs.SE
Metamorphic Testing of Transpilers via Mutation Consistency of Programs
University of Milano-Bicocca(米兰比可卡大学)
本文针对转译器测试难题,提出基于转译后程序突变一致性的变形测试技术,实现工具MCP-Tester,案例研究显示其能发现纯模糊测试漏检的故障。
2026-08-03 cs.SE
Equivalence, Identity, and Unitarity Checking in Black-Box Testing of Quantum Programs
本文提出三种新算法,解决量子程序黑盒测试中的等价性、同一性和幺正性检查问题,并优化参数选择,实验验证其有效性。
2024-05-24 cs.SE quant-ph
On the Interaction between Test-Suite Reduction and Regression-Test Selection Strategies
单元测试是软件开发中最成熟的质量保证技术之一。单元测试的一个主要优点是效率(即,测试工作)和有效性(即,故障检测概率)。为此,已经提出了各种策略来利用这种权衡。特别是,测试套件减少(TSR)减少了测试用例的数量(可能是冗余的),同时测试一个单一的程序版本。回归测试选择(RTS)为测试连续的程序修订选择测试用例。然而,TSR和RTS在组合使用时可能会影响-甚至阻碍-彼此的性能。例如,在TSR期间针对特定程序版本丢弃的测试用例可能再次与RTS相关。然而,找到一个两种策略的组合,导致一个合理的权衡整个版本历史的程序是一个悬而未决的问题。本文的目的是更好地了解TSR和RTS之间的相互作用,效率和效果。为此,我们提出了一个可配置的框架,称为RegreTS自动单元测试的C程序。该框架包括TSR和RTS的不同策略及其可能的组合。我们将此框架应用于一系列主题系统,提供了几个重要的见解。首先,TSR几乎总是对RTS的有效性产生负面影响,但对效率产生积极影响。其次,向测试人员揭示连续程序版本之间程序修改的影响的测试用例比简单覆盖修改的代码部分的测试用例有效得多,但会导致更多的测试工作。
2022-07-26 cs.SE
Adaptive Metamorphic Testing with Contextual Bandits
变形测试是一种软件测试范式,其目的是利用被测系统的必要属性(称为变形关系)来检查其预期输出或生成新的测试用例。变形测试已经成功地测试程序,其中一个完整的预言是不可用的,或测试程序,有不确定性的预期输出,如学习系统。在这篇文章中,我们提出了自适应变形测试作为一个简单而强大的强化学习技术,即上下文强盗,选择一个程序可用的多个变形关系的推广。通过使用上下文强盗,自适应变形测试学习哪些变形关系可能改变源测试用例,从而具有更高的发现错误的机会。我们目前的实验结果在机器学习的两个主要案例研究,即图像分类和目标检测,并确定弱点和鲁棒性边界。自适应变形测试有效地识别了源测试用例中被测系统的弱点。
2020-03-13 cs.SE
Round-Trip Mutation Testing: Translating Code to Natural Language Intent and back
University of Luxembourg(卢森堡大学);ENSI, University of Manouba(马努巴大学ENS学院)
提出往返变异测试,利用大语言模型在程序代码和意图间的生成能力,通过预测意图生成变异体,还可人工制造错误翻译产生变异体,评估显示其能产生多样变异体,检测传统方法未揭示的错误。
2026-07-07 cs.SE
Benchmarking Web-testing - Selenium versus Watir and the Choice of Programming Language and Browser
Selenium被认为是最流行的软件测试自动化工具。过去的学术著作主要忽视了测试工具,而倾向于更多的方法论主题。目的:我们研究了Web测试工具的性能,为软件测试工具的选择和配置提供经验证据。方法:我们使用4*5析因设计来研究20种不同的配置来测试网络商店。我们研究了5种程序设计语言绑定(C#,Java,Python和Ruby for Selenium,而Watir仅支持Ruby)和4种浏览器(Google Chrome,Internet Explorer,Mozilla Firefox和Opera)。性能通过执行时间、内存使用、测试脚本的长度和测试的稳定性来衡量。结果:考虑到所有措施,最佳配置是Selenium与Chrome的Python语言绑定。Selenium与Python绑定是所有浏览器的最佳选择。最慢和最快配置之间差异的效应量非常高(Cohens d=41.5,执行时间增加91%)。总体而言,Internet Explorer是最快的浏览器,但在稳定性方面表现最差。结论:我们建议在采用基准测试工具之前使用它们。因素的权重,例如,为了更快的性能愿意牺牲多少测试稳定性,会影响决策。
2016-11-02 cs.SE
Noise-Resilient Testing of Quantum Programs Based on Output Dominance
Beihang University(北京航空航天大学)
提出Qomino,一种基于输出优势的量子程序抗噪测试方法,无需噪声估计或缓解,通过分解感知逆构造和竞争比较,在含噪声样本中高效准确判断程序缺陷,显著优于现有基线。
2026-10-06 cs.SE
MTGP: Combining Metamorphic Testing and Genetic Programming
遗传编程是一种进化方法,以其在程序合成中的性能而闻名。然而,它还不够成熟,无法在现实世界的软件开发中实际使用,因为通常需要许多训练用例来生成推广到未见过的测试用例的程序。由于在实践中,训练案例必须由用户手工标记,因此我们需要一种方法来检查具有较少数量训练案例的程序行为。变形测试不需要标记的输入/输出示例。相反,程序被执行多次,首先是给定的(随机生成的)输入,然后是相关的输入,以检查观察到的输出之间是否存在某些用户定义的关系。在这项工作中,我们建议MTGP,它结合了变形测试和遗传编程,并研究其性能和生成的程序的通用性。此外,我们分析了泛化能力如何取决于给定的标记训练案例的数量。我们发现,在几乎所有的研究配置中,使用变形测试与标记的训练案例相结合,导致更高的泛化率比单独使用标记的训练案例。因此,我们建议研究人员在他们的系统中使用变形测试,如果标记的训练数据是昂贵的。
2023-01-20 cs.NE cs.SE
Fuzzy Logic Guided Reward Function Variation: An Oracle for Testing Reinforcement Learning Programs
The Hong Kong Polytechnic University(香港理工大学)
本文提出一种基于模糊逻辑的自动化预言机,通过量化智能体对奖励策略的符合趋势来检测RL程序缺陷,在复杂测试场景中优于人工预言机。
2024-06-28 cs.AI cs.SE
Can Pairwise Testing Perform Comparably to Manually Handcrafted Testing Carried Out by Industrial Engineers?
测试是工业软件工程中的一项重要活动。对于这样的软件,测试通常是手动执行的手工制作测试套件的基础上特定的设计技术和特定领域的经验。为了支持开发人员进行测试,已经提出了不同的方法来生成良好的测试套件。在过去的几年中,组合测试已经被探索,其目标是基于一定的策略自动组合软件的输入值。成对测试是一种组合技术,用于通过改变系统的每对输入参数的值直到创建这些参数的所有可能组合来生成测试套件。有一些证据表明,这类技术是有效的,相对较好地检测软件故障。不幸的是,几乎没有实验证据的比较,这些组合测试技术,被认为是严格的手工制作的测试。在这项研究中,我们比较成对的测试套件与手动创建的测试套件的工程师为45个工业程序。测试套件进行了评价的故障检测,代码覆盖率和测试数量。这项研究的结果表明,成对测试,而实现高代码覆盖率和故障检测的大多数程序是有用的,几乎是有效的手动测试在故障检测方面。结果还表明,在64%的程序中,成对测试在故障检测方面与手动测试一样好。
2017-06-06 cs.SE
Mathematical Principles in Software Quality Engineering
数学对于开发复杂的软件系统有许多有用的特性。一个是它可以准确地描述对象的物理情况或行为的结果。数学支持抽象,这是一个很好的建模媒介,因为它是一个精确的媒介,有一点模糊的可能性。本文表明,数学提供了一个高层次的验证时,它被用作软件媒介。它还概述了基于被测程序源代码的结构测试的显着特点。结构测试方法非常适合于严格的定义,数学分析和精确的测量。最后还讨论了功能测试和结构测试的争论,以使测试有完整的意识。任何程序都可以被认为是一个函数,因为程序输入形成了它的域,程序输出形成了它的范围。一般来说,离散数学更适用于功能测试,而图论更适用于结构测试。
2010-04-10 cs.SE
Mitigating Noise in Quantum Software Testing Using Machine Learning
本文提出噪声感知方法QOIN,利用机器学习(如迁移学习)学习并过滤量子计算机噪声对程序输出的影响,从而在真实或含噪环境中提升量子软件测试的精确率、召回率和F1分数。
2024-01-15 cs.SE
The Next Generation of Metadata-Oriented Testing of Research Software
研究软件是指软件开发工具,可加速发现并简化对数字基础设施的访问。然而,尽管研究软件平台可以比以往任何时候都更加创新和强大,但随着复杂性的增加,如果出现计划外和未经测试的程序场景,则失败的风险更大。随着系统的老化和不同程序员的更改,更改影响整个系统的风险增加。相比之下,不太强调程序代码而更强调描述应用程序的数据的系统可以更容易地由技术不太熟练但通常更熟悉应用程序领域的个人进行更改和维护。这种系统也可以使用自动生成的高级测试机制进行测试。
2018-12-25 cs.SE
Evolutionary Generative Fuzzing for Differential Testing of the Kotlin Compiler
本文提出一种黑盒生成式模糊测试方法,结合语义接口模型、扩充上下文无关文法及两种遗传算法生成Kotlin程序,用于K1和K2编译器的差分测试,有效发现并确认了多个编译器缺陷。
2024-01-12 cs.SE
JEST: N+1-version Differential Testing of Both JavaScript Engines and Specification
现代编程遵循持续集成(CI)和持续部署(CD)方法,而不是传统的瀑布模型。即使是现代程序设计语言的开发也使用CI/CD方法来快速提供新的语言功能并适应新的开发环境。与传统方法不同,在现代CI/CD方法中,语言规范不再是语言语义的预言机,因为规范及其实现可以共同进化。在这种情况下,规范和实现都可能有bug,保证它们的正确性是非常重要的。在本文中,我们提出了一种新的N+1版本差分测试来解决这个问题。与传统的差分测试不同,我们的方法包括三个步骤:1)根据给定的语言规范自动合成由语法和语义引导的程序,2)通过将断言注入到合成的程序以检查它们的最终程序状态来生成一致性测试,3)通过对多个实现执行一致性测试来检测规范和实现中的错误,以及4)使用统计信息定位规范上的错误。我们实现了我们的方法,通过JEST的JavaScript程序设计语言,它执行N+1版本的差异测试现代JavaScript引擎和ECMAScript,语言规范描述的语法和语义的自然语言的JavaScript。我们使用四个JavaScript引擎评估了JEST,这些引擎支持所有现代JavaScript语言功能和最新版本的ECMAScript(ES 11,2020)。JEST自动合成了1,700个程序,覆盖了ES 11的97.78%的语法和87.70%的语义。使用断言注入,它在四个引擎中检测到44个引擎错误,在ES 11中检测到27个…
2021-02-16 cs.SE
Rethinking Basis Path Testing: Mixed Integer Programming Approach for Test Path Set Generation
Hubei University of Technology(湖北工业大学)
本文提出基于混合整数规划的方法,用于生成完整的基础路径集,通过全局优化和增量策略提升测试路径生成的效率和效果。
2026-01-09 cs.SE
What Are We Really Testing in Mutation Testing for Machine Learning? A Critical Reflection
变异测试是一种成熟的技术,用于通过将人工错误注入到生产代码中来评估测试套件的质量。近年来,突变测试已经扩展到机器学习(ML)系统,特别是深度学习(DL);研究人员已经提出了方法,工具和统计上合理的方法来确定DL系统中的突变体是否被杀死。然而,正如我们将在这项工作中讨论的那样,可以提出的问题是,目前在DL中使用的突变测试技术在多大程度上实际上符合突变测试的经典解释。我们观察到ML模型开发类似于测试驱动的开发(TDD)过程,其中训练算法(“程序员”)生成一个模型(程序),该模型将数据点(测试数据)拟合到标签(隐式断言),直到某个阈值。然而,考虑到在这种TDD隐喻下提出的ML系统的突变测试技术,在当前的方法中,生产代码和测试代码之间的区别是模糊的,并且突变操作符的现实性可能受到挑战。我们还考虑了经典突变测试的基本假设:有能力的程序员假设和耦合效应假设。正如我们将要说明的那样,这些假设并不能简单地转化为ML系统开发,需要更有意识和明确的范围和概念映射才能真正得出相似之处。根据我们的观察,我们提出了几个行动点,以便更好地将ML的突变测试技术与经典突变测试的范式和词汇表对齐。
2021-03-01 cs.SE
SnapCheck: Automated Testing for Snap Programs
Snap、Scratch和Processing等编程环境通过允许学习者创建具有可视化和交互式输出的编程工件(如应用程序和游戏)来吸引学习者。在这种以媒体为中心的环境下学习编程已被证明可以提高保留率和成功率。然而,评估这些可视化的交互式项目需要时间和费力的手动工作,因此很难在学生工作时向他们提供自动或实时反馈。在本文中,我们介绍了SnapCheck,一个动态的测试框架,使教师能够作者的测试用例与条件动作模板的Snap。SnapCheck的目标是允许教师或研究人员编写基于属性的测试用例,这些测试用例可以高精度地自动评估学生的交互式程序。我们在介绍性编程课程中对来自Pong游戏作业的162个代码快照进行了SnapCheck评估,结果表明,我们的自动化测试框架在所有题目上的准确率至少达到98%,显示出使用SnapCheck进行自动评分并为学生提供形成性反馈的潜力。
2021-04-23 cs.HC cs.SE
Symbolic Partial-Order Execution for Testing Multi-Threaded Programs
我们描述了一种多线程程序的系统测试技术。我们结合准最优偏序约简,一个国家的最先进的技术,解决路径爆炸,由于交错的非确定性,与符号执行来处理数据的非确定性。我们的技术迭代地和详尽地发现程序的所有执行。它使用偏序表示程序执行,并使用底层展开语义查找下一次执行。我们避免了使用截止事件的冗余程序痕迹的探索。我们实现了我们的技术作为KLEE的扩展,并评估了一组大型多线程C程序。我们的实验在memcached和GNU sort中发现了几个以前未发现的bug和未定义的行为,表明新方法能够在工业规模的基准测试中发现bug。
2020-07-22 cs.PL cs.SE
Backend-Aware Graph Learning for Denoising Outcome Distributions in Quantum Program Testing
Polytechnique Montreal(蒙特利尔理工学院);Mila - Quebec Artificial Intelligence Institute(米拉-魁北克人工智能研究所)
针对量子程序测试因噪声干扰结果分布的问题,提出基于图学习的Q-BRIDGE方法,利用图变换器架构编码电路,结合FiLM层整合噪声观测,在多后端和电路族测试中表现优异,提升了噪声感知量子程序测试的可靠性。
2026-07-28 cs.SE
Towards the Systematic Testing of Virtual Reality Programs (extended version)
软件测试是确保软件符合其规范的关键活动。然而,目前的软件测试活动往往是不完全有效的,当应用在特定的软件领域在虚拟现实(VR),具有几种新的类型的功能,如图像,声音,视频,和差异化的互动,这可能成为新的故障的来源。本文概述了可能对验证、确认和测试(VV&T)产生影响的主要VR特征。此外,它还分析了一些最成功的VR开源项目,以了解缺乏软件测试活动的危险。我们比较了开源VR项目中软件测试实践的现状,并评估了缺乏测试如何损害产品的开发。我们评估了代码气味的发生率,并验证了这些项目如何表现出故障的倾向。结果表明,软件测试的实践在虚拟现实应用程序的开发中还没有得到广泛的应用。研究还发现,VR项目中代码气味的发生率很高。关于故障倾向,结果显示,在VR项目中分析的类中,约有12.2%是故障倾向。关于软件测试技术在VR项目中的应用,据观察,只有少数项目关注为VR项目开发测试用例,可能是因为我们仍然没有必要的工具来帮助这一方向。关于气味,我们得出的结论是,在VR项目中有很高的发生率,特别是在实施气味方面,这种高发生率可能会对故障产生重大影响。最后,与故障倾向相关的研究指出,缺乏软件测试活动是项目成功的一个重大风险。
2020-09-18 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
Mokav: Execution-driven Differential Testing with LLMs
针对程序功能差异检测问题,提出执行驱动工具Mokav,通过迭代结合执行反馈引导LLM生成差异暴露测试用例,在基准测试上性能显著优于现有方法。
2025-07-31 cs.SE
Optimizing Metamorphic Testing: Prioritizing Relations Through Execution Profile Dissimilarity
针对机器学习程序判定器缺失及现有蜕变关系优先排序成本高或不准确的问题,提出一种基于语句中心性并利用执行剖面多样性的MR优先排序方法,显著提升了故障检测有效性与测试效率。
2024-11-14 cs.SE
Testing the Unknown: A Framework for OpenMP Testing via Random Program Generation
提出基于随机差分测试的OpenMP测试框架,通过语法随机生成数千测试并扩展Varity生成器,在GCC、Clang和Intel实现中发现了性能异常与正确性问题。
2024-10-11 cs.PF cs.PL cs.SE
MUCOCO: Automated Consistency Testing of Code LLMs
Singapore University of Technology and Design(新加坡科技设计大学);Royal Holloway University of London(伦敦大学皇家霍洛威学院)
本文提出MUCOCO方法,通过语义保持变异分析自动发现代码大语言模型中的不一致行为,实验表明其在暴露不一致性和性能上优于现有基准。
2026-09-03 cs.SE
STMutants: A Mutation Testing Dataset for Structured Text Programs in Industrial Automation
Lamar University(拉马尔大学)
针对IEC 61131-3结构化文本程序缺乏公开变异测试基准的问题,构建了包含108个一阶变异体的数据集STMutants,涵盖七类变异算子,并评估了三个大语言模型在测试套件生成和变异检测中的性能。
2026-06-03 cs.SE
The Cost of Certainty: Shot Budgets in Quantum Program Testing
Toronto Metropolitan University(多伦多都会大学)
本文提出统一框架,分析量子程序测试所需测量次数,对比逆测试、交换测试和卡方测试的效率,并引入程序级预算方法,指导实践者在验证中平衡严谨性与成本。
2025-10-25 cs.SE quant-ph
GUICop: Approach and Toolset for Specification-based GUI Testing
用于测试图形用户界面(GUI)程序的Oracle需要考虑复杂的因素,例如在将观察到的GUI元素与预期的GUI元素进行比较时屏幕分辨率或颜色方案的变化。研究人员提出了模糊比较规则和计算昂贵的图像处理技术来驯服比较过程,因为否则天真的匹配比较将过于约束,因此不切实际。另外,本文提出了GUICop,一种新的方法与支持的工具集,采取(1)一个GUI程序和(2)用户定义的GUI规范表征的GUI元素的渲染行为,并检查程序的执行轨迹是否满足规格。GUICop包括以下内容:1)GUI规约语言; 2)驱动程序; 3)插装GUI库; 4)求解器;以及5)代码编织器。用户使用GUI规约语言定义主题GUI程序的规范。驱动程序遍历程序的GUI结构并生成驱动其执行的事件。检测GUI库捕获GUI执行跟踪,即,关于GUI元素的位置和可见性的信息。由Code Weaver注入的代码启用的Solver检查跟踪是否满足规范。使用四个开源GUI应用程序(包括八个缺陷,即Jajuk、Gason、JEdit和TerpPaint)成功评估了GUICop。
2016-11-17 cs.SE