On Testing and Debugging Quantum Software
量子计算机正变得越来越主流。随着越来越多的程序员开始考虑编写量子程序,他们需要测试和调试代码。在本文中,我们讨论了量子计算机的各种用例,无论是独立的还是作为系统的一部分。基于这些用例,我们讨论了一些可以用来确保量子软件质量的测试和调试策略。我们还强调了量子计算机特有的问题,并列出了解决这些问题所需的新技术。实践者可以很容易地将其中一些策略应用到编写量子程序的过程中,而研究人员可以了解未来工作的机会。
2021-03-16 cs.ET cs.SE quant-ph
Model-based Testing of Scratch Programs
学习者通常通过Scratch等专用语言进行编程,其中基于块的命令以可视化方式组装,以控制图形精灵的交互。对这些程序的自动化测试是支持调试、提供提示或评估学习结果的重要先决条件。然而,为Scratch程序编写测试可能具有挑战性:典型Scratch程序的游戏和随机性质使得很难识别用于控制程序的特定定时输入序列。此外,用于检查结果程序状态的精确测试断言与Scratch中编程的创造性自由的基本原则不兼容,其中正确的程序行为可以通过程序的图形外观或时序的偏差来实现。然而,Scratch程序的事件驱动和面向参与者的性质使它们非常适合使用有限状态机来描述程序行为。在本文中,我们介绍了一种基于模型的测试方法,通过扩展Whisker,一个自动化测试框架的Scratch程序。基于模型的扩展描述了预期的程序行为的状态机,这使得它可以检查一个程序的抽象行为独立于确切的时间和像素精确的图形细节,并自动获得测试输入测试,甚至具有挑战性的程序。演示使用Whisker进行基于模型的测试的视频可在以下URL获得:https://youtu.be/edgCNbGSGEY
2022-02-13 cs.SE
Geometric Theory for Program Testing
将程序验证的形式化方法推广到程序测试。它们的结合旨在为可靠的程序开发、测试和演进带来好处。我们的几何测试理论旨在作为测试环境的规范,包括作为工具链的最后阶段,帮助专业程序员,业余爱好者和计算机科学的学生。测试环境包括一个自动化算法,它可以定位已经运行的测试中的错误,并帮助纠正它们。它通过在监视器屏幕上显示被测程序执行过程中的因果链的条形图来实现这一点。然后,可以按照熟悉的卫星导航方式在地图上的道路上向后导航该图。这将显示应修改程序以删除错误的位置的选择。
2022-06-05 cs.PL cs.SE
Testing and Debugging Quantum Programs: The Road to 2030
本文提出迈向2030年的量子程序测试与调试路线图,指出噪声和不可克隆定理等局限,构建概念模型梳理测试与调试的挑战,聚焦经典与量子接口及量子特性应用。
2024-10-11 cs.SE quant-ph
On Testing Machine Learning Programs
如今,由于深度学习和强化学习的最新突破,我们正在许多安全关键系统中广泛采用机器学习(ML)模型。许多人现在每天都在与基于ML的系统进行交互,例如,亚马逊Alexa或谷歌Home等虚拟个人助理使用的话音识别系统。随着ML领域的不断发展,我们可能会在金融、能源、健康和交通等广泛领域看到变革性的进步。鉴于基于ML的系统在我们日常生活中的重要性日益增加,确保其可靠性变得非常重要。最近,软件研究人员已经开始采用来自软件测试领域的概念(例如,代码覆盖率,突变测试或基于属性的测试),以帮助ML工程师检测和纠正ML程序中的错误。本文回顾了当前ML程序的现有测试实践。首先,我们确定并解释在测试ML程序时应该解决的挑战。接下来,我们报告了文献中用于测试ML程序的现有解决方案。最后,我们确定了与ML程序测试相关的文献中的差距,并为科学界提出了未来研究方向的建议。我们希望对软件测试实践的全面回顾将帮助ML工程师确定正确的方法来提高基于ML的系统的可靠性。我们还希望研究界能够按照我们提出的研究方向采取行动,以推进机器学习程序测试的最新发展。
2018-12-05 cs.SE
Benchmarking Quantum Software Testing with Scalable Quantum Programs
Beihang University(北京航空航天大学);Kyushu University(九州大学)
提出Qolumbina基准基础设施,通过40个开源量子程序,支持可扩展量子软件测试的受控实验,涵盖功能、输出行为、开发复杂度和量子执行复杂度等测试相关特性。
2026-07-03 cs.SE quant-ph
QuSBT: Search-Based Testing of Quantum Programs
为量子程序生成测试套件,使其具有最大数量的失败测试是一个优化问题。对于这样的优化,基于搜索的测试在经典程序的背景下显示出有希望的结果。为此,我们提出了一个基于遗传算法的量子程序测试生成工具,称为QuSBT(基于搜索的量子程序测试)。QuSBT自动化量子程序的测试,目的是找到一个测试套件具有最大数量的失败测试用例。QuSBT利用IBM的Qiskit作为量子程序的模拟框架。除了实现的方法之外,我们还介绍了工具架构(即,搜索个体的编码、表示搜索问题的适应度函数的定义以及测试评估w.r.t.两种失败)。最后,我们报告的实验结果,我们测试了一组错误的量子程序与QuSBT,以评估其有效性。存储库(代码和实验结果):https://github.com/Simula-COMPLEX/qusbt-tool视频:https://youtu.be/3apRCtluAn4
2022-04-18 cs.SE
Bug-locating Method based on Statistical Testing for Quantum Programs
针对量子程序缺陷定位中测试成本依赖段位置且需统计测试的问题,提出结合基于成本的二分搜索、提前判定、最终确认和回溯检查的高效定位方法,实验证明其可显著降低以量子门数量衡量的定位成本。
2024-09-30 cs.SE quant-ph
Differentially Testing Soundness and Precision of Program Analyzers
在过去的几十年里,学术界和工业界都开发了许多程序分析器。然而,尽管它们丰富,目前还没有系统的方法来比较不同分析器对任意代码的有效性。在本文中,我们提出了第一个自动化技术的差异测试健全性和精度的程序分析仪。我们使用我们的技术来比较六个成熟的,最先进的分析器对成千上万的自动生成的基准。我们的技术检测的稳健性和精度问题,在大多数分析仪,我们评估了这些问题的影响,设计师和用户的程序分析仪。
2018-12-16 cs.SE
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
Bayesian Sequential Verification for Budget-Aware Quantum Program Testing
University of Maryland, Baltimore County(马里兰大学巴尔的摩县分校)
本文提出一种基于预算的量子程序测试方法,通过贝叶斯假设检验流程减少测量成本,适用于高成功概率的量子程序。
2026-05-15 cs.SE quant-ph
QuCheck: A Property-based Testing Framework for Quantum Programs in Qiskit
本文提出QuCheck,一个基于Qiskit的量子程序属性测试框架,通过变异分析验证其有效性,相比QSharpCheck多检测36%故障且耗时减少81%,证实了属性测试在量子系统验证中的可行性。
2025-03-28 cs.SE quant-ph
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
QUTest: A Native Testing Framework for Quantum Programs
Faculdade de Engenharia da Universidade do Porto(波尔图大学工程学院);LASIGE, Faculdade de Ciências, Universidade de Lisboa(里斯本大学理学院)
本文提出QUTest,一种原生测试框架,允许用标准.qasm文件编写程序和测试,支持Arrange / Act / Assert模式,并提供12种断言类型、代码检查工具和跨不同运行时版本的测试环境。
2026-05-19 cs.SE quant-ph
MTGP: Combining Metamorphic Testing and Genetic Programming
遗传编程是一种进化方法,以其在程序合成中的性能而闻名。然而,它还不够成熟,无法在现实世界的软件开发中实际使用,因为通常需要许多训练用例来生成推广到未见过的测试用例的程序。由于在实践中,训练案例必须由用户手工标记,因此我们需要一种方法来检查具有较少数量训练案例的程序行为。变形测试不需要标记的输入/输出示例。相反,程序被执行多次,首先是给定的(随机生成的)输入,然后是相关的输入,以检查观察到的输出之间是否存在某些用户定义的关系。在这项工作中,我们建议MTGP,它结合了变形测试和遗传编程,并研究其性能和生成的程序的通用性。此外,我们分析了泛化能力如何取决于给定的标记训练案例的数量。我们发现,在几乎所有的研究配置中,使用变形测试与标记的训练案例相结合,导致更高的泛化率比单独使用标记的训练案例。因此,我们建议研究人员在他们的系统中使用变形测试,如果标记的训练数据是昂贵的。
2023-01-20 cs.NE 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
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
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
Development Of Ontology-Based Intelligent System For Software Testing
软件测试是软件产业的重要组成部分。除了了解测试的重要性外,只有有限的时间用于教授测试。如果测试与编程基础同时教授,效率会更高。这种测试技术和编程的综合学习允许程序员以更好的方式执行,这导致了行业进步的性能的提高。本文介绍了一种本体技术,该技术首先对测试过程进行层次化定义,并定义测试过程之间的关系,以实现知识的共享和重用,然后通过自然语言处理生成元数据,最后应用本体来支持测试管理。它作为多种环境的知识库,集成了编程基础和测试概念的教学。关键词:Meta Data,Ontology,软件测试,集成,编程基础.
2013-02-21 cs.AI 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
Robustness Testing of Intermediate Verifiers
程序验证器也不能避免几乎影响每一个软件的bug。此外,它们经常表现出脆弱的行为:它们的性能随着输入程序如何表达的细节而发生显著变化,这些细节应该是无关紧要的,比如独立声明的顺序。这种健壮性的缺乏使用户感到沮丧,他们必须花费大量的时间来弄清楚工具的特性,然后才能有效地使用它。本文介绍了一种技术来检测缺乏程序验证器的鲁棒性,该技术是轻量级的,全自动的,因为它是基于测试方法(如突变测试和变形测试)。其关键思想是生成最初通过验证的程序的许多简单变体。通过构造,所有变体都等同于原始程序;因此,任何未通过验证的变体都表明验证器缺乏鲁棒性。我们实现了我们的技术在一个工具,称为“mugie”,它的操作程序写在流行的布吉语言验证作为中间表示在众多的程序验证。针对135个Boogie程序的实验表明,脆性行为发生得相当频繁(16个程序),并且不难触发。基于这些结果,本文讨论了脆性行为的主要来源,并提出了提高鲁棒性的措施。
2018-05-08 cs.SE
Retromorphic Testing: A New Approach to the Test Oracle Problem
The Chinese University of Hong Kong, Shenzhen (CUHK-Shenzhen)(香港中文大学(深圳))
提出逆向形态测试,一种基于反函数概念的黑盒测试方法,通过正向与反向程序的双程序结构验证输入与输出关系,解决测试预言问题。
2023-10-10 cs.AI cs.CL cs.CV
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
Towards Automated Boundary Value Testing with Program Derivatives and Search
在测试软件时,一种自然且经常使用的策略是在边界处使用输入值,即预期行为变化最大的地方,这种方法通常称为边界值测试或分析(BVA)。尽管这一直是一个关键的测试思想,但很难明确定义和形式化。因此,它也很难自动化。在本研究报告中,我们提出了一个这样的形式化的BVA,以类似的方式如何在数学中定义函数的导数,考虑(软件)程序的衍生物。我们定义的关键是输入和输出之间的距离的概念,我们可以形式化,然后根据信息论的思想进行量化。然而,对于我们的(黑盒)方法是实用的,必须搜索具有特定属性的测试输入。耦合它与搜索为基础的软件工程,因此需要,我们讨论了如何程序衍生物可以被用来作为和健身功能。这个简短的说明不允许更深入的经验调查,但我们使用一个简单的说明性例子来介绍主要思想。通过结合程序的衍生物与搜索,我们因此提出了一个实用的,以及理论上有趣的技术自动边界值(分析和)测试。
2019-05-27 cs.SE
Quantum Concolic Testing
本文提出首个面向量子程序的 concolic 测试框架,通过量子约束生成与符号化方法生成路径约束并引导探索,有效提升分支覆盖率与 bug 检测能力。
2025-06-01 cs.SE quant-ph
Testing Neural Program Analyzers
University of Houston(休斯顿大学);Visa Research(Visa研究院)
深度神经网络越来越多地用于软件工程和程序分析任务。他们通常采取一个程序,并作出一些预测,例如,bug预测我们称这些模型为神经程序分析器。神经程序的可靠性可能会影响包含分析的可靠性。在本文中,我们描述了我们正在努力开发有效的测试神经程序的技术。我们讨论了开发这些工具所面临的挑战和我们未来的计划。在我们对文献中最近提出的神经模型进行的初步实验中,我们发现该模型非常脆弱,输入中的简单扰动可能导致模型在预测中出错。
2019-09-25 cs.LG cs.PL cs.SE
NovaQ: Improving Quantum Program Testing through Diversity-Guided Test Case Generation
针对量子程序可靠性保障需求,本文提出多样性引导测试框架NovaQ,结合分布式生成器与新颖性评估模块,实验显示其在多样性和bug检测上优于现有基线。
2025-09-05 cs.SE
QSPE: Enumerating Skeletal Quantum Programs for Quantum Library Testing
Manufacturing Industry Chain Collaboration Industrial Software Key Laboratory of Sichuan Province(四川省制造业产业链协同工业软件重点实验室);Southwest Jiaotong University(西南交通大学);State Key Laboratory of Blockchain and Data Security(区块链与数据安全国家重点实验室);Zhejiang University(浙江大学);Kyushu University(九州大学);University of Luxembourg(卢森堡大学);Institute of AI for Industries(产业人工智能研究院)
QSPE通过差分测试原理和基于状态向量的验证方法,高效生成量子程序变体并检测编译错误,显著提升量子库测试的准确性与效率。
2026-01-17 cs.SE quant-ph
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
On Testing Constraint Programs
几种基于约束的建模语言(如OPL、ZINC或COMET)的成功吸引了更好的软件工程实践,特别是在测试阶段。本文介绍了一个测试框架,使自动测试用例生成的约束编程。我们提出了一个约束程序开发的一般框架,假设第一个声明和简单的约束模型是从问题规格分析。然后,这个模型是细化使用经典的技术,如约束重新制定,代理和全球约束添加,或破坏,以形成一个改进的约束模型,必须彻底测试之前,用于解决实际规模的问题。我们认为,大多数的故障都是在这个细化步骤中引入的,并提出了一个过程,其中第一个声明模型作为一个预言检测不符合。我们从这个过程中获得实际的测试目的,以自动生成显示不符合项的测试数据。我们实现了这种方法在一个新的工具,称为CPTEST,用于自动检测两个经典的基准程序,即Golomb统治者和汽车排序问题的不符合。
2010-05-17 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
Adaptive and AI-Augmented Security Testing: A Systematic Survey of Program Analysis, Feedback-Driven Testing, and Hybrid Learning-Based Approaches
Mississippi State University(密西西比州立大学)
本文系统综述了自适应和AI增强的安全测试研究,探讨了程序分析、DevSecOps、反馈驱动模糊测试、LLM自动化测试生成及混合系统等五个领域,揭示了结构化程序表示与自适应测试机制之间的断层,并提出五个开放研究挑战。
2026-04-29 cs.CR cs.PL cs.SE
MorphQ: Metamorphic Testing of the Qiskit Quantum Computing Platform
MorphQ提出首个针对量子计算平台的蜕变测试方法,通过程序生成器和量子蜕变关系缓解预言机问题,在Qiskit上两天生成超8000个程序对,发现13个错误,其中9个已确认。
2023-02-09 cs.SE
The Program Testing Ability of Large Language Models for Code
Tencent Security Big Data Lab(腾讯安全大数据实验室);Peking University(北京大学);UC Davis(加州大学戴维斯分校)
本文探究面向代码的大语言模型的程序测试能力,分析相关模型特性并提出能力提升路径,将相关发现用于增强程序合成,在HumanEval+基准上较基线与现有最优方法分别实现11.77%和4.22%的通过率提升。
2023-10-09 cs.AI cs.CL cs.LG
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
A Survey on Testing and Analysis of Quantum Software
本文系统综述了量子软件测试与分析的最新进展,涵盖测试技术、程序分析、优化与基准,并指出关键挑战与开放问题。
2024-10-01 cs.SE quant-ph
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
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
Software Process Improvement Based on Defect Prevention Using Capability and Testing Model Integration in Extreme Programming
软件过程改进(Software Process Improvement,SPI)在不断净化软件质量的过程中得到了广泛的关注。以前有几种敏捷方法与极限编程(XP)一起使用。在改进过程之前,缺陷预防(DP)是不可避免的。此外,DP在很大程度上取决于缺陷检测,要么在设计和实现阶段发现,要么在测试阶段。然而,测试成熟度模型集成(TMMI)在DP以及软件过程改进中具有至关重要的作用。特别是,当软件通过测试和修复缺陷得到验证时,它实现了以过程改进为目标的最大能力成熟度模型集成(CMMI)。在这里,本文提出了一种改进的缺陷检测和预防模型,以提高软件过程遵循XP的方法。此外,作为一个独特的贡献,我们已经统一了能力和测试模型集成,以确保更好的SPI。
2021-07-12 cs.SE
Concolic Testing in CLP
Concolic测试是一种基于具体执行和符号执行相结合的流行软件验证技术。它的主要重点是发现bug和生成测试用例,目的是最大限度地提高代码覆盖率。以前的逻辑编程中的concolic测试方法是不健全的,因为它只处理正约束(通过替换),但不能表示负约束。在本文中,我们提出了一个新的框架concolic测试的CLP程序,概括了以前的技术。在CLP设置中,可以以自然的方式表示正约束和负约束,从而产生一种合理且(潜在地)更有效的技术。定义验证和测试技术CLP程序越来越相关,因为这个框架正在成为流行的中间表示,以分析在其他编程范式编写的程序。
2020-08-05 cs.LO cs.PL cs.SE
Program State Abstraction for Feedback-Driven Fuzz Testing using Likely Invariants
近年来,模糊测试在发现软件缺陷方面取得了巨大的成功,但仍存在一些问题。覆盖引导的模糊器遭受覆盖程序点并不能确保触发故障的事实。理论上应该处理这个问题的其他更敏感的技术,如内存值的覆盖,容易导致路径爆炸。在这篇论文中,我们提出了一个新的反馈驱动的模糊测试,结合了代码覆盖率与数据的“形状”。我们学习每个基本块的可能不变量,以便将块中使用的变量所描述的空间划分为区域。我们的目标是在反馈中区分一个块何时被执行,其值落在空间的不同区域。这更好地近似程序状态覆盖率,并在某些目标上,提高了模糊器查找故障的能力。我们使用LLVM和AFL++开发了一个名为InvsCov的原型。
2020-12-21 cs.CR cs.SE
StatWhy: Formal Verification Tool for Statistical Hypothesis Testing Programs
AIST, Tokyo, Japan(AIST, 东京, 日本);University of Tsukuba, Ibaraki, Japan(茨口大学, 神奈川, 日本);Kyoto University, Kyoto, Japan(京都大学, 京都, 日本)
StatWhy 通过形式化规约与自动验证统计程序要求,帮助程序员避免统计假设检验中的常见误用错误。
2025-06-01 cs.AI cs.LO 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
FairFuzz: Targeting Rare Branches to Rapidly Increase Greybox Fuzz Testing Coverage
近年来,模糊测试已被证明是在实践中发现正确性错误和安全漏洞的最有效的技术之一。一个特殊的模糊测试工具,美国模糊Lop或AFL,已成为流行的感谢其易于使用和错误发现的权力。然而,AFL在其实现的程序覆盖深度方面仍然有限,特别是因为它没有考虑程序输入的哪些部分不应该被突变以保持深度程序覆盖。我们提出了一种方法,FairFuzz,这有助于减轻这种限制,在两个关键步骤。首先,FairFuzz会自动优先考虑执行测试程序中罕见部分的输入。其次,它自动调整输入的变异,使变异的输入更有可能执行程序中这些相同的稀有部分。我们对现实世界的程序进行评估,对最先进的版本的AFL,彻底重复实验,以获得良好的可变性措施。我们发现,在某些基准FairFuzz显示显着的覆盖率增加后,24小时相比,最先进的版本的AFL,而在其他方面,它实现了高节目覆盖率在一个显着更快的速度。
2017-09-20 cs.CR cs.SE
Genetic Micro-Programs for Automated Software Testing with Large Path Coverage
University of Pretoria(比勒陀利亚大学)
计算智能(CI)的不断发展导致人们越来越希望应用CI技术来改进软件工程过程,特别是软件测试。现有的最先进的自动化软件测试技术集中于利用搜索算法来发现实现高执行路径覆盖的输入值。这些算法是在他们打算测试的相同代码上训练的,需要仪器和漫长的搜索时间来测试每个软件组件。本文概述了一种新的遗传编程框架,进化的解决方案是不是输入值,但微程序,可以重复生成输入值,有效地探索一个软件组件的输入参数域。我们还认为,我们的方法可以推广,如适用于许多不同的软件系统,并因此不具体到仅仅是特定的软件组件上,它是训练。
2023-02-14 cs.AI cs.NE cs.SE