Automatically Checking Conformance on Asynchronous Reactive Systems
软件测试是软件开发过程中的一个重要环节,它保证了软件产品的高质量。形式化方法在测试反应式系统,特别是临界系统方面很有前途,因为任何故障都可能导致严重的损害。这种性质的系统的特点是从环境中接收信息并产生响应输出。基于模型的测试的最大挑战之一是异步反应式系统的一致性检查。其目的是验证实现是否符合其各自的规范。在这项工作中,我们开发了一个实用的工具来检查反应模型之间的一致性关系,使用更一般的理论基础上的正则语言。事实上,该方法包含了经典的\ioco一致性,这也适用于我们的工具。此外,我们提出了一些研究与不同的场景,适用于实际的工具,这两个概念的一致性。
2019-08-11 cs.SE
PopSweeper: Automatically Detecting and Resolving App-Blocking Pop-Ups to Assist Automated Mobile GUI Testing
本文提出 PopSweeper,利用深度学习视觉方法实时检测移动应用阻塞弹窗并定位关闭按钮,以低开销提升自动化 GUI 测试的连续性、准确性与效率。
2024-12-04 cs.SE
One evaluation of model-based testing and its automation
基于模型的测试依赖于行为模型来生成模型跟踪:实现的输入和预期输出-测试用例。我们使用的汽车网络控制器的案例研究,以评估不同的测试套件的错误检测,模型覆盖率和实现覆盖率。这些套件中的一些是自动生成的,有模型和没有模型,纯粹是随机的,并有专门的功能测试选择标准。其他套件是手动导出的,有或没有手头的模型。自动和手动派生的基于模型的测试套件检测到显着更多的需求错误比手工制作的测试套件,直接从需求。检测到的编程错误的数量并不取决于模型的使用。自动生成的基于模型的测试套件检测到的错误与手工制作的基于模型的套件检测到的错误一样多。基于模型的测试数量增加了六倍,导致检测错误增加了11%。
2017-01-24 cs.SE
A High-Level Modeling Language for the Efficient Design, Implementation, and Testing of Android Applications
尽管现有的平台和工具很多,但开发移动应用程序仍然很困难、耗时且容易出错。在本文中,我们定义了MoDroid,一种高级建模语言,以简化Android应用程序的开发。MoDroid允许开发代表应用程序核心的模型。MoDroid为Android程序员提供了以下优势:(1)模型是使用抽象出几个实现细节的高级原语构建的;(2)它允许定义模型之间的接口以自动组合它们;(3)Java原生Android可以自动生成所需的权限;(4)它支持对模型进行有效的基于模型的测试。MoDroid已完全实现,并用于开发几个重要的Android应用程序。
2015-08-10 cs.SE
Ethics Testing: Proactive Identification of Generative AI System Harms
Concordia University(康科迪亚大学)
本文提出伦理测试概念,旨在系统识别生成式AI系统生成内容中的软件危害,通过五项案例研究展示其实施方法。
2026-04-23 cs.AI cs.SE
Automatically Generating Test Cases for Safety-Critical Software via Symbolic Execution
基于符号执行的自动测试生成有利于系统地测试安全关键软件,方便测试工程师追求认证标准规定的严格测试要求,同时控制测试过程的成本。同时,安全关键软件的开发通常受到禁止被认为降低程序安全性的语言特征的程序设计语言或编码约定的限制,例如,它们不允许动态内存分配和可变长度数组,限制了循环的使用方式,禁止递归,并限制了控制条件的复杂性。事实上,这些语言特征也是最先进的基于符号执行的测试生成方法的主要效率障碍。本文为一类重要的工业安全关键系统提供了新的证据,证明了符号执行生成测试用例的有效性。我们特别关注的SCADE,主要采用基于模型的开发语言的安全关键的嵌入式软件,我们报告的案例研究中,我们利用符号执行自动生成测试用例的一组安全关键的程序在SCADE开发。为此,我们介绍了一种新的测试生成器,我们在最近的工业项目中开发的测试安全关键的铁路软件写在SCADE,我们报告我们的经验,使用此测试生成器测试一组SCADE程序,属于发展的车载信号单元的高速铁路。结果提供经验证据表明,符号执行确实是一种可行的方法,为我们的案例研究中考虑的安全关键程序生成高质量的测试套件。
2022-09-22 cs.SE
Automatically Detecting Heterogeneous Bugs in High-Performance Computing Scientific Software
针对HPC科学应用中跨平台数据移动引发的异构Bug难检测问题,提出结合NLP、脱靶测试等技术的HeteroBugDetect自动化方法,在LAMMPS上验证可检测多类异构Bug,提升跨HPC环境可靠性。
2025-01-16 cs.SE
Validating Static Warnings via Testing Code Fragments
静态分析是发现软件缺陷和漏洞的重要方法。然而,检查和确认静态警告是具有挑战性和耗时的。在本文中,我们提出了一种新的解决方案,自动生成测试用例的基础上,静态警告,以验证真和假阳性。我们设计了一个语法修补算法,可以从静态警告中生成语法有效、语义保持的可执行代码片段。我们开发了一个构建和测试系统,使用模糊器,KLEE和Valgrind自动测试代码片段。我们使用12个真实的C项目和1955个来自两个商业静态分析工具的警告来评估我们的技术。我们成功构建了68.5%的代码片段并生成了1003个测试用例。通过自动测试,我们确定了48个真阳性和27个假阳性,以及205个可能的假阳性。我们使用Helium匹配了4个CVE和真实世界的bug,它们只由我们的工具触发,而不是其他基线工具。我们发现,测试代码片段是可伸缩的和有用的;它可以触发测试整个程序或测试过程未能触发的错误。
2021-06-28 cs.SE
On Testing Constraint Programs
几种基于约束的建模语言(如OPL、ZINC或COMET)的成功吸引了更好的软件工程实践,特别是在测试阶段。本文介绍了一个测试框架,使自动测试用例生成的约束编程。我们提出了一个约束程序开发的一般框架,假设第一个声明和简单的约束模型是从问题规格分析。然后,这个模型是细化使用经典的技术,如约束重新制定,代理和全球约束添加,或破坏,以形成一个改进的约束模型,必须彻底测试之前,用于解决实际规模的问题。我们认为,大多数的故障都是在这个细化步骤中引入的,并提出了一个过程,其中第一个声明模型作为一个预言检测不符合。我们从这个过程中获得实际的测试目的,以自动生成显示不符合项的测试数据。我们实现了这种方法在一个新的工具,称为CPTEST,用于自动检测两个经典的基准程序,即Golomb统治者和汽车排序问题的不符合。
2010-05-17 cs.SE
Free Lunch for Testing: Fuzzing Deep-Learning Libraries from Open Source
深度学习(DL)系统可以让我们的生活变得更加轻松,因此越来越受到学术界和工业界的关注。同时,DL系统中的错误可能是灾难性的,甚至可能在安全关键应用中威胁到人类生命。迄今为止,大量的研究工作一直致力于测试DL模型。然而,有趣的是,测试底层DL库的工作仍然有限,这些库是构建、优化和运行DL模型的基础。一个潜在的原因是,底层DL库的测试生成可能相当具有挑战性,因为它们的公共API主要在Python中公开,由于动态类型,甚至很难自动确定API输入参数类型。在本文中,我们提出了FreeFuzz,第一种通过从开源中挖掘来模糊DL库的方法。更具体地说,FreeFuzz从三个不同的来源获得代码/模型:1)来自库文档的代码片段,2)库开发人员测试,以及3)野生的DL模型。然后,FreeFuzz自动运行所有收集的代码/模型,并使用插装来跟踪每个覆盖的API的动态信息,包括调用期间每个参数的类型和值,以及输入/输出张量的形状。最后,FreeFuzz将利用跟踪的动态信息对每个覆盖的API执行模糊测试。在PyTorch和TensorFlow这两个最流行的DL库上对FreeFuzz进行的广泛研究表明,FreeFuzz能够自动跟踪模糊1158个流行API的有效动态信息,比最先进的LEMON多9倍,开销比LEMON低3.5倍。到目前为止,FreeFuzz已经检测到PyTorch和TensorFlow的49个bug…
2022-02-25 cs.SE
Extending Refusal Testing by Stochastic Refusals for Testing Non-deterministic Systems
测试是一种验证活动,用于检查系统相对于规范的正确性。在此背景下,本文对基于拒绝的测试进行了理论研究,并构造了有效的测试工具。提出了一种基于随机拒绝图的形式化测试方法,用于测试基于极大值的标记随机迁移系统。首先,我们提出了一个框架,从MLSTS生成SRG。其次,我们提出了一种新的技术,自动生成一个规范的测试从随机拒绝图和一致性关系confSRG。最后,提出了实施和我们的方法的应用是通过一个例子。
2012-11-12 cs.SE
DeepRoad: GAN-based Metamorphic Autonomous Driving System Testing
虽然深度神经网络(DNN)已经建立了基于DNN的自动驾驶系统的基础,但它们可能会表现出错误的行为并导致致命的事故。为了解决自动驾驶系统的安全问题,最近已经设计了一组测试技术来自动生成测试用例,例如,从原始图像变换的新输入图像。不幸的是,许多这样生成的输入图像通常呈现较差的真实性,缺乏驾驶场景的准确语义信息,因此损害了所得的功效和可靠性。在本文中,我们提出了DeepRoad,这是一个无监督的框架,可以自动生成大量准确的驾驶场景,以测试基于DNN的自动驾驶系统在不同场景中的一致性。特别是,DeepRoad通过应用生成对抗网络(GANs)以及相应的现实世界天气场景,提供具有各种天气条件(包括极端条件)的驾驶场景。此外,我们已经实施了DeepRoad来测试三个公认的基于DNN的自动驾驶系统。实验结果表明,DeepRoad可以检测到这些系统中成千上万的行为不一致。
2018-03-07 cs.SE
Automatic Property-based Testing of GraphQL APIs
近年来,GraphQL已成为公开Web API的流行方式。随着GraphQL API在工业中的应用越来越多,它的质量也必须像软件系统的任何部分一样进行评估,并且最好是以自动化的方式进行评估。然而,目前缺乏自动生成测试以执行GraphQL API的方法。在本文中,我们提出了一种自动生成GraphQL查询来测试GraphQL API的方法。这是使用基于属性的方法来实现的,该方法基于被测系统的GraphQL模式为查询创建生成器。我们对一个真实世界的软件系统的评估表明,这种方法是有效的,在寻找真正的错误,和效率,因为一个完整的模式可以在几秒钟内覆盖。此外,我们评估的故障发现能力的方法时,播种已知的故障。73%的种子错误被发现,在特定于领域的行为方面还有改进的空间,这是自动测试生成中常见的Oracle挑战。
2020-12-14 cs.SE
What It Would Take to Use Mutation Testing in Industry--A Study at Facebook
传统上,突变测试会产生大量的程序小偏差,称为突变体。在Facebook这样规模的工业系统中,这样做是不可行的。我们不应该创建测试套件可能会失败的突变体,或者不给开发人员可操作的信号。为了解决这个问题,在本文中,我们半自动地从常见的Java编码错误语料库中学习错误诱导模式,并从导致Facebook操作异常的变化中学习。我们将突变与测量哪些测试恰好访问了突变的代码片段的检测相结合。超过15,000个生成的突变体的结果显示,超过一半的生成的突变体通过了Facebook严格的单元测试,集成测试和系统测试。此外,在一个有26名开发人员的案例研究中,除了两名开发人员之外,所有人都发现了自动检测到的测试漏洞的信息。因此,26人中几乎有一半会通过调整现有测试或创建新测试来对呈现给他们的突变体采取行动。其他人没有因为各种各样的原因,通常超出了突变测试的范围。如何将这些外部信息纳入突变体研究,以提高突变体的真实可操作性,这仍然是一个实际的挑战。
2021-01-27 cs.SE
Differentially Testing Soundness and Precision of Program Analyzers
在过去的几十年里,学术界和工业界都开发了许多程序分析器。然而,尽管它们丰富,目前还没有系统的方法来比较不同分析器对任意代码的有效性。在本文中,我们提出了第一个自动化技术的差异测试健全性和精度的程序分析仪。我们使用我们的技术来比较六个成熟的,最先进的分析器对成千上万的自动生成的基准。我们的技术检测的稳健性和精度问题,在大多数分析仪,我们评估了这些问题的影响,设计师和用户的程序分析仪。
2018-12-16 cs.SE
ProbTest: Unit Testing for Probabilistic Programs (Extended Version)
本文提出黑盒单元测试方法 ProbTest,基于优惠券收集者问题自动确定概率程序所需测试次数并提供统计保证,以 PyTest 插件实现,并在 Gymnasium 和随机数据结构案例中评估。
2025-09-02 cs.SE
A Comprehensive Study on Automated Testing with the Software Lifecycle
本文综述了自动化测试在软件生命周期中的作用,分析其相较手动测试在效率、成本和质量评估方面的优势与差异,并探讨自动化测试工具的适用场景。
2024-05-02 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
Search-based Software Testing Driven by Domain Knowledge: Reflections and New Perspectives
McMaster University(麦克马斯特大学);University of Bergamo(贝加莫大学)
本文反思了基于领域知识的搜索驱动软件测试的最新实验结果,提出未来研究的新方向。
2025-12-10 cs.SE
GenMorph: Automatically Generating Metamorphic Relations via Genetic Programming
本文提出GenMorph技术,利用进化算法和双适应度函数为Java方法自动生成蜕变关系,有效缓解预言机问题,并在多项实验中显著提升了软件故障检测能力,优于现有工具。
2024-06-05 cs.SE
Quickstrom: Property Based Acceptance Testing with LTL Specifications
我们提出了Quickstrom,一个基于属性的测试系统,用于交互式应用程序的验收测试。使用Quickstrom,程序员可以将Web应用程序的行为指定为我们称为QuickLTL的面向测试的线性时序逻辑(LTL)方言中的属性,然后根据给定的规范自动测试他们的应用程序,并自动生成数百个交互。QuickLTL为测试用例扩展了LTL的现有有限变体,确定了部分跟踪的可能结果,这些跟踪的最小长度本身由LTL公式确定。这种时态逻辑嵌入在我们的规约语言Specstrom中,它被设计成Web程序员可以访问的,用于编写规范的表达,并且易于分析。因为Quickstrom只测试面向用户的行为,所以它与被测系统的实现语言无关。因此,我们正式指定并测试了流行的TodoMVC基准的许多实现,用于在各种Web前端框架和语言之间进行评估和比较。我们的测试在几乎一半的可用实现中发现了bug。
2022-03-22 cs.PL cs.SE
Automatically Removing Unnecessary Stubbings from Test Suites
本文提出ARUS技术,通过执行测试识别并基于特征自动移除测试套件中不必要的存根,在128个Java项目中实现98.6%解决率,时间成本可忽略且代码复杂性增加有限。
2024-07-30 cs.SE
An Online Agent-Based Search Approach in Automated Computer Game Testing with Model Construction
计算机游戏的复杂性不断增加。在这种设置中,引导自动化测试算法在游戏的巨大交互空间中找到解决测试任务的解决方案是非常具有挑战性的。有一个系统的模型来自动生成测试用例将对算法的有效性和效率产生很大的影响。然而,手动构建模型是昂贵且耗时的。在这项研究中,我们提出了一个在线的基于代理的搜索方法来解决常见的测试任务时,测试计算机游戏,也构建了一个模型的系统上的飞行的基础上给定的任务,然后利用解决任务。为了证明我们的方法的效率,案例研究进行了一个游戏称为实验室招聘。
2022-11-13 cs.SE
Alternative Effort-optimal Model-based Strategy for State Machine Testing of IoT Systems
为了有效地测试具有状态机特征的物联网(IoT)系统的部分,可以采用基于模型的测试(MBT)方法。在MBT中,创建系统模型,并从模型自动生成测试用例,并且存在许多当前策略。在本文中,我们提出了一种新的替代策略,同时允许我们灵活地调整生成的测试用例的首选长度,以及标记的状态,在测试用例可以开始和结束。与一个直观的N开关覆盖为基础的战略,旨在相同的目标相比,我们的建议产生了更少的测试步骤重复的较短的测试用例。
2020-05-20 cs.SE
Testing Systems of Concurrent Black-boxes--an Automata-Theoretic and Decompositional Approach
本文研究的全局测试问题是在给定的有限(但可能是巨大的)集合“Bad”中寻求并发黑盒系统是否具有可观察行为的确定答案。我们介绍了一种新的方法来解决这个问题,不需要集成测试。相反,在我们的方法中,全局测试问题被简化为以给定的顺序逐个测试系统中的各个黑盒。使用自动机理论的方法,每个单独的黑盒的测试序列生成从系统的描述,以及测试结果的黑盒之前,这个黑盒在给定的顺序。与传统的组合/模块化验证/测试方法相比,我们的方法基本上是分解的。此外,我们的技术是完整的,声音,并可以自动执行。我们的实验结果表明,需要解决的全球测试问题的测试总数是相当小的,即使是一个非常大的“坏”。
2005-02-08 cs.SE
Automated Generation of Computer Graded Unit Testing-Based Programming Assessments for Education
代码的自动评估,特别是支持教育,是包括在几个学习管理系统(LMS)的一个重要功能,至少在某种程度上。可以设计几种类型的评估,例如要求“填充以下代码”,“编写一个函数”或“纠正以下程序中的错误”的练习。教师的一个困难是创建这样的编程练习,特别是当它们有些复杂时。事实上,教师需要编写练习陈述,思考解决方案,并提供平台评分所需的所有额外信息。另一个困难发生时,教师想使用他们的练习在另一个LMS平台。由于还没有标准的方法来定义和描述编码练习,教师必须将他们的练习重新编码到其他LMS中。本文提出了一种工具,可以自动生成编程练习,从一个单一的和唯一的描述,并可以解决在几个程序设计语言。生成的练习可以由同一平台自动评分,为用户提供智能反馈,以支持他们的学习。本文重点介绍并详细介绍了基于单元测试的练习,并提供了对该平台未来可能生成的新类型练习的见解,以及一些额外的开发。
2019-11-27 cs.SE
Automatically Assessing Vulnerabilities Discovered by Compositional Analysis
测试是在真实世界的软件程序中发现漏洞的最广泛使用的方法。基于符号执行的组合分析是一种自动化测试方法,用于发现由许多交互组件组成的中型到大型程序中的漏洞。然而,现有的成分分析框架并不评估所报告的漏洞的严重性。在本文中,我们提出了一个框架来分析现有的组成分析工具发现的漏洞,并分配CVSS3(通用漏洞评分系统v3.0)分数给他们,基于各种知识,如与相关组件的交互,易于达到,设计的复杂性和接受未消毒输入的可能性。通过分析过去使用CVSS 3分数报告的漏洞,我们训练简单的机器学习模型。通过向流行开源软件的开发人员和其他安全专家展示我们的交互式框架,我们收集了对我们训练模型的反馈,并进一步改进了功能,以提高我们预测的准确性。通过从21个开源源程序中提供定性(基于社区反馈)和定量(基于预测准确性)证据,我们表明我们的严重性预测框架可以有效地帮助开发人员评估漏洞。
2018-07-24 cs.SE
The Next Generation of Metadata-Oriented Testing of Research Software
研究软件是指软件开发工具,可加速发现并简化对数字基础设施的访问。然而,尽管研究软件平台可以比以往任何时候都更加创新和强大,但随着复杂性的增加,如果出现计划外和未经测试的程序场景,则失败的风险更大。随着系统的老化和不同程序员的更改,更改影响整个系统的风险增加。相比之下,不太强调程序代码而更强调描述应用程序的数据的系统可以更容易地由技术不太熟练但通常更熟悉应用程序领域的个人进行更改和维护。这种系统也可以使用自动生成的高级测试机制进行测试。
2018-12-25 cs.SE
Maximizing Patch Coverage for Testing of Highly-Configurable Software without Exploding Build Times
针对Linux内核补丁测试中现有配置方案构建耗时长且难保证补丁覆盖的问题,提出krepair方法,仅对快速构建但补丁覆盖差的配置做少量修改,即可实现平均98.5%的补丁覆盖率,同时保持构建速度比最大覆盖配置快10.5倍。
2024-04-27 cs.SE
Model-Based Testing of Networked Applications
我们提出了一个原则性的应用层协议自动测试框架。关键的创新是一个特定于域的嵌入式语言,用于编写网络服务器行为的不确定性模型。这些模型在Coq交互式定理证明器中定义,支持从测试到形式化验证的平滑过渡。给定一个服务器模型,我们将展示如何自动派生一个测试器来探测服务器的意外行为。我们解决的不确定性所造成的服务器的内部选择和网络延迟消息nondeterministically。派生的测试程序接受可能的行为是不确定性模型所允许的行为的子集的服务器实现。我们通过使用该框架来指定和测试HTTP/1.1协议的一个片段来证明该框架的有效性,表明自动派生的测试程序可以在有缺陷的服务器实现中捕获RFC违规,包括最新版本的Apache和Nginx。
2021-07-02 cs.PL cs.SE
Reliable Mining of Automatically Generated Test Cases from Software Requirements Specification (SRS)
编写需求是一个双向的过程。在本文中,我们使用分类功能需求(FR)和非功能需求(NFR)的声明,从软件需求规格说明(SRS)文件。这是系统地转化为考虑所有相关信息的状态图。目前的文件概述了如何测试用例可以自动生成这些状态图。状态的应用产生不同的测试用例作为规划问题的解决方案。测试用例可用于系统级的自动或手动软件测试。提出了一种利用挖掘方法对测试用例进行约简的方法,从而方便了测试用例的挖掘和知识提取。
2010-02-05 cs.SE
Compositional Specifications for ioco Testing
基于模型的测试是一种很有前途的黑盒软件和硬件测试技术,其中测试用例是从高层规格自动生成的。如今,系统通常由多个相互作用的组件组成,由于其复杂性,测试在设计过程中占了相当大的一部分工作和成本。利用系统规格说明的组合结构可以大大减少基于模型的测试工作。此外,通过测试系统的各个组件来推断系统的属性,可以让设计人员减少集成测试的数量。本文研究了IOCO-检验理论的合成性质。我们提出了一种新的方法来组成和隐藏操作,基于合同的设计和接口理论的启发。这些操作保留在合成和隐藏下兼容的行为,并删除不兼容的行为。由此产生的规范特征的输入序列的组件的单元测试是足以推断组件集成的正确性,而不需要进一步的测试。我们提供了一种方法,使用这些结果,以尽量减少集成测试的努力,但也发现潜在的弱点规范。虽然我们专注于异步模型和IOCO一致性关系,但由此产生的方法可以应用于更广泛的系统类别。
2019-04-15 cs.SE
Stateful Testing: Finding More Errors in Code and Contracts
自动化随机测试已被证明是一种有效的方法来发现故障,但仍然面临着一个主要的未解决的问题:如何生成足够多样化的测试输入,以发现许多故障,并快速找到它们。状态测试,本文中介绍的自动化测试技术,生成新的测试用例来改进现有的测试套件。生成的测试用例被设计为违反动态推断的合同(不变量)表征现有的测试套件。因此,他们能够很好地发现新的错误,并通过发现那些不合理的合同来提高推断合同的准确性。在13个数据结构类上进行的总计超过28,000行代码的实验证明了状态测试在改进长时间随机测试结果方面的有效性:状态测试发现了68.4%的新错误,并将自动推断合同的准确性提高到99%以上,而时间开销仅为7%。
2011-08-17 cs.SE
Automatically Testing Functional Properties of Code Translation Models
MPI-SWS(马克斯·普朗克软件系统研究所);ConsenSys;TU Wien(维也纳工业大学)
本研究提出首个针对代码翻译模型的自动化功能属性测试方法及属性引导搜索流程,可有效检测模型属性违规并获得更优的代码翻译结果。
2024-01-30 cs.LG cs.PL cs.SE
RESTful API Automated Test Case Generation
如今,Web服务在企业应用程序的开发中发挥着重要作用。许多这样的应用程序现在都是使用面向服务的架构(SOA)开发的,其中微服务是最受欢迎的类型之一。RESTful Web服务将通过使用HTTP的网络上的API提供数据,可能与数据库和其他Web服务进行交互。测试RESTful API带来了挑战,因为输入/输出是对远程服务器的HTTP请求/响应序列。文献中的许多方法都进行了黑盒测试,因为测试的API是一个远程服务,其代码不可用。在本文中,我们从开发人员的角度考虑测试,他们确实可以完全访问他们正在编写的代码。因此,我们提出了一个完全自动化的白盒测试方法,测试用例自动生成使用进化算法。测试是基于代码覆盖率和故障发现度量的奖励。我们在一个名为EVOMASTER的工具中实现了我们的技术,它是开源的。在两个开源的,但不平凡的RESTful服务和一个工业服务上的实验确实表明,我们的新技术确实在这些应用程序中自动找到了38个真正的错误。然而,所获得的代码覆盖率低于那些服务中已经存在的手动编写的测试套件所实现的覆盖率。因此,如何进一步改善这种方法的研究方向进行了讨论。
2019-01-06 cs.SE
Automatic Test Generation for Space
欧洲航天局(ESA)使用发动机在地面部分基础设施中进行测试,特别是操作模拟器。该引擎使用许多不同的工具来确保回归测试基础设施的开发,并且这些测试对C++模拟器实现执行黑盒测试。VST(VisionSpace Technologies)是为ESA提供这些服务的公司之一,他们需要一个工具来从现有的C++代码中自动推断测试,而不是手动编写脚本来执行测试。考虑到这一动机,本文探讨了自动测试方法和工具,以提出一个系统,满足VST的需求。
2012-06-22 cs.SE
A Case Study on Automated Fuzz Target Generation for Large Codebases
模糊测试是一种很大程度上自动化的测试技术,它向程序提供随机和意外的输入,试图触发故障条件。到目前为止,对模糊测试进行的大部分研究都集中在对可用的模糊测试工具和框架进行改进以提高效率。然而,在本文中,我们着眼于一种方法,可以减少集成模糊测试以帮助维护现有代码库所需的开发人员时间。我们用一种自动生成模糊目标的新技术来实现这一点,模糊目标是模糊测试工具运行的程序的修改版本。我们在行业合作伙伴的代码库上评估了三种不同的模糊测试解决方案,并发现了一种完全自动化的解决方案,该解决方案在实现所述解决方案所需的开发人员时间方面发现了更多的错误。我们的研究朝着提高模糊测试普及率迈出了重要一步,我们的研究让集成模糊测试解决方案来维护现有代码库变得更简单。
2019-07-29 cs.SE
OVAL: the CMS Testing Robot
Oval是一个测试工具,可以帮助开发人员检测软件行为中的意外变化。它能够自动编译一些测试程序,准备所需的配置文件,在指定的Unix环境中运行测试,最后分析输出并检查预期。Oval不提供帮助编写测试的实用程序代码,因此它完全独立于待测软件的编程/脚本语言。它可以被看作是一种机器人,应用测试并警告输出中的任何意外变化。Oval是由LLR实验室为CMS实验的需要而开发的,现在被CERN LCG项目推荐。
2003-06-12 cs.SE
Can Pairwise Testing Perform Comparably to Manually Handcrafted Testing Carried Out by Industrial Engineers?
测试是工业软件工程中的一项重要活动。对于这样的软件,测试通常是手动执行的手工制作测试套件的基础上特定的设计技术和特定领域的经验。为了支持开发人员进行测试,已经提出了不同的方法来生成良好的测试套件。在过去的几年中,组合测试已经被探索,其目标是基于一定的策略自动组合软件的输入值。成对测试是一种组合技术,用于通过改变系统的每对输入参数的值直到创建这些参数的所有可能组合来生成测试套件。有一些证据表明,这类技术是有效的,相对较好地检测软件故障。不幸的是,几乎没有实验证据的比较,这些组合测试技术,被认为是严格的手工制作的测试。在这项研究中,我们比较成对的测试套件与手动创建的测试套件的工程师为45个工业程序。测试套件进行了评价的故障检测,代码覆盖率和测试数量。这项研究的结果表明,成对测试,而实现高代码覆盖率和故障检测的大多数程序是有用的,几乎是有效的手动测试在故障检测方面。结果还表明,在64%的程序中,成对测试在故障检测方面与手动测试一样好。
2017-06-06 cs.SE
Testing Updated Apps by Adapting Learned Models
针对应用更新时全量自动化测试浪费资源的问题,提出CALM方法,通过适配旧版测试学习的应用模型开展功能测试,在同等视觉检查界面量下覆盖更多更新代码,常见小更新场景下优势更显著。
2024-04-17 cs.SE
Functional Requirements-Based Automated Testing for Avionics
我们提出并证明了一种方法,减少测试工作的安全关键软件开发使用DO-178指南。我们实现了这一目标,通过应用有界模型检验(BMC),以正式的低层次的要求,以自动生成测试,是足够好的,以取代现有的劳动密集型测试编写程序,同时保持独立的实现文物。鉴于现有的手动过程往往是经验和主观的,我们开始正式定义一个度量,它扩展了公认的最佳实践,从代码覆盖率分析策略,以生成测试,充分覆盖的要求。然后,我们制定的自动化测试生成程序,并应用其原型与工业合作伙伴的案例研究。在回顾中,这里开发的方法被证明可以显着减少人为的工作,根据DO-178指南的软件产品的资格。
2017-07-05 cs.SE
Modelling of Autosar Libraries for Large Scale Testing
我们展示了一个具体的方法和技术,基于模型的测试大型软件项目的快速检查工具,使用基于属性的规范。我们的规格是被测软件(SUT)的非常精确、状态完整的模型。在我们的方法中,我们定义(a)正式描述有效的函数调用序列(公共API),(b)后置条件,检查每个调用的有效性,(c)调用规范,定义和验证外部系统的相互作用(SUT调用外部API)。QuickCheck工具自动生成并执行这些规范中的测试。在商业上,这种方法和工具已被用于测试基于Autosar标准的工业开发的汽车库的大型部件。在本文中,我们使用Autosar指定的循环缓冲区来验证我们的方法,以证明QuickCheck基于模型的测试方法的能力。与商业QuickCheck模型相比,我们的示例很小,但忠实地解决了许多相同的挑战。
2017-03-20 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
A Testing Tool for IoT Systems Operating with Limited Network Connectivity
对于在网络连接有限的地区运行的物联网(IoT)系统,必须确保可靠和安全的功能。这可以使用特殊的测试用例来完成,这些测试用例检查网络中断和恢复情况下的系统行为。当从测试工作的角度来看时,这些测试用例必须是最佳的。当从流程的角度来看时,从被测系统支持的业务流程可能会受到网络中断和恢复的影响的意义上来说,可以使用合适的基于模型的测试(MBT)技术自动生成测试用例。这项技术目前在开放的免费软件氧气MBT工具中可用。在本文中,我们解释了该技术的原理,测试系统的过程模型可能会受到有限的网络连接的影响,并在氧气平台上支持这种专门的MBT技术。
2021-01-05 cs.SE
Kaya: A Testing Framework for Blockchain-based Decentralized Applications
近年来,开发了许多基于区块链(DApp)的去中心化应用程序。然而,由于测试不充分,DApp很容易暴露出严重的漏洞。我们发现DApp测试的三个主要挑战,即,DApp固有的复杂性,不方便的预状态设置,以及不可读的日志。在本文中,我们提出了一个名为Kaya的测试框架来弥合这些差距。Kaya有三个主要功能。首先,Kaya提出了DApp行为描述语言(DBDL),使编写测试用例变得更容易。用DBDL编写的测试用例也可以由Kaya自动执行。其次,Kaya为测试工程师提供了一种灵活方便的方式来轻松设置区块链预状态。第三,Kaya将不可理解的地址转换为可读的变量,以便于理解。通过这些功能,Kaya可以帮助测试工程师更轻松地测试DApps。此外,为了适应不同的应用环境,我们为测试工程师提供了两种使用Kaya的方法,即,UI和命令行。我们的实验案例展示了Kaya在帮助测试工程师更轻松地测试DApps方面的潜力。
2020-06-02 cs.SE
On Extracting Unit Tests from Interactive Programming Sessions
软件工程方法论建议开发人员应该捕获他们的努力,以确保程序在可重复和自动化的工件中正确运行,例如单元测试。然而,当从探索性测试到脚本测试的范围内观察开发人员活动时,我们发现许多工程活动都包括探索性测试的爆发。在本文中,我们建议利用这些探索性的测试突发自动提取脚本测试从这些会话的记录。为了做到这一点,我们窃听开发环境,这样我们就可以记录所有的程序输入,所有用户发出的函数调用,以及探索性测试会话的所有程序输出。然后,我们建议使用机器学习(即聚类)从这些记录中实时提取脚本测试用例。我们概述了两个早期原型,一个是静态的,一个是动态的。我们通过例子概述了这个想法如何融入编程的更大研究方向。
2012-12-08 cs.SE
Quality Assurance of Bioinformatics Software: A Case Study of Testing a Biomedical Text Processing Tool Using Metamorphic Testing
生物信息学软件在许多领域(包括医学和卫生保健)的关键决策中发挥着非常重要的作用。然而,大多数研究都是针对开发工具,很少有时间和精力花在测试软件,以确保其质量。在测试中,测试预言用于确定测试在测试过程中是通过还是失败,不幸的是,对于大多数生物信息学软件来说,确切的预期结果并没有很好地定义。因此,与对生物信息学软件进行系统测试相关的主要挑战是Oracle问题。变形测试(MT)是一种用于测试面临预言机问题的程序的技术。MT使用变形关系(MR)来确定测试是通过还是失败,并根据对输入的特定更改指定输出应如何更改。在这项工作中,我们使用MT来测试LingPipe,这是一种使用计算语言学处理文本的工具,通常用于生物信息学中从生物医学文献中识别生物实体。首先,我们确定一组MR用于测试任何生物实体识别程序。然后,我们开发了一组测试用例,可用于测试LingPipe的生物实体识别功能,使用这些MR。为了评估这个测试过程的有效性,我们自动生成一组LingPipe的错误版本。根据我们对实验结果的分析,我们观察到我们的MR可以检测到这些错误版本中的大多数,这表明了这种测试技术在生物信息学软件质量保证中的实用性。
2018-02-20 cs.SE
Using Semantic Similarity for Input Topic Identification in Crawling-based Web Application Testing
为了自动测试Web应用程序,通常采用基于爬虫的技术来挖掘应用程序的行为模型,探索状态空间或检测违反的不变量。然而,在现有的爬虫中,用于识别输入文本字段的主题的规则,例如登录ID、密码、电子邮件、日期和电话号码,必须手动配置。此外,一种应用的规则往往不适合另一种应用。此外,当多个规则冲突并将输入文本字段与多个主题匹配时,可能难以确定哪个规则建议更好的匹配。本文提出了一种自然语言的方法来自动识别爬行过程中遇到的输入字段的主题,通过语义比较其与标注语料库中的输入字段的相似性。在我们对100个真实世界的表单进行的评估中,所提出的方法表现出与基于规则的方法相当的性能。我们的实验还表明,基于规则的方法的准确性可以提高高达19%,当与我们的方法相结合。
2016-08-23 cs.CL cs.SE
Fuzzing for CPS Mutation Testing
本文提出利用模糊测试为安全攸关CPS的C/C++软件生成变异测试数据,并通过在轨卫星组件实证表明其显著优于或可补充符号执行。
2023-08-15 cs.SE
Multiple Analyses, Requirements Once: simplifying testing & verification in automotive model-based development
在基于工业模型的开发(MBD)框架中,通常使用文本描述非正式地指定需求。为了使正式方法的应用,这些规格需要正式的输入语言的所有正式工具,应适用于分析模型在不同的发展水平。在本文中,我们提出了一个统一的方法,计算机辅助的正式规格说明的要求和他们的完全自动化翻译成规约语言的不同的验证工具。我们考虑一个两阶段的MBD方案,第一个Simulink模型的开发,自动生成可执行代码。我们(i)提出了一种规约语言和一个原型工具,用于正式但仍然是文本的需求规范,(ii)展示了如何将这些需求自动转换为Simulink Design Verifier的输入语言,用于验证Simulink模型和BTC EmbeddedValidator的源代码验证,以及(iii)展示了我们的统一框架如何在自动化形式化验证之外还实现测试用例的自动化生成。
2019-06-17 cs.LO cs.SE
Automated Conformance Testing for JavaScript Engines via Deep Compiler Fuzzing
JavaScript(JS)是一种流行的、与平台无关的程序设计语言。为了确保JS程序在不同平台上的互操作性,JS引擎的实现应该符合ECMAScript标准。然而,这样做是具有挑战性的,因为API行为有许多微妙的定义,并且定义不断发展。我们提出了COMFORT,一个新的编译器模糊框架,用于检测JS引擎的错误和行为偏离ECMAScript标准。COMFORT利用基于深度学习的语言模型的最新进展,自动生成JS测试代码。与以前的模糊器不同,COMFORT利用结构良好的ECMAScript规范自动生成测试数据以及测试程序,以暴露开发人员或手动编写的测试用例可能忽略的错误。然后,COMFORT在生成的测试用例上应用差异测试方法,以暴露标准一致性错误。我们将COMFORT应用于十个主流JS引擎。在200小时的自动化并发测试运行中,我们发现了所有测试过的JS引擎中的错误。我们已经确定了158个独特的JS引擎错误,其中129个已经得到验证,115个已经被开发人员修复。此外,21个Comfort生成的测试用例已添加到Test262,官方ECMAScript一致性测试套件。
2021-04-15 cs.PL cs.SE
Insights from the Field: Exploring Students' Perspectives on Bad Unit Testing Practices
本文通过让三所高校184名学生使用IDE插件自动检测测试异味,考察其对不良单元测试实践的认知及插件效果,为优化测试教学和代码评审提供依据。
2024-04-15 cs.SE
DinoDroid: Testing Android Apps Using Deep Q-Networks
对移动设备的大量需求引起了对移动应用程序(app)质量的重大关注。开发人员需要在向市场发布之前保证移动应用程序的质量。有许多方法使用不同的策略来测试移动应用程序的GUI。然而,由于其有限的有效性,它们仍然需要改进。在本文中,我们提出了DinoDroid,这是一种基于深度Q网络的方法,可以自动测试Android应用程序。DinoDroid从一组现有的应用程序中学习行为模型,学习的模型可用于探索和生成新应用程序的测试。DinoDroid能够捕获GUI事件的细粒度细节(例如,GUI小部件的内容),并将其用作输入深度神经网络的特征,深度神经网络充当引导应用探索的代理。DinoDroid在探索过程中自动适应学习的模型,而不需要任何建模策略或预定义的规则。我们对64个开源Android应用程序进行了实验。测试结果表明,DinoDroid在代码覆盖率和bug检测方面优于现有的Android测试工具。
2022-10-12 cs.SE
Coverage Criteria for Model-Based Testing using Property Patterns
本文提出了一种基于模型的测试方法,旨在从UML/OCL模型和给定的测试属性生成测试用例。该属性使用基于模式的专用形式主义表示,并自动转换为自动机。我们提出了新的自动机覆盖标准,我们考虑的属性自动机量身定制。这些标准是基于与原始属性相关的转换的相关子集的覆盖率,旨在产生说明属性中描述的系统动态的测试用例。此外,我们建议产生测试用例,可以确保系统的鲁棒性w.r.t.属性,通过改变属性自动机,以试图引发属性禁止的事件。这种方法已被实施到一个大型的工具集,并已在工业研究项目的背景下,对现实的案例研究进行了实验。
2014-03-28 cs.SE