Insights from the Field: Exploring Students' Perspectives on Bad Unit Testing Practices
本文通过让三所高校184名学生使用IDE插件自动检测测试异味,考察其对不良单元测试实践的认知及插件效果,为优化测试教学和代码评审提供依据。
2024-04-15 cs.SE
SmartUnit: Empirical Evaluations for Automated Unit Testing of Embedded Software in Industry
在本文中,我们针对嵌入式软件的自动化单元覆盖率为基础的测试。为了实现这一目标,通过分析工业需求和我们以前在自动化单元测试工具CAUT上的工作,我们重新构建了一个新的工具SmartUnit,以解决我们合作伙伴公司的工程需求。SmartUnit是一个动态符号执行实现,支持语句、分支、边界值和MC/DC覆盖。SmartUnit已经在实际项目中测试了超过一百万行代码。出于保密动机,我们选择了三个内部真实项目进行实证评估。我们还对两个开源数据库项目SQLite和PostgreSQL进行了评估,以测试我们的工具的可扩展性,因为嵌入式软件项目的规模大多不大,平均只有5 K-50 K行代码。从我们的实验结果来看,一般来说,商业嵌入式软件中90%以上的函数实现了100%的语句、分支、MC/DC覆盖,SQLite中80%以上的函数实现了100%的MC/DC覆盖,PostgreSQL中60%以上的函数实现了100%的MC/DC覆盖。此外,SmartUnit能够在单元测试级别找到运行时异常。我们还报告了SQLite中的异常,如数组索引越界和被零除。此外,我们还分析了自动化单元测试覆盖率低的原因,并对工业上手工单元测试相对于自动化单元测试的情况进行了调查。
2018-06-17 cs.SE
Engaging Developers in Exploratory Unit Testing through Gamification
本文提出在 IDE 中使用 Gamekins 通过挑战和任务引导探索性单元测试,实验表明其可提升覆盖率、缺陷检测效果与开发者参与度。
2024-08-09 cs.SE
TUnit - Unit Testing For Template-based Code Generators
基于模板的代码生成器开发作为模型驱动开发(MDD)的一部分,需要强大的机制和工具来支持开发人员提高健壮性,即,为指定的输入生成期望的代码。尽管已经提出了不同的测试方法,但是仍然缺乏一种方法,该方法仅测试基于模板的代码生成器的一部分,并且可以在开发的早期阶段使用。因此,在本文中,我们提出了一种方法和基于JUnit的测试基于模板的代码生成器的实现。它不是测试一个完整的代码生成器,而是通过模拟环境支持模板的执行来简化部分测试。这简化了在开发的早期阶段对代码生成器的测试以及对代码生成器的新部件或更改部件的测试。为了测试由被测模板生成的源代码,提出了不同的方法,包括字符串比较,基于API的断言,和基于抽象语法树的断言。
2016-06-15 cs.SE
ProbTest: Unit Testing for Probabilistic Programs (Extended Version)
本文提出黑盒单元测试方法 ProbTest,基于优惠券收集者问题自动确定概率程序所需测试次数并提供统计保证,以 PyTest 插件实现,并在 Gymnasium 和随机数据结构案例中评估。
2025-09-02 cs.SE
TestART: Improving LLM-based Unit Testing via Co-evolution of Automated Generation and Repair Iteration
TestART通过生成与修复的协同进化,利用模板修复、覆盖率反馈和正向提示注入,提升LLM单元测试的通过率与覆盖率。
2025-03-31 cs.SE
Unit verification procedure as a test of real time messaging-based processes
本文介绍了与安全关键医疗器械测试相关的博士研究的第一批结果:匈牙利医疗器械制造商系统执行的案例研究。本文简要介绍了目前正在使用的测试过程。强调了软件行业中不太常用的测试方法的元素。案例研究中实际测试过程的终点是进一步研究的起点:测试结果的自动化分析。作者开始开发一种新的方法,使用工具的组合,并建模一个基于模型的测试生成工具-这是既新颖又密集的研究领域。
2014-04-27 cs.SE
IntelliGame in Action: An Experience Report on Gamifying JavaScript Unit Tests
本研究将原面向Java的游戏化插件IntelliGame定制适配至JavaScript单元测试场景,通过152名参与者使用Jest框架的对照实验,验证了其普适性并分析了对测试行为与开发者体验的影响,为JavaScript测试方法优化提供参考。
2024-03-06 cs.SE
Extreme mutation testing in practice: An industrial case study
变异测试用于评估测试集的有效性。近年来,出现了一种称为极端突变测试的有前途的变化,这种变化在计算上更便宜。它标识了可以完全删除其功能的方法,并且测试套件不会注意到它,尽管有覆盖率。这些方法被称为伪测试。在本文中,我们比较了传统和极端突变测试的执行和分析时间,并讨论了它们在实践中的意义。我们将研究极端突变测试如何影响当前的软件开发实践,并讨论需要解决的开放性挑战,以促进行业采用。为此,我们进行了一个工业案例研究,包括在半导体行业的一个大型软件项目中运行传统和极端突变测试,该项目由超过11,000个单元测试的测试套件覆盖。除此之外,我们还对25个伪测试方法进行了定性分析,并采访了两个有经验的开发人员,看看他们是如何编写单元测试的,并收集了关于极端突变测试结果的有用性的意见。我们的结果包括执行时间,分数,执行的测试和mutator的数量,为什么方法是伪测试的原因,以及采访摘要。我们的结论是,较短的执行和分析时间是很明显的,在实践中,极端的突变测试补充编写单元测试与代码覆盖工具。我们建议,伪测试的代码应突出显示在代码覆盖率报告,极端的突变测试应在编写单元测试,而不是在一个解耦的会话。未来的研究应该研究如何在编写单元测试时执行极端突变测试,以便结果足够快但仍然有意义。
2021-03-15 cs.SE
KompicsTesting - Unit Testing Event Streams
在本文中,我们提出了KompicsTesting,一个框架的单元测试组件的Kompics组件模型。Kompics中的组件是事件驱动的实体,它们仅通过消息传递进行异步通信。与Actor模型中的Actor类似,它们在消息传递中不共享其内部状态,与使用共享状态的其他并发模型相比,这使得它们更不容易出错。然而,它们既不能避免简单的逻辑和规范错误,也不能避免诸如源于非确定性的数据字符之类的错误。因此,需要一种工具,能够以类似于用于函数和模块化段代码的xUnit框架的方式,对消息传递组件进行快速和迭代的开发和测试。这些框架以命令式的方式工作,不适合测试消息传递组件,因为这些组件的行为被编码在它们发送和接收的消息流中。在这项工作中,我们提出了一个理论框架,用于描述和验证消息传递组件的行为,独立的模型和框架实现,以类似于使用正则表达式描述字符流的方式。我们展示了如何使用这种方法来执行黑盒和白盒测试的组件,并说明其可行性,通过设计和实现基于这种方法,KompicsTesting的原型。
2017-05-12 cs.SE
On Extracting Unit Tests from Interactive Programming Sessions
软件工程方法论建议开发人员应该捕获他们的努力,以确保程序在可重复和自动化的工件中正确运行,例如单元测试。然而,当从探索性测试到脚本测试的范围内观察开发人员活动时,我们发现许多工程活动都包括探索性测试的爆发。在本文中,我们建议利用这些探索性的测试突发自动提取脚本测试从这些会话的记录。为了做到这一点,我们窃听开发环境,这样我们就可以记录所有的程序输入,所有用户发出的函数调用,以及探索性测试会话的所有程序输出。然后,我们建议使用机器学习(即聚类)从这些记录中实时提取脚本测试用例。我们概述了两个早期原型,一个是静态的,一个是动态的。我们通过例子概述了这个想法如何融入编程的更大研究方向。
2012-12-08 cs.SE
JUGE: An Infrastructure for Benchmarking Java Unit Test Generators
研究人员和实践者已经设计并实现了各种自动化测试用例生成器来支持有效的软件测试。这样的生成器存在于各种语言(例如,Java、C#或Python)和各种平台(例如,桌面、网络或移动应用程序)。这种发生器表现出不同的有效性和效率,这取决于它们旨在满足的测试目标(例如,库的单元测试与整个应用程序的系统测试)以及它们实现的底层技术。在这种情况下,从业人员需要能够比较不同的发电机,以确定最适合他们的要求,而研究人员寻求确定未来的研究方向。这可以通过系统地对不同发电机进行大规模评估来实现。然而,进行这种经验性评价并非易事,需要作出大量努力来收集基准,建立评价基础设施,并收集和分析结果。在本文中,我们介绍了我们的JUnit生成基准测试基础设施(JUGE)支持生成器(例如,基于搜索、基于随机、符号执行等)寻求自动化用于各种目的的单元测试的产生(例如,验证、回归测试、故障定位等)。其主要目标是通过标准化评估和比较过程,减少总体工作量,简化几个发电机的比较,并加强学术界和工业界之间的知识转移。自2013年以来,与基于搜索的软件测试研讨会一起举办的单元测试工具竞赛已经举办了八届,并使用和更新了JUGE。因此,越来越多来自学术界和工业界的工具(超过十种)在JUGE上进行了评估,这些工具多年来已经成熟,并可以确定未来的研究方向。
2022-10-28 cs.SE
Unit Testing in ASP Revisited: Language and Test-Driven Development Environment
University of Calabria(卡拉布里亚大学);University of Applied Sciences Upper Austria(上奥地利应用科学大学)
本文重新审视ASP单元测试语言与工具,提出支持内联测试的新规范语言,并分析其计算复杂度,构建测试驱动开发环境。
2024-01-04 cs.AI cs.SE
Testing Multi-Subroutine Quantum Programs: From Unit Testing to Integration Testing
本文针对多子程序量子程序的测试需求,提出从单元到集成测试的完整测试准则与技术,涵盖IO分析、关系检查、结构及行为测试等,并通过变异体和随机输入验证了方法的有效性。
2024-05-24 cs.SE quant-ph
Toward Automated Virtual Electronic Control Unit (ECU) Twins for Shift-Left Automotive Software Testing
University of Applied Sciences Esslingen(埃斯林根应用科技大学);NUVUS GmbH(NUVUS有限公司)
本研究提出一种自动化虚拟ECU双胞胎方法,通过代理驱动的工作流和反馈机制,实现早期软件测试和集成,提升测试的可重复性和安全性。
2026-02-20 cs.SE
Taming the Beast: Fully Automated Unit Testing with Coyote C++
本文提出 Coyote C++,一个面向 C 和 C++ 的全自动化白盒单元测试工具,结合 concolic 执行引擎与自动化测试套件生成,实现高覆盖率与高速测试,并支持手动优化,使 C++ 自动化测试在工业应用中真正可行。
2024-01-04 cs.PL cs.SE
Fill in the Blank: Context-aware Automated Text Input Generation for Mobile GUI Testing
自动化GUI测试被广泛用于帮助确保移动应用程序的质量。然而,许多GUI需要适当的文本输入才能进入下一页,这仍然是测试覆盖率的一个突出障碍。考虑到有效输入的多样性和语义要求(例如,航班起飞、电影名称),但是使文本输入生成自动化具有挑战性。受预先训练好的大语言模型(LLM)在文本生成方面取得显著进展的启发,提出了一种基于LLM的QTypist方法,用于根据GUI上下文智能地生成语义输入文本。为了提高LLM在移动测试场景中的性能,我们开发了一种基于数据库的数据构建和调优方法,该方法自动提取模型调优的提示和答案。我们对来自Google Play的106个应用程序进行了QTypist评估,结果显示QTypist的通过率为87%,比最佳基线高出93%。我们还将QTypist与自动化GUI测试工具集成,与原始工具相比,它可以覆盖42%的应用程序活动,52%的页面,并随后帮助揭示122%的错误。
2022-12-09 cs.SE
Did You Remember to Test Your Tokens?
身份验证是确认系统用户身份的关键安全功能,通常在Spring Security等框架的帮助下实现。这是一个复杂的功能,应该在开发的所有阶段进行可靠的测试。单元测试是一种有效的技术,用于细粒度验证未广泛用于测试身份验证的特征行为。部分问题在于帮助开发人员进行单元测试安全特性的资源有限。大多数安全测试指南推荐的测试用例都是从“黑盒”或渗透测试的角度出发的。这些资源对于编写新的单元测试的开发人员,或者想要从安全性的角度来看待覆盖率的开发人员来说并不容易。在本文中,我们通过应用一种基于理论的方法来解决这些问题,通过分析来自53个开源Java项目的481个JUnit测试来识别令牌身份验证的常见(单元)测试用例。本研究的结果是一个开发人员友好的单元测试指南,该指南被组织为53个令牌身份验证测试用例的目录,代表了从我们分析的数据集中学习到的17个场景、40个条件和30个预期结果的独特组合。我们在测试指南中补充了常见的测试气味,以避免。为了验证测试指南的准确性和实用性,我们从选定的开发人员那里寻求反馈,其中一些人在我们的数据集中编写了单元测试。
2020-06-25 cs.SE
Knowledge Matters: Injecting Project and Testing Knowledge into LLM-based Unit Test Generation
Sun Yat-sen University(中山大学)
本文提出KTester框架,通过整合项目特定知识和测试领域知识,提升基于大语言模型的单元测试生成能力,实验表明其在多个关键指标上优于现有方法,提高了测试通过率和覆盖率,且生成的测试更易读易维护。
2026-06-04 cs.SE
Multi-Agent LLM Collaboration for Unit Test Generation via Human-Testing-Inspired Workflows
Nanjing University of Science and Technology(南京理工大学);Nanjing University(南京大学);Huawei Cloud Computing Technologies Co., Ltd.(华为云计算技术有限公司)
研究针对现有基于大语言模型的单元测试生成方法的局限,提出TestAgent,通过多智能体协作机制模拟人工测试,设计专门智能体、配备工具API并构建知识图谱,在Java项目实验中取得优异结果,性能优于基线和搜索工具。
2026-07-13 cs.SE
Coyote C++: An Industrial-Strength Fully Automated Unit Testing Tool
本文介绍了Coyote C++,一款基于混合符号执行的工业级C和C++全自动化单元测试工具,它无需用户参与即可一键完成测试生成与执行,持续达到约90%的代码覆盖率。
2023-10-23 cs.PL cs.SE
Search-based Hyperparameter Tuning for Python Unit Test Generation
JetBrains Research(JetBrains 研究院);University of Passau(帕绍大学)
本研究提出用差分进化调优Pynguin中DynaMOSA和MIO算法的超参数,实验证明可显著提升测试覆盖率,且比网格搜索更高效。
2025-10-09 cs.SE
Mock Deep Testing: Toward Separate Development of Data and Models for Deep Learning
针对深度学习数据与模型难以独立测试的问题,提出Mock深度测试方法及KUnit框架,通过模块化分解和Mock依赖建模实现组件单元测试,有效识别并解决问题,提升开发效率。
2025-02-11 cs.SE
Automated Generation of Computer Graded Unit Testing-Based Programming Assessments for Education
代码的自动评估,特别是支持教育,是包括在几个学习管理系统(LMS)的一个重要功能,至少在某种程度上。可以设计几种类型的评估,例如要求“填充以下代码”,“编写一个函数”或“纠正以下程序中的错误”的练习。教师的一个困难是创建这样的编程练习,特别是当它们有些复杂时。事实上,教师需要编写练习陈述,思考解决方案,并提供平台评分所需的所有额外信息。另一个困难发生时,教师想使用他们的练习在另一个LMS平台。由于还没有标准的方法来定义和描述编码练习,教师必须将他们的练习重新编码到其他LMS中。本文提出了一种工具,可以自动生成编程练习,从一个单一的和唯一的描述,并可以解决在几个程序设计语言。生成的练习可以由同一平台自动评分,为用户提供智能反馈,以支持他们的学习。本文重点介绍并详细介绍了基于单元测试的练习,并提供了对该平台未来可能生成的新类型练习的见解,以及一些额外的开发。
2019-11-27 cs.SE
Fuzzy Adaptive Tuning of a Particle Swarm Optimization Algorithm for Variable-Strength Combinatorial Test Suite Generation
组合交互测试是一种重要的软件测试技术,近年来引起了广泛的关注。它可以通过考虑输入参数组合之间的相互作用来减少测试用例的数量。经验证据表明,它可以有效地检测故障,特别是高度可配置的软件系统。在实际的软件测试中,输入变量之间的交互作用可能会有所不同,变强度组合交互测试(VS-CIT)可以利用这一点来提高测试效率。变强度测试集的生成是一个非确定性的多项式时间(NP)计算难题\cite{BestounKamalFuzzy2017}。研究表明,与VS-CIT问题的替代方案相比,粒子群优化(PSO)等基于随机种群的算法可能是有效的。然而,它们需要对开发和探索权衡进行详细控制,以避免过早收敛(即陷入局部最优)以及提高解决方案的多样性。在这里,我们提出了一个新的变种的PSO Mamdani模糊推理系统\cite{Camastra2015,TSAKIRIDIS2017257,KHOSRAVANIAN2016280}的基础上,允许自适应选择其全局和局部搜索操作。我们详细介绍了这种组合算法的设计,并通过多个合成和基准问题的实验进行评估。我们的结论是,模糊自适应选择的全局和局部搜索操作,至少是可行的,因为它只执行第二个最好的离散变异的PSO,称为DPSO。在获得最佳平均测试集规模方面,模糊自适应有时甚至优于DPSO。我们讨论了这种性能背后的原因,并概述了未来工作的相关领域。
2018-10-13 cs.SE
Beyond Accuracy: An Empirical Study on Unit Testing in Open-source Deep Learning Projects
Monash University(莫纳什大学);Jilin University(吉林大学);University of Oulu(奥卢大学)
本文通过对 9,129 个 GitHub 开源深度学习项目的实证分析,揭示其单元测试覆盖率低且与项目质量指标相关,并构建了单元测试与故障的映射分类法,以强调单元测试对深度学习项目可靠性的重要性。
2024-02-26 cs.AI cs.SE
Distributed, Cross-Platform, and Regression Testing Architecture for Service-Oriented Architecture
根据领先的IT专家的说法,当今的大型企业正在经历业务转型。他们采用基于服务的IT模型(如SOA)来开发企业信息系统和应用程序。事实上,SOA是松散耦合的可互操作组件的集成,可能使用异构软件技术和硬件平台构建。因此,传统的测试架构不足以验证和确认SOA系统的质量以及它们是否按照规范运行。本文首先讨论了各种最先进的SOA应用程序测试方法,然后提出了一种新的自动化,分布式,跨平台,面向SOA系统的回归测试架构。该测试体系结构由测试引擎、测试代码生成器、测试用例生成器、测试执行器和测试监控器等测试单元组成。实验结果表明,所提出的测试架构管理使用并行代理测试异构Web服务的技术是不兼容的测试框架。作为未来的工作,测试SOA应用程序的非功能方面进行调查,以便允许测试性能,安全性,可用性和可伸缩性等属性。
2012-03-24 cs.SE
Taming the Concurrency: Controlling Concurrent Behavior while Testing Multithreaded Software
开发多线程软件是一项极具挑战性的任务,即使对于有经验的程序员也是如此。挑战不会在代码编写完成后结束。还有其他与开发过程相关的任务在多线程环境中变得异常困难。一个很好的例子是为并发数据结构创建单元测试。除了所需的测试逻辑之外,这样的测试还包含大量的同步代码,这使得它很难理解和维护。在我们的工作中,我们提出了一种新的方法来指定和执行多线程测试的时间表。它允许显式指定某些单元测试所需的线程调度,并在测试执行期间强制执行,从而使开发人员能够构建确定性和可重复的单元测试。这一目标是通过组合每个现代运行时/IDE中可用的一些基本工具来实现的,并且不需要专用的运行时环境、新的规约语言或测试修改下的代码。
2014-09-03 cs.SE
Bridging the Gap between Unit Test Generation and System Test Generation
常见的测试生成器分为两类。在单元级别生成测试输入是快速的,但是当使用系统上下文中不会出现的输入调用函数时,可能会导致错误警报。如果在系统级生成的输入导致故障,这是一个真正的警报,因为输入也可能来自用户或第三方;但系统测试要慢得多。在本文中,我们引入了测试生成桥的概念,它将系统测试的准确性与单元测试的速度联系起来。测试生成桥允许将任意系统测试生成器与任意单元测试生成器组合。它通过从系统(测试)执行中分割参数化的单元测试来实现。这些单元测试在从系统测试记录的上下文中运行,但是单独的参数留给单元测试生成器系统地探索。这允许符号测试生成器(如KLEE)在记录的系统上下文中对单个函数进行操作。如果测试发生器检测到故障,我们将故障诱导参数提升回系统输入;如果故障可以在系统级重现,则将其报告为真报警。我们的BASILISK原型可以从复杂系统中提取和测试单元,例如Web/Python/SQLite/C堆栈;在其评估中,它实现了比最先进的系统测试生成器更高的覆盖率。
2019-06-04 cs.SE
ATTest: Agent-Driven Tensor Testing for Deep Learning Library Modules
Nanjing University(南京大学);Nanjing University of Science and Technology(南京理工大学)
ATTest通过基于代理的框架生成深度学习库模块的高效单元测试,显著提升测试覆盖率和稳定性。
2026-02-15 cs.SE
Automated Support for Unit Test Generation: A Tutorial Book Chapter
单元测试是测试的一个阶段,在这个阶段中,可以与系统的其余部分(通常是一个类)隔离测试的最小代码段被测试。单元测试通常以可执行代码的形式编写,通常采用单元测试框架(如Python的pytest)提供的格式。创建单元测试是一个时间和精力密集型的过程,其中包含许多重复的手动元素。为了说明AI如何支持单元测试,本章介绍了基于搜索的单元测试生成的概念。这种技术框架的测试输入的选择作为一个优化问题-我们寻求一组测试用例,满足测试人员的一些可衡量的目标-并释放强大的元启发式搜索算法,以确定最好的测试用例在有限的时间范围内。本章介绍了两种算法,它们可以生成pytest格式的单元测试,并针对源代码语句的覆盖率进行了调整。本章最后讨论了更高级的概念,并为进一步阅读人工智能如何在单元测试软件时支持开发人员和测试人员提供了指针。
2021-10-26 cs.AI cs.NE cs.SE
Unit Testing, Model Validation, and Biological Simulation
软件行业的发展与确保复杂软件可靠性的工具和文化实践的发展齐头并进。这些工具和实践现在被认为是现代软件管理的基本要素。随着计算模型和方法在生物科学中越来越普遍,研究这些实践如何加速生物软件开发和提高研究质量是很重要的。在这篇文章中,我们给出了一个集中的案例研究,我们的经验与实践的单元测试和测试驱动的开发OpenWorm,一个开放的科学项目,旨在建模秀丽隐杆线虫。我们确定和讨论的挑战,将测试驱动的开发到一个异构的,数据驱动的项目,以及模型验证测试的作用,一类独特的软件,表达科学模型的测试。
2017-03-05 cs.SE q-bio.QM
Tests4Py: A Benchmark for System Testing
针对现有基准测试存在系统预言机不足、单元测试稀疏的问题,研究团队推出源自BugsInPy的Tests4Py基准,含79个bug、配备功能正确性验证预言机且支持两类测试生成,可为测试生成等领域研究提供前沿评估支撑。
2024-05-14 cs.SE
Google Test/Google Mock to Verify Critical Embedded Software
关键嵌入式系统(CES)在医疗、汽车或工业领域已经变得无处不在。这些系统中的软件故障可能是灾难性的,不仅可能导致经济上的严重后果,而且可能危及生命。然而,除了它们的无所不在,CES的复杂性已经增长到极端的程度,面对这种增长,制造商和供应商越来越感兴趣的是测试逻辑正确性和验证软件部分是无错误的有效方法。软件测试是用于检测和纠正软件代码中发现的错误和故障的方法的集合。软件测试的第一阶段是单元测试,这是一种广泛使用的技术,其中源代码的各个单元被隔离,通常被划分为类和函数,并单独测试以帮助验证系统的行为和功能。在本章中,将对GoogleTest(GTest)进行概述,这是一个xUnit C++测试框架,并将对C++语言中使用的不同可用单元测试框架进行比较。由于关键嵌入式系统的复杂性,很难隔离和测试系统的行为,模拟技术被认为是使一个真正的实现被替换为一个假的实现,替换允许克服与硬件依赖性和外部因素有关的挑战。此外,本章还介绍了GoogleMock,它是GoogleTest C++测试框架的一部分,可以使测试隔离运行。
2022-08-09 cs.SE
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
On the Feasibility of Quantum Unit Testing
本文通过179万余个变异量子电路实证比较统计测试与量子中心测试,证明状态向量测试和逆测试在精度与效率上优于传统方法,为量子软件单元测试提供了更可靠的策略。
2025-07-23 cs.SE quant-ph
Testing Framework Migration with Large Language Models
DCC, UFMG(计算机科学与技术学院, 米纳斯吉拉斯联邦大学)
本文研究了大语言模型在自动化unittest到Pytest测试框架迁移中的能力,发现其在迁移过程中存在成功与失败并存的情况,且不同模型在迁移策略上表现各异。
2026-02-03 cs.SE
Basic Block Coverage for Search-based Unit Testing and Crash Reproduction
基于搜索的技术已被广泛用于白盒测试生成。这些方法中的许多依赖于方法级和分支距离算法来指导搜索过程,并生成具有高的线和分支覆盖率的测试用例。尽管这两种算法取得了积极的结果,但它们只使用与显式分支的覆盖相关的信息(例如,由条件和循环语句指示),但忽略基本代码块中潜在的隐式分支。如果这种隐式分支发生在运行时(例如,如果在无分支方法中抛出异常),则现有的适应度函数不能指导搜索过程。为了解决这个问题,我们引入了一个新的次要目标,称为基本块覆盖(BBC),它考虑到控制流图中的相关基本块的覆盖水平。我们评估了BBC对基于搜索的单元测试生成(使用DynaMOSA算法)和基于搜索的崩溃再现(使用STDistance和WeightedSum适应度函数)的影响。我们的研究结果表明,对于单元测试生成,BBC提高了分支覆盖率的生成测试。虽然很小(约1.5%),但分支覆盖率的这种改进是系统性的,并导致输出域覆盖率和隐式运行时异常覆盖率的增加,以及运行时状态的多样性。在碰撞再现方面,结合STDistance和WeightedSum,BBC有助于为每个适应度函数再现3个新的碰撞。BBC使用STDistance和WeightedSum分别显著减少了再现43.5%和45.1%的碰撞所需的时间。对于这些崩溃,BBC平均减少了71.7%(对于STDistance)和68.7%(对于WeightedSum)的消耗时间。
2022-03-04 cs.SE
Tuning Random Generators: Property-Based Testing as Probabilistic Programming
University of Washington(华盛顿大学);University of California, Los Angeles(加州大学洛杉矶分校);University of Maryland(马里兰大学);University of Pennsylvania(宾夕法尼亚大学)
针对基于属性测试中生成器手动调优繁琐、分布受限的问题,提出基于概率编程的自动离线调优技术,实现Loaded Dice系统,可有效优化生成器分布,将漏洞发现速度提升3.1-7.4倍。
2025-11-16 cs.PL cs.SE
Parameter-Efficient Fine-Tuning of Large Language Models for Unit Test Generation: An Empirical Study
Norwegian University of Science and Technology(挪威科学技术大学)
本文通过实证研究探讨了大型语言模型在单元测试生成中的参数高效微调方法,发现LoRA在某些情况下性能可与全量微调媲美,提示微调在成本效益上表现最佳。
2025-11-23 cs.AI cs.LG cs.SE
WIP: A Unit Testing Framework for Self-Guided Personalized Online Robotics Learning
University of Nevada, Reno(内华达大学雷诺分校);University of Puerto Rico, Arecibo(波多黎各大学阿雷西博分校);East Carolina University(东卡罗来纳大学)
针对传统在线机器人编程学习反馈不足、教学资源有限的问题,本研究开发整合单元测试系统的课程工作流,提供实时反馈,支持学生自主调试学习,打造个性化交互式学习环境。
2024-05-18 cs.HC cs.RO cs.SE
Input-Gen: Guided Generation of Stateful Inputs for Testing, Tuning, and Training
针对机器学习代码模型缺乏执行时输入数据的问题,本文提出编译器内的 Input-Gen,可跨语言和架构大规模生成有状态输入,并在 ComPile 上实现 90% 模块有效输入及最高 45% 块覆盖率。
2024-06-13 cs.PF cs.PL cs.SE
Generating Accurate Assert Statements for Unit Test Cases using Pretrained Transformers
Microsoft(微软)
单元测试代表了软件测试金字塔的基础,位于集成和端到端测试之下。自动化软件测试的研究人员已经提出了各种各样的技术来帮助开发人员完成这项耗时的任务。在本文中,我们提出了一种方法来支持开发人员编写单元测试的情况下,生成准确和有用的断言语句。我们的方法是基于一个国家的最先进的Transformer模型,最初预训练的英语文本语料库。这个语义丰富的模型然后以半监督的方式在大型源代码语料库上进行训练。最后,我们在为单元测试生成断言语句的任务上微调这个模型。生成的模型能够为给定的测试方法生成准确的断言语句。在我们的实证评估中,该模型能够在第一次尝试中预测开发人员在62%的情况下编写的确切断言语句。结果显示,与文献中先前基于RNN的方法相比,top-1准确度相对提高了80%。我们还展示了预训练过程对模型性能的实质性影响,并将其与断言自动完成任务进行了比较。最后,我们展示了我们的方法可以用来增强EvoSuite测试用例,额外的断言导致提高测试覆盖率。
2020-09-11 cs.LG cs.SE
UniTSyn: A Large-Scale Dataset Capable of Enhancing the Prowess of Large Language Models for Program Testing
UC Davis(加州大学戴维斯分校);Tencent Security Big Data Lab(腾讯安全大数据实验室)
本文提出大规模数据集UniTSyn,通过语言服务器协议收集270万焦点-测试对,增强大型语言模型生成单元测试的准确性与覆盖率。
2024-02-04 cs.AI cs.CL cs.CR
Harnessing the Power of LLMs: Automating Unit Test Generation for High-Performance Computing
University Of Houston(休斯顿大学);Kent State University(肯特州立大学)
针对高性能并行科学软件单元测试成本高、现有工具效果差的问题,本文利用 Davinci 与 ChatGPT 为 C++ 并行程序自动生成单元测试,验证了 LLM 的有效性及局限。
2024-07-06 cs.AI cs.SE
Automated User Experience Testing through Multi-Dimensional Performance Impact Analysis
University of Massachusetts Dartmouth(马萨诸塞大学达特茅斯分校)
尽管有许多自动化的软件测试套件,但它们通常集中在单元、系统和接口测试上。然而,特别是软件更新,如新的安全功能,有可能降低用户体验。在本文中,我们提出了一种新的自动化用户体验测试方法,学习代码更改如何影响时间单位和系统测试,并根据这些信息推断用户体验的变化。这样的工具可以集成到现有的持续集成管道中,并为软件团队提供即时的用户体验反馈。我们从代码的词法、布局和语法特征中构建一个特征集,并使用基于抽象树的嵌入,我们可以计算近似的语义距离,以馈送到机器学习算法中。在我们的实验中,我们使用几种回归方法来估计软件更新的时间影响。我们的开源工具使用随机森林回归器实现了3.7%的平均绝对出错率。
2021-04-08 cs.LG cs.SE
LLMs for Automated Unit Test Generation and Assessment in Java: The AgoneTest Framework
University of Bari, Bari, Italy(巴里大学)
AgoneTest框架通过标准化评估流程,评估大型语言模型生成的Java单元测试质量,展示其在覆盖率和缺陷检测上的表现,并探讨提示策略对测试质量的影响。
2025-11-26 cs.AI cs.SE
Bias Testing and Mitigation in Black Box LLMs using Metamorphic Relations
University of Calgary(卡尔加里大学);York University(约克大学);Case Western Reserve University(凯斯西储大学)
本文提出利用元关系检测和缓解大语言模型中的偏见,通过生成对抗性样本提高模型公平性。
2025-11-29 cs.CL cs.SE