ScratchEval : A Multimodal Evaluation Framework for LLMs in Block-Based Programming
University of Waterloo(滑铁卢大学);Stanford University(斯坦福大学)
ScratchEval是首个用于评估LLM在Scratch块式编程中修复能力的可执行基准,通过多层协议测量功能正确性、修复质量和解释质量,支持领域微调和泛化研究。
2026-01-31 cs.SE
Raven: Rethinking Automated Assessment for Scratch Programs via Video-Grounded Evaluation
Anhui University of Science and Technology(安徽理工大学);University of Waterloo(滑铁卢大学)
Raven通过视频生成规则替代传统断言,实现Scratch程序的自动化评估,提升评估的一致性和可扩展性。
2026-04-20 cs.SE
Data-driven Analysis of Gender Differences and Similarities in Scratch Programs
基于块的编程环境(如Scratch)是计算机科学的一个重要切入点。为了创造一个有效的学习环境,有可能解决计算机科学中的性别不平衡问题,必须更好地了解儿童在使用这种编程环境方面的性别差异。在本文中,我们沿着两个维度探索Scratch程序中的性别差异和相似性:为了了解是什么促使女孩和男孩使用Scratch,我们首次使用无监督机器学习对Scratch程序进行主题分析,使用了由8-10年的女孩和男孩创建的317个程序的数据集。为了了解他们是如何为这些主题编程的,我们对这些项目中实现的代码应用了自动化的程序分析。我们发现,与常见的刻板印象一致,女孩更喜欢围绕独角兽、庆祝、舞蹈和音乐的话题,而男孩倾向于喜欢蝙蝠和食尸鬼的阴郁话题,或者足球或篮球等竞争性话题。女孩更喜欢动画和故事,从而产生更简单的控制结构,而男孩创建更多循环和条件语句的游戏,从而产生更复杂的程序。考虑这些差异有助于提高学习成果和由此产生的与计算相关的自我概念,这是培养对计算机科学长期兴趣的先决条件。
2021-08-16 cs.SE
Finding Anomalies in Scratch Assignments
在编程教育中,教师需要通过调查学生编写的代码来监控和评估学生的进度。用传统程序设计语言编写的程序的代码质量可以通过自动化测试、验证工具或链接器进行自动评估。在许多情况下,这些方法依赖于某种形式的手动编写的正式规范来分析给定的程序。然而,编写这样的规范对教师来说很难,因为他们往往没有接受过这项任务的充分培训。此外,缺乏对流行的基于块的介绍性程序设计语言(如Scratch)的自动化工具支持。异常检测是一种自动识别数据集中常见行为偏差的方法,而无需编写规范。在本文中,我们使用异常检测来自动查找课堂环境中Scratch代码的偏差,其中异常可以代表错误代码、替代解决方案或杰出作品。不同的编程任务的解决方案的评估表明,异常检测可以成功地应用于严格规定以及开放式的编程任务。
2021-02-15 cs.SE
LitterBox+: An Extensible Framework for LLM-enhanced Scratch Static Code Analysis
University of Passau(帕绍大学)
LitterBox+通过将Scratch块式代码转换为文本形式,利用LLM生成能力提升静态代码分析,提供API和界面扩展,支持代码查询与修复,提升学习者编程体验。
2025-10-02 cs.SE
LitterBox: A Linter for Scratch Programs
使用基于块的程序设计语言(如Scratch)创建程序既简单又有趣。然而,基于块的程序可能包含错误,特别是当学习者对编程有误解时。即使没有,Scratch代码通常质量很低,并且包含代码气味,进一步抑制了理解,重用和乐趣。为了解决这个问题,在本文中,我们介绍了LitterBox,一个用于Scratch程序的Linter。给定一个程序或其公共项目ID,LitterBox会根据已知错误和代码气味的模式检查程序。对于每一个发现的问题,LitterBox不仅提供了代码中的位置,还提供了潜在原因和可能的误解的有用解释。学习者可以通过一个易于使用的Web界面访问LitterBox,其中包含有关块代码中错误的可视信息,而对于研究人员来说,LitterBox为Scratch程序的静态分析提供了一个通用的,开源的和可扩展的框架。
2021-02-15 cs.PL cs.SE
A Block-Based Testing Framework for Scratch
针对 Scratch 缺乏自动化测试阻碍教师反馈的问题,提出基于积木的测试框架及配套界面,使师生能直接在 Scratch 中创建自动化测试,实验证明该框架准确率达 0.93 且获教师认可。
2024-10-11 cs.CY cs.SE
NuzzleBug: Debugging Block-Based Programs in Scratch
本文提出 Scratch 扩展 NuzzleBug,通过断点、单步、反向执行和执行问答支持儿童调试,并经师生评估验证其有效性。
2023-09-25 cs.SE
Anomaly Detection in Scratch Assignments
对于教师来说,用于调试和评估学生编程作业的自动化工具支持在他们的日常业务中有很大的帮助。对于通常用于向年轻学习者介绍编程的基于块的程序设计语言,存在测试框架和其他软件分析工具,但需要手动工作,例如编写测试套件或正式规范。然而,大多数使用Scratch等语言的教师都没有接受过此类任务的培训或经验。Linter不需要手工操作,但仅限于一般的错误,因此在学生解决方案中错过了潜在的特定于任务的错误。在以前的工作中,我们提出了使用异常检测来自动查找学生编程作业中的特定于项目的错误,而不需要教师方面的任何额外的手工劳动。对典型编程作业的学生解决方案的评估表明,异常检测是一种可靠的方法来定位错误的数据集的学生程序。在本文中,我们通过降低抽象级别来增强我们的初始方法。结果表明,较低的抽象级别可以集中异常检测的相关部分的程序。
2021-03-15 cs.SE
EmbeddedKittens: An Evaluation of Code Embeddings for Scratch
University of Passau(帕绍大学)
研究探讨哪种代码嵌入方法适用于Scratch编程教育。实例化四个LLMs和五种嵌入方法,创建任务及数据集进行评估,结果表明在开放Scratch数据集上训练的嵌入模型可捕获代码信息用于学习分析,无需特定任务微调。
2026-07-22 cs.SE
ScratchLens: Lens-Parametric Behavioral Equivalence for Scratch Programs
University of Waterloo(滑铁卢大学)
针对块编程语言中程序等价性判定问题,提出透镜参数化等价框架SPECTRA,通过因果IR、规范化和Mazurkiewicz迹商等技术,实现高精度行为等价判定。
2026-06-17 cs.PL cs.SE
A Scratch-like visual programming system for Microsoft Windows Phone 8
Pocket Code是Catrobat语言的免费开源移动可视化编程系统。它允许用户从8岁开始使用智能手机开发游戏和动画。孩子们可以用他们的Android手机、iPhone、Windows Phone或其他带有HTML5浏览器的智能手机创建程序。不需要笔记本或台式计算机。Pocket Code的灵感来自于麻省理工学院媒体实验室终身幼儿园小组开发的Scratch编程系统,但又与之不同。此工具演示描述了使用Pocket Code的实际体验,这是Catrobat语言的Windows Phone IDE。
2013-10-06 cs.CY cs.HC cs.SE
The Invisible Scheduler: Dragging a Sprite Can Change What a Scratch Program Does
University of Waterloo(滑铁卢大学)
本研究揭示Scratch中精灵堆叠顺序这一隐形调度器可改变程序行为,提出StackSwap工具检测此类并发问题,并在真实程序中证实其普遍性。
2026-09-30 cs.SE
Effects of Hints on Debugging Scratch Programs: An Empirical Study with Primary School Teachers in Training
学习者程序中的错误通常是基本误解的结果。教师经常面临的挑战是,首先必须了解这些错误,然后提出修复它们的方法。为了使教师能够有效和高效地这样做,最好支持他们识别和修复错误。误解通常会导致类似错误的重复模式,从而使自动化工具能够在常见错误模式出现时提供提示。在本文中,我们调查在何种程度上的提示提高了教师在调试学习者的程序使用一个队列的163名小学教师的培训,任务是纠正错误的Scratch程序的有效性和效率,有和没有提示的错误模式。我们的实验表明,自动生成的提示可以将查找和修复错误的时间从8.66分钟减少到5.24分钟,同时将正确解决方案的有效性提高34%。虽然这种改进是令人信服的,但可以说,培训中的教师可能首先需要学习调试“艰难的方式”,以免错过依靠工具学习的机会。因此,我们调查是否在训练过程中使用提示影响他们的能力,以识别和修复错误没有提示。我们的实验没有提供任何重要的证据表明,无论是学习调试与提示或学习调试“困难的方式”导致更好的学习效果。总的来说,这表明,错误模式可能是一个有用的概念,包括在课程中的教师培训,而工具支持,以认识到这些模式是可取的教师在实践中。
2021-08-16 cs.SE
Stitch: Step-by-step LLM Guided Tutoring for Scratch
针对Scratch等积木式编程新手语义错误难解决、现有直接给答案的调试方式不利于能力培养的问题,提出交互式分步辅导系统Stitch,经实证验证其学习效果优于直接答案模式和现有自动反馈工具。
2025-10-30 cs.SE
Code Perfumes: Reporting Good Code to Encourage Learners
像Scratch这样的基于块的程序设计语言使孩子们在学习编程的同时能够发挥创造力。尽管基于块的方法简化了程序的创建,但学习编程仍然具有挑战性。因此,自动化工具(如linter)通过提供有关程序中潜在错误或代码气味的反馈来支持学习者。即使这种反馈是精心设计和建设性的,它仍然代表纯粹的负面批评,并通过建设忽略了学习者在他们的计划中做得正确。在本文中,我们介绍了一个正交的方法来linting:我们补充的批评产生的linter与正反馈。我们引入代码香味的概念,作为代码气味的对应物,表明正确应用被认为是好的编程实践。通过分析学习者做错了什么,以及他们做对了什么,我们希望鼓励学习者,让教师和学生更好地了解学习者的进步,并支持采用自动反馈工具。使用一个目录的25个代码香水的Scratch,我们凭经验证明,这些代表频繁的做法在Scratch,我们发现,更好的程序确实包含更多的代码香水。
2021-08-13 cs.SE
Guiding Next-Step Hint Generation Using Automated Tests
使用Scratch学习基本编程对于新手和导师来说都很难:学生可能不知道如何在解决任务时取得进展,教师可能一次面对许多举手的教室,当新手独自在在线或虚拟课程中时,问题会加剧。因此,期望自动生成下一步提示以向被卡住的学生提供个人反馈,但是当前的方法依赖于多个手工制作或手工选择的样本解决方案的可用性,从这些样本解决方案中提取有效提示,并且尚未适应Scratch。自动化测试提供了一个机会,自动选择合适的候选解决方案的提示生成,甚至从学生的解决方案池使用不同的解决方案的方法和不同的质量。在本文中,我们提出了猫薄荷,第一个下一步提示生成方法的Scratch,它扩展了现有的数据驱动的提示生成方法与自动化测试。在学生Scratch程序的数据集上对Catnip进行的评估表明,生成的提示指向功能改进,并且使用自动化测试可以使提示更好地针对所选择的解决方案路径进行个性化。
2021-05-12 cs.SE
Testing Quantum Programs with Multiple Subroutines
由于量子程序的不确定性,量子程序中的错误很难追踪。因此,测试是保证量子软件质量的一种不可或缺的方法。现有的量子程序测试方法只针对量子电路或单个子程序,无法有效地测试多个子程序。在本文中,我们首先讨论了测试多子程序量子程序时必须考虑的几个关键问题,并指出现有测试方法的局限性和问题。然后,我们提出了一个新的框架,用于测试多子程序的量子程序,允许单元和集成测试。我们的框架包括两个新的测试覆盖率标准的量子变量的等价类划分,以指导我们的测试任务和技术来测试量子程序与几个常见的模式。我们还讨论了如何生成测试用例的基础上,我们的框架。为了评估我们的测试框架的有效性,我们实现了一个名为QSharpTester的工具,用于测试具有多个子例程的Q\#程序。我们用它来进行实验,从七个原始Q程序派生的数百个变异程序。实验结果表明,我们的测试方法可以处理更广泛的类型的量子程序比现有的,几乎所有的错误变异程序表现良好。
2023-02-27 cs.SE
A CEFR-Inspired Classification Framework with Fuzzy C-Means To Automate Assessment of Programming Skills in Scratch
Universidad Rey Juan Carlos(雷昂卡洛斯大学)
提出一种基于CEFR的Scratch项目评估框架,使用模糊C均值聚类对200万+项目分级,识别B2瓶颈并引入分类确定性指标以平衡自动反馈与人工审核。
2026-06-18 cs.AI cs.CY cs.LG
SpecFirst: Behavioral Specification Elicitation as a First-Class Step in Agent-Based Program Synthesis from Scratch
Queen's University(女王大学);University of Manitoba(曼尼托巴大学);Concordia University(康考迪亚大学)
SpecFirst是将行为规范提取设为独立前置阶段的两阶段框架,在ProgramBench上显著提升了从零开始的程序合成的测试通过率与二进制探索覆盖率。
2026-07-30 cs.CL cs.SE
Intent-Based Mutation Testing: From Naturally Written Programming Intents to Mutants
SnT, University of Luxembourg(卢森堡大学 SnT);Medtech, South Mediterranean University(南地中海大学 Medtech)
提出基于意图的变异测试,通过改变被测程序实现的编程意图来生成变异体,与传统测试不同,能捕获不同类型故障,用大语言模型实现并评估,可补充传统变异测试。
2026-07-07 cs.SE
ViScratch: Using Large Language Models and Gameplay Videos for Automated Feedback in Scratch
ViScratch 是首个面向 Scratch 的多模态反馈生成系统,利用项目积木代码和游戏视频,通过视觉语言模型对齐视觉症状与代码结构,提出并验证 AST 级修复,在错误识别和修复质量上显著优于现有工具。
2025-09-14 cs.PL cs.SE
On the Applicability of Language Models to Block-Based Programs
本文探究语言模型对基于块的编程语言(如Scratch)的适用性,通过n-gram模型和transformers建模,在代码补全和错误发现任务上验证可行性,为改进相关工具和分析奠定基础。
2023-02-08 cs.PL cs.SE
RePurr: Automated Repair of Block-Based Learners' Programs
针对基于块的学习者程序存在的语义错误修复问题,提出RePurr方法,通过改进故障定位、恢复整形手术假设及优化适应度评估,实现自动化修复,为生成学习提示提供基础。
2025-04-16 cs.SE
On Testing Machine Learning Programs
如今,由于深度学习和强化学习的最新突破,我们正在许多安全关键系统中广泛采用机器学习(ML)模型。许多人现在每天都在与基于ML的系统进行交互,例如,亚马逊Alexa或谷歌Home等虚拟个人助理使用的话音识别系统。随着ML领域的不断发展,我们可能会在金融、能源、健康和交通等广泛领域看到变革性的进步。鉴于基于ML的系统在我们日常生活中的重要性日益增加,确保其可靠性变得非常重要。最近,软件研究人员已经开始采用来自软件测试领域的概念(例如,代码覆盖率,突变测试或基于属性的测试),以帮助ML工程师检测和纠正ML程序中的错误。本文回顾了当前ML程序的现有测试实践。首先,我们确定并解释在测试ML程序时应该解决的挑战。接下来,我们报告了文献中用于测试ML程序的现有解决方案。最后,我们确定了与ML程序测试相关的文献中的差距,并为科学界提出了未来研究方向的建议。我们希望对软件测试实践的全面回顾将帮助ML工程师确定正确的方法来提高基于ML的系统的可靠性。我们还希望研究界能够按照我们提出的研究方向采取行动,以推进机器学习程序测试的最新发展。
2018-12-05 cs.SE
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
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
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
SchedCheck: Schedule-Robustness Analysis for Event-Driven Block Programs
University of Waterloo(滑铁卢大学)
针对Scratch等块语言中并发程序的调度敏感行为,提出基于偏序探索的调度鲁棒性分析方法SchedCheck,在真实学生项目中发现至少21%的并发程序存在调度敏感问题。
2026-07-02 cs.SE
Distinguishability-guided Test Program Generation for WebAssembly Runtime Performance Testing
本文提出WarpGen方法,通过从历史问题触发测试程序中提取算子并插入种子程序生成测试程序,并以可区分性指标评估质量,在三个Wasm运行时中发现七个新性能问题。
2024-12-28 cs.SE
Common Patterns in Block-Based Robot Programs
可编程机器人具有吸引力,玩起来很有趣,与现实世界互动,因此非常适合向年轻学习者介绍编程。介绍性的机器人程序设计语言通常扩展现有的基于块的语言,如Scratch。虽然用这些语言进行编程教学已经很成熟,但机器人程序中与现实世界的交互会带来特定的挑战,学习者和教育者可能需要帮助和反馈。提供这种反馈的一种实用方法是识别并指出代码中指示好或坏解决方案的模式。虽然这种模式已经被定义为常规的基于块的程序,机器人特定的编程方面还没有考虑到目前为止。因此,本文的目的是确定特定的模式,机器人编程的基于Sockerch的mBlock程序设计语言,这是用于流行的mBot和科迪洛基机器人。我们确定:(1)26种错误模式,表示错误的代码;(2)3种代码气味,表示可能工作但以令人困惑或难以理解的方式编写的代码;(3)18种代码气味,表示代码可能很好的方面。我们扩展了LitterBox分析框架,以自动识别mBlock程序中的这些模式。在3,540个mBlock程序的数据集上进行评估,我们总共发现了6,129个错误模式,592个代码气味和14,495个代码气味。这证明了我们的方法为学习者和教育者提供反馈和帮助的潜力。
2022-08-29 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
Neuroevolution-Based Generation of Tests and Oracles for Games
类游戏程序在许多软件工程领域(如移动应用程序、Web应用程序或编程教育)中越来越受欢迎。然而,为具有挑战人类玩家的目的的程序创建测试对于自动测试生成器来说是一项艰巨的任务。即使测试生成成功地找到了一个相关的事件序列来执行程序,游戏的随机性意味着它既不可能重现这个序列下的确切程序行为,也不可能创建测试断言来检查观察到的随机游戏行为是否正确。为了克服这些问题,我们提出Neatest,一种新的测试生成器的基础上的神经进化增强拓扑(NEAT)算法。Neatest系统地探索程序的语句,并创建操作程序的神经网络,以可靠地到达每个语句-也就是说,Neatest学习以可靠地覆盖代码的不同部分的方式玩游戏。当网络学习实际的游戏行为时,它们也可以作为测试神谕,通过评估被测程序的观察行为与程序的假定正确版本相比有多令人惊讶。我们在Scratch,一个教育编程环境的背景下评估这种方法。我们对25个非平凡的Scratch游戏的实证研究表明,我们的方法可以成功地训练神经网络,不仅比传统的静态输入序列组成的测试套件更有弹性的随机影响,但也是非常有效的平均突变得分超过65%。
2022-08-29 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
MorphQ: Metamorphic Testing of the Qiskit Quantum Computing Platform
MorphQ提出首个针对量子计算平台的蜕变测试方法,通过程序生成器和量子蜕变关系缓解预言机问题,在Qiskit上两天生成超8000个程序对,发现13个错误,其中9个已确认。
2023-02-09 cs.SE
Is Measurement Enough? Rethinking Output Validation in Quantum Program Testing
该研究通过实证分析量子程序测试中的输出验证方法,对比基于测量与基于状态向量的验证,发现前者适用于简单检查,后者更利于复杂行为评估。
2025-10-19 cs.SE
Quantum Program Testing Through Commuting Pauli Strings on IBM's Quantum Computers
针对工业量子程序缺乏完整规约且难与错误缓解兼容的问题,本文提出基于对易 Pauli 字符串的 QOPS 测试方法,并在近19.5万个程序和三台 IBM 真机上验证其完美分类效果。
2024-08-01 cs.SE
A Graphical Tool for Testing Timed Systems based on Meta- Modeling and Graph Grammars
测试是验证系统以确保定性和定量执行要求的常用方法之一。在本文中,我们感兴趣的形式化测试,使用图变换,因此,我们提出了一种方法,翻译的持续时间动作时间自动机模型(DATA*)的状态数高到时间拒绝区域图(TRRG)创建一个规范的测试人员和生成测试用例使用图变换。但是,我们的方法允许自动生成DATA*、TRRG和规范测试器的可视化建模工具。从头开始构建可视化建模工具的成本令人望而却步。Meta- modeling方法对于处理这个问题是有用的,因为它允许通过图语法对形式主义本身进行建模。使用元建模工具AToM 3。
2012-09-24 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
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