Model Checking Guided Testing for Distributed Systems——论文泛读

EuroSys 2023 Paper 论文阅读笔记整理

问题

分布式系统已成为云计算的支柱,不正确的系统设计和实现可能严重影响分布式系统的可靠性。尽管使用形式化规范建模的分布式系统设计可以通过形式化模型检查进行验证,但要弄清其相应的实现是否符合已验证的规范仍然是具有挑战性的。不正确的系统实现可能违反其已验证的规范,导致复杂的错误。

现有方法局限性

研究人员提出了许多方法来检测分布式系统实现中的错误,可以分类为三类:

  • 形式验证框架[41, 42, 67],以细化的方式验证分布式系统实现的属性。然而,验证过程复杂且耗时。通常需要多人年的工作量来验证系统实现[58]。

  • 基于模型的测试[31, 44, 51],利用抽象模型生成测试用例,以测试分布式系统实现中的特定属性或行为。例如,Modulo [44]对分布式存储系统中的数据一致性属性建模,并生成测试用例以查找收敛故障错误。

  • 实现级别的模型检查器[47, 57, 64, 68, 69],专门设计用于在分布式系统实现中发现错误。在运行时拦截和重排序非确定性的分布式事件(例如,消息和故障)。但它们无法了解目标系统的预期执行结果(即,测试用例的 Oracle),并依赖开发人员手动编写特定系统属性或行为的通用断言来揭示错误。

本文方法

我们提出了一种分布式系统测试技术,即模型检查引导测试(Model checking guided testing,Mocket),以弥合分布式系统中规范和其实现之间的差距。给定目标分布式系统的 TLA+ [45] 规范,我们分析通过验证规范生成的验证状态,并为系统实现生成测试用例。将 TLA+ 规范映射到系统实现中的相应代码之后,进一步确定性地强制系统执行遵循从验证规范生成的测试用例。在系统测试期间,监视系统的运行时状态并将其与 TLA+ 规范中的相应验证状态进行比较。我们使用形式化模型检查生成的状态空间来引导对系统实现的测试,并发现目标分布式系统中的错误。

为了评估Mocket的可行性和有效性,我们将其应用于三个流行的分布式系统,并在它们中发现了3个先前未知的错误。

限制:

  • Mocket需要开发人员手动操作。

  • Mocket要求TLA+规范应该接近相应的实现。

  • 在某些场景下,Mocket可能会错过目标系统中的一些实现错误:TLA+规范并没有涵盖分布式系统的所有实现细节;系统实现中的某些并发性没有在TLA+规范中正确建模;省略了一些可能触发目标系统中实现错误的路径。

  • Mocket只能在基于Java的分布式系统上工作。

开源代码:GitHub - tcse-iscas/Mocket: TLA+ model checking guided testing for distributed systems

总结

针对分布式系统的故障检测。作者提出Mocket,需要给定目标分布式系统的TLA+规范,分析规范生成的验证状态,为系统实现生成测试用例。将 TLA+ 规范映射到系统实现中的相应代码之后,进一步确定性地强制系统执行遵循从验证规范生成的测试用例。在系统测试期间,监视系统的运行时状态并将其与 TLA+ 规范中的相应验证状态进行比较。并发现目标分布式系统中的错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/662443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【EI会议征稿通知】第三届信号处理与通信安全国际学术会议(ICSPCS 2024)

第三届信号处理与通信安全国际学术会议(ICSPCS 2024) 2024 3rd International Conference on Signal Processing and Communication Security 信号处理和通信安全是现代信息技术应用的重要领域,近年来这两个领域的研究相互交叉促进&#xf…

云贝教育 | 【技术文章】Oracle 19c RAC修改网络

注: 本文为云贝教育 刘峰 原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、和未经注明出处的转载。 原文链接:【Oracle 19c】Oracle 19c RAC修改网络 - 课程体系 - 云贝教育 (yunbee.net) 变更目标 ip类型 节点 原IP 目…

【机器学习】贝叶斯垃圾邮件识别

实验三:贝叶斯垃圾邮件识别 本次作业以垃圾邮件分类任务为基础,要求提取文本特征并使用朴素贝叶斯算法进行垃圾邮件识别(调用已有工具包或自行实现)。 1 任务介绍 ​ 电子邮件是互联网的一项重要服务,在大家的学习、…

【ADI 知识库】X 波段相控阵开发平台 硬件 2

ADAR1000EVAL1Z (Stingray) ADAR1000-EVAL1Z评估板是一款模拟波束成形前端,设计用于测试ADAR1000和ADTR1107的性能。ADAR1000 是一款 8 GHz 至 16 GHz、4 通道、X 波段和 Ku 波段波束成形器 IC。ADTR1107是 6 GHz 至 18 GHz 前端发送/接收模块。 ADAR1000-EVAL1Z板…

【Java系列】Java 8 日期/时间 API 简介

目录 1. 概述 2. 现有日期/时间 API 的问题 3. 使用 LocalDate/LocalTime/LocalDateTime API 3.1 LocalDate 3.2 LocalTime 3.3 LocalDateTime 4. 使用 ZonedDateTime API 5. 使用 Period and Duration API 5.1 Period 5.2 Duration 6. 与 Date 和 Calendar 的兼容性…

网络异常案例五_SYN被丢弃

问题现象 公司同事使用的时候,反馈系统不稳定,访问的时候,有时候会出现白屏(连接超时),或者系统页面点击没有响应,过一会之后刷新系统又可以正常展示了。之前未收到过类似反馈,一直…

Axure 动态面板初使用 - 实现简单的Banner图轮播效果

使用工具版本 Axure 9 实现的效果 步骤过程 1、打开Axure工具,从元件库拖个动态面板到空白页; 2、给面板设置一个常用的banner尺寸,举个栗子:343151(移动端我常用的banner尺寸),顺便给它起个名字,就叫…

RESTful API如何使用它构建web应用程序

RESTful API(Representational State Transfer),即表现层状态转移,是一种通过 HTTP 协议传输数据的应用程序接口(API)设计风格。 RESTful API 的设计原则包括以下几个方面: 资源(R…

QT学习日记 | 信号与槽

目录 前言 一、初始信号与槽 1、信号与槽的本质 2、信号与槽的使用 3、内置信号、内置槽函数与自定义信号、自定义槽函数 (1)文档查询 (2)自定义信号与内置槽函数的使用 4、信号与槽函数关联关系 5、带参数的信号与槽函数…

【软件设计师笔记】程序语言设计考点

【考证须知】IT行业高含金量的证书(传送门)💖 【软件设计师笔记】计算机系统基础知识考点(传送门)💖 【软件设计师笔记】操作系统考点(传送门)💖 🐓 编程语言之间的翻译形式 汇编 高级程序不能直接在计算机上执行,…

yolov8训练自己的关键点检测模型

参考: https://blog.csdn.net/weixin_38807927/article/details/135036450 标注数据集 安装labelme pip install labelme -i https://pypi.tuna.tsinghua.edu.cn/simple如果报错 $ labelme 2024-01-31 03:16:20,636 [INFO ] __init__:get_config:67- Loading …

YOLOv5改进系列(29)——添加DilateFormer(MSDA)注意力机制(中科院一区顶刊|即插即用的多尺度全局注意力机制)

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制

面试宝典之深谈JVM

面试宝典之深谈JVM 1.为什么需要JVM,不要JVM可以吗? 1.JVM可以帮助我们屏蔽底层的操作系统 一次编译,到处运行 2.JVM可以运行Class文件 2.JDK,JRE以及JVM的关系 3.我们的编译器到底干了什么事? 仅仅是将我们的 .ja…

深入理解 Golang 的 crypto/elliptic:椭圆曲线密码学的实践指南

深入理解 Golang 的 crypto/elliptic:椭圆曲线密码学的实践指南 引言crypto/elliptic 库概览基本使用教程高级应用案例性能与安全考量结论 引言 在当今数字时代,数据安全和加密技术成为了信息技术领域的重中之重。特别是在网络通信和数据存储领域&#…

如何系统的自学Python?通义千问、讯飞星火、文心一言及ChatGPT的回答

如何系统的自学Python?来看看通义千问、讯飞星火、文心一言及ChatGPT的回答. 第一个是马老师的通义千问 系统地自学Python是一个循序渐进的过程,从基础语法到实践项目,再到专业领域的深入学习。下面是一个详细的步骤指南: 了解Py…

控制台npm start终止不了?

控制台npm start终止不了? 在开发的过程中我遇到了这样的问题,想结束控制台3002端口运行,但是ControlC不起作用,不管我敲多少遍,依旧没有任何动静: 再次启动的时候它又会自动启动3003端口,300…

Kotlin 协程:深入理解 ‘async { }‘

Kotlin 协程:深入理解 ‘async { }’ Kotlin 协程是一种强大的异步编程工具,它提供了一种简洁、易读的方式来处理并发和异步操作。在 Kotlin 协程库中,async {} 是一个关键的函数,它允许我们启动一个新的协程,并返回一…

【大厂AI课学习笔记】1.4 算法的进步(2)

关于感知器的兴衰。 MORE: 感知器的兴衰 一、感知器的发明与初期振动 在人工智能的历史长河中,感知器(Perceptron)无疑是一个里程碑式的存在。它最初由心理学家Frank Rosenblatt在1950年代提出,并在随后的几年中得到…

【数字电子技术课程设计】多功能数字电子钟的设计

目录 摘要 1 设计任务要求 2 设计方案及论证 2.1 任务分析 2.1.1 晶体振荡器电路 2.1.2 分频器电路 2.1.3 时间计数器电路 2.1.4 译码驱动电路 2.1.5 校时电路 2.1.6 整点报时/闹钟电路 2.2 方案比较 2.3 系统结构设计 2.4 具体电路设计 3 电路仿真测试及结…

在IT行业,拥有含金量高的证书是职业发展的关键

IT行业有哪些证书含金量高? 在IT行业,技能和知识是职业发展的基石。随着技术的不断进步和行业的日新月异,持续学习和获得相关的专业证书已经成为IT专业人士提升自己竞争力的重要手段。拥有含金量高的证书不仅能够证明个人的专业能力,还能帮…