首页/文章/ 详情

这款自动化测试平台开源了,用来做自动驾驶仿真测试管理平台怎么样?

8月前浏览181


大家好,我是李慢慢。


转载一篇来自公 众号【GitHubDaily】的文章,原文【又一款国产自动化测试平台,开源了!】,原文内容如下:


“时间就是金钱,效率就是生命”,在当下的社会里不仅我们的生活节奏变得越来越快,软件研发上线的节奏也是如此。在如此快节奏的软件开发环境中,高质量的软件测试变得尤为重要。

为了提高测试的效率和质量,建设一个强大的自动化测试体系势在必行。企业引入自动化测试的过程主要有两种方式:

1、基于测试框架编写自动化测试脚本

2、建设自己的测试平台

基于测试框架编写自动化测试脚本的方式,可以实现灵活的测试定制和精细化控制。这种方式适用于对测试框架和编程语言较为熟悉的团队,能够根据实际需求进行自由扩展和定制。

然而,编写和维护大量的测试脚本需要投入大量的时间和人力资源。此外,测试脚本的开发对开发人员的技术要求较高,对团队的技术依赖性较大。对测试结果的分析和报告生成也需要额外的工作。

相比之下,建设测试平台可以带来一系列优势。测试平台提供了集中管理测试用例、执行测试任务、跟踪测试进度和分析测试结果的能力。

测试平台还可以提供丰富的报告和分析功能,方便团队查看测试结果和评估测试覆盖率。但建设一个完整的测试平台需要投入大量的人力和资源,对于一些团队来说是一项不小的挑战。

今天给大家推荐一个 GitHub 开源项目:MeterSphere 一站式开源持续测试平台。

这是粉丝群中一个负责公司内部测试平台建设工作的小伙伴推荐的,他跟我讲述了他们团队原本打算自研测试平台,了解到这个开源项目之后果断放弃自研,直接采用这个开源测试平台开展测试工作的经过。

GitHub:https://github.com/metersphere/metersphere

经过一番了解之后,我发现在众多的测试平台中,MeterSphere 确实有他的独到之处,怪不得能够成为越来越多测试人员的选择。

开源活跃度和影响力

MeterSphere 项目创立于 2020 年 2 月,目前总共有 9000 多个 Star,2000 多次 Fork,累计的 issues 更是有 8000 多个。这应该是迄今为止我见到过数据最牛的测试相关开源项目了。

放一张与知名开源测试工具 JMeter 的 GitHub Stars 对比图大家感受下。

此外,在由中国开源推进联盟(COPU)牵头,联合众多知名社区、高校、专家共同发布的《2023 中国开源发展蓝皮书》中,MeterSphere 项目的影响力更是排在第 6 位,是排名前二十的项目中唯一的测试相关项目。

接下来就带大家进一步了解下 MeterSphere,为什么它能受到众多测试人员的喜爱,能让粉丝群中的小伙伴放弃自研测试平台。

一键安装,开箱即用

MeterSphere 提供了十分完善且简单的安装脚本,对于像我这样不需要修改安装参数只是想体验一下平台功能的用户,可以通过一键安装脚本实现快速安装(需要联网)。

安装不仅包含 MeterSphere 的应用,需要用到的数据库、还有 Redis 这些中间件,不需要自己额外部署,这一点先给个好评。

对于纯内网环境,服务器不能连外网的小伙伴,MeterSphere 项目组也提供了完整的离线安装包,下载以后传到服务器上解压执行安装脚本,也可以很快速地完成安装环节。

MeterSphere 还支持通过 Helm Chart 在 Kubernetes 环境中部署以及分布式的部署方案,从部署这个方面就可以看出 MeterSphere 项目组考虑得十分周到细致,基本上各式各样的部署场景都考虑到了。

界面美观,操作顺畅

MeterSphere 的主题色使用了比较少见的紫色,整体给人一种耳目一新的感觉。产品的菜单设计也比较清晰,左侧设计了可以展开 / 收起的功能模块菜单,顶部是功能模块下的子模块菜单和消息通知、任务中心以及个人设置这些通用功能的入口。

功能全面且强大

定位为 “一站式持续测试平台”,MeterSphere 的功能确实既全面又强大。

MeterSphere 主要包含了测试管理、接口测试、UI 测试和性能测试四个核心功能模块,以及项目设置、系统设置这样的管理模块。

接下来简单给大家介绍下每个模块的主要功能,以及我的使用感受。

测试管理

测试管理模块围绕测试用例及测试计划提供以下主要功能:

  • 首页信息展示:首页集中展示了当前项目的用例数量统计、关联用例数量统计、用例维护人分布、遗留缺陷统计、过去 7 天测试计划失败用例 TOP10、测试用例评审、定时任务等信息。

  • 功能用例:支持在线表单、脑图方式创建测试用例,创建用例时关联其他类型测试用例(比如接口用例、场景用例、性能用例),支持测试用例导入 / 导出,导入 / 导出格式支持 Excel、XMind 等多种文件格式。

  • 用例评审:支持创建评审,关联及取消关联测试用例,在线评审并反馈评审是否通过及评审具体意见建议。

  • 测试计划:支持列表显示、创建、编辑、删除测试计划,关联测试用例,在线更新反馈测试用例的测试结果,包括 “通过”、“失败”、“阻塞”、“跳过”,以及在线自动实时统计显示测试计划对应的测试报告,导出 HTML 格式的测试报告和分享报告链接。

  • 缺陷管理:管理该项目下所有的缺陷信息,如果项目设置关联了其他 Bug 平台(比如 Jira、TAPD、禅道等),则此 Bug 会自动同步到相应的平台。

  • 报告:提供直观、美观的页面对测试计划结果进行可视化展示,同时提供导出报告等功能方便对测试结果进行归档及分享,同时可以自定义配置报告模版。

  • MeterSphere 测试管理模块中比较吸引我的有两个点,一是脑图模式下的用例编辑和管理,二是测试计划的概念以及测试计划里功能用例与其他自动化用例之间的关联关系。

接口测试

接口测试模块由首页、接口定义、接口自动化、测试报告四部分组成。

  • 首页:展示当前项目的接口数量、接口用例数量、自动化场景数量、场景定时任务数量、接口覆盖度、用例覆盖度等信息,以及过去 7 天有更新的接口、运行中的定时任务等,帮助用户快速了解当前项目接口测试情况。

  • 接口定义:可用于管理接口、接口用例,并执行调试等测试工作。其中接口定义支持 HTTP、TCP、SQL、Dubbo 协议,导入支持手动录入,也支持导入企业现有的接口测试工具中的接口,例如 MeterSphere 格式、Postman 格式、Swagger 格式、HAR 格式、JMeter 格式等。

  • 接口自动化:用于场景级自动化测试工作,能够编排组合多个接口实现一个场景的测试;在场景中支持自由添加接口请求,提供变量提取、响应断言、前后置脚本、逻辑控制器等功能。

  • 测试报告:对接口测试结果进行可视化的美观页面报告展示,支持报告分享和导出,方便对测试结果进行归档留存。

根据 MeterSphere 官方文档介绍,其接口测试使用了 JMeter 作为执行引擎,体验了一下后主要感觉的是,MeterSphere 在功能和体验上结合了 Postman 和 JMeter 两者的优点。

在单接口管理和调试上,MeterSphere 跟 Postman 比较接近,相信用过 Postman 的用户都很容易上手。在多接口场景化编排上,MeterSphere 完全保留了 JMeter 强大的能力与灵活性,同时又把很多功能进行了进一步包装,让用户更容易理解和上手。比如,接口测试中经常用到的参数提取和断言功能,MeterSphere 针对 JSON 格式的响应体提供了推荐功能,点点鼠标就可以添加想要的断言,不需要自己写 JSONPath 表达式了。

UI 测试

MeterSphere UI 测试模块围绕应用系统的用户界面提供以下主要功能:

  • 元素库:平台提供元素库的功能,通过创建元素库,可以把 UI 自动化场景中的单个步骤,进行统一管理,达到页面元素在不同 UI 场景中复用的效果。

  • UI 自动化:支持手动创建 UI 自动化场景和导入 SeleniumIDE 工具录制好的 side 脚本文件,支持添加浏览器操作、 弹窗操作、元素操作、鼠标操作、输入操作、流程控制等步骤,并提供查看元素库、前置操作、后置操作、错误处理等高级功能。

  • 测试报告:提供直观、美观的页面对 UI 测试的结果进行可视化展示,可查看场景全部步骤和失败步骤,以及控制台详情,并且支持对步骤执行时的 UI 截图预览。

整体上 MeterSphere UI 测试功能也是比较容易上手的,我在之前没怎么接触过 Selenium 以及浏览器自动化测试的情况下,通过查看 MeterSphere 的文档和视频教程也可以很快速地完成一个页面的自动化测试场景。

性能测试

MeterSphere 性能测试模块可以认为是一个在线的、Web 版的 JMeter。相比于直接使用 JMeter 进行性能测试,MeterSphere 在这四个方面进行了相应的增强:

  • 测试脚本录制和管理增强:提供脚本录制 Chrome 插件,并统一存储在一个平台上。

  • 压测规模扩展性增强:压测执行节点按需创建和安装,轻松支持大规模性能测试。

  • 测试报告分析增强:实时的性能测试报告展示,多次测试结果可以快速比较。

  • 团队协作增强:B/S 架构,测试用例、脚本和报告可以有效隔离和分享协作。

虽然我没怎么用过 JMeter 进行性能测试,但还是很快就能上手 MeterSphere 提供的相关功能,之前在接口测试模块中调试的场景一下子就能转换成一个性能测试。相信之前有在使用 JMeter 的用户,肯定更能体会到 MeterSphere 性能测试模块的特点和优势。

写在最后

综合体验了 MeterSphere 平台之后,我十分理解前文提到的小伙伴为什么会放弃自研测试平台,选择直接使用 MeterSphere。

一方面 MeterSphere 作为一个开箱即用的测试平台,本身的功能就已经足够丰富、足够强大了,相信大部分测试团队直接部署使用就可以满足自己的需求。

另一方面,MeterSphere 作为一个明星开源项目,有着广泛的用户群体、活跃的交流社区以及持续不断投入的项目组成员,与其自己闭门造车不如共同参与到开源项目当中,既能满足自己又能帮助他人。

对于没有 IT、人力资源来私有化部署、维护一套 MeterSphere 环境的用户,官方还提供了在线的 SaaS 版本(https://metersphere.com),注册账号之后就有 7 天的免费体验时间,后续正式订阅的价格也比较公道。

如果你所在的团队也在自研自动化测试平台,或者有自动化测试的相关需求,MeterSphere 是一个我认为值得去体验尝试的开源项目。

最后再放上该项目的开源地址,大家可以参考学习。

GitHub:https://github.com/metersphere/metersphere

本文完。

来源:车路漫漫
通用UGUM自动驾驶控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-12-10
最近编辑:8月前
李慢慢
硕士 自动驾驶仿真工程师一枚
获赞 14粉丝 93文章 320课程 0
点赞
收藏
作者推荐

SUMO:一个开源的交通流仿真平台

SUMO (Simulation of Urban MObility)是一个知名的交通流仿真平台。本文由SUMO开发者(Daniel Krajzewicz, Georg Hertkorn and Peter Wagner, German Aerospace Centre, Institute for Transportation Research )撰写,对SUMO做了详细介绍 摘要 由于交通流的高度复杂性和混沌性,目前还没有精确的交通流模型,因此研究者主要通过仿真模拟来预测交通流。在这一领域中,已有许多仿真模拟软件包,并且在其软件体系结构以及描述流量本身的模型上存在差异。我们将介绍另一个系统,与大多数其他仿真软件包相比,它是作为一个开源程序提供的,因此可以进行扩展,以满足研究人员自己的需要,也可以作为新交通模型的参考试验台。 简介 当试图改善交通时,需要一个有效的模型来处理。尽管有些人可能认为交通可以用出发时间和具有一定持续时间的路线来描述,但交通状况受到个人对流动性的个人愿望的高度制约。因此,既没有出发时间,也没有固定的和早期已知的路线。这对于交通模型本身来说是一个很大的问题。特别是私人交通,使得用数学公式描述交通是不可能的。一方面,现代人希望在特定的时间和地点离开和到达,另一方面,车辆在街道上的移动,都会影响交通和彼此。路网的工作负荷取决于驾驶员的离开时间,并决定了移动的速度。反之亦然,由于驾驶员希望快速行驶并在某个时间到达,因此负荷会影响他们的发车时间。除此之外,交通还受天气、区域内基础设施或其他影响系统的事件等因素的影响。 由于没有有效的数学模型考虑到所有这些影响,仿真模拟是显示路网的weak points或预测交通的唯一途径。因此,许多仿真软件包已经被开发出来了。其中一些已经在S MARTEST项目(S MARTEST 1999)中进行了测试。 这种交通仿真软件包在建模构件的组成以及使用模式上各不相同:有些软件包被设定为使用窗口的应用程序,而另一些则是交通研究人员的工具,是简单的命令行工具或程序。S MARTEST还提供了此类软件包所具有的功能列表。 S MARTEST主要是解决微观模拟问题。这种类型的模拟将单个车辆视为原子部分,而不是整个交通流本身(宏观)或车辆或驾驶员的单个部分(亚微观)。这种车辆模型可以使用元胞自动机在时间和空间上离散,或者只在时间上离散,或者甚至可以是完全连续的模型。图1显示了空间离散模拟和空间连续模拟之间的区别。图1 空间离散模拟和空间连续模拟之间的区别从研究者的角度来看,当使用一些现成的仿真软件包时,由于软件包是黑盒的状态,可能会出现一些问题。首先,人们无法查看到底层模型。此外,由于软件架构不同,不同模型的特性(如仿真速度、描述现实的能力等)的比较,虽然不是不可能但也很困难。此外,此类模拟工具不能通过引入自己的想法(如新型传感器、测量或模型)而自发地扩展。 为了引入一种工具来完成这些尚未得到支持的任务,我们的研究所与应用信息学中心(德国科隆)正在开发一种称为SUMO的交通模拟软件(“Simulation of Urban MObility”)。事实上,该软件是一个连续的、微观的和多模式的交通模拟,并且也能够模拟比单个城市更大的网络(如公路网)的交通。 仿真模拟 基本范式SUMO被构想用于模拟城市的道路交通。由于模拟是多模式的,这意味着不仅要对城市内的汽车运动进行建模,而且还要对街道网络上的公共交通系统(包括备选列车网络)进行模拟,因此模拟的原子部分是单个人。这个人用出发时间和他/她所走的路线来描述,而他/她所走的路线又是由描述单一交通方式的子路径组成的。图2 复合路径因此,模拟人可以将自己的车开到最近的公共交通系统站,并通过其他交通工具继续他的旅行。除了使用机动车辆的活动,一个人也可以步行。步行不是完全模拟的,而是模拟人到达目的地所需的时间。图2显示了这样一个复合路径。图3 不同级别的模拟(从左到右:宏观、微观、亚微观)对交通流进行了微观模拟。这意味着,在模拟网络中行驶的每辆车都是单独建模的,并且具有一定的位置和速度。在持续时间为1s的每个时间步长中,这些值会根据前方车辆和车辆行驶的街道网络进行更新。车辆的仿真是时间离散和空间连续的,驾驶员模型采用的连续模型。在模拟交通流时,考虑了街道属性,如最大速度和路权规则。特性在当前版本0.7中,SUMO包含以下功能:-无碰撞车辆运动-不同车型-有变道的多车道街道-基于交叉口的通行权规则(具有相同/不同优先权的街道交叉口,例如,先右后左)-车道间连接-包含每个时间步的网络状态信息的XML原始输出--XML文件的输入,这些文件可能分散在多个文件中,以便更好地处理 驾驶员模型SUMO目前使用的模型是Gipps modelextension。在每个时间步中,车辆的速度都会与领先车辆的速度相适应,从而在接下来的模拟步骤中产生无碰撞系统行为。这种速度称为安全速度vsafe,使用以下公式计算:为了将加速度与车辆的物理能力相结合,计算得出的 “期望”速度为车辆极限速度、车辆速度加上最大加速度、安全速度三者之中的最小值。因此,车辆的速度不会超过其可能的速度。此外,通过假设驾驶员犯了错误而无法完全适应期望的速度来模拟驾驶员行为。这是通过从期望速度中减去一个随机的“人为错误”来完成的。由于车辆不得向后行驶,在前面的计算之后,必须再次取计算速度和0之中的最大值,并将其作为当前时间步长的车辆最终速度。 交通灯交通灯在交通管理中起着重要的作用,它改善了交通流。除了简单的路权规则外,每个模拟交叉口也可能是带有红绿灯的交叉口。由于德国的一些交叉路口允许在右转时忽略红灯,因此有关这方面的通行权规则的扩展正在实现中。 仿真输出现在有两种不同的输出。第一种是所谓的“原始”输出,包含所有边缘(街道)和所有车道,以及每个时间步上行驶的车辆,其中车辆由其名称、位置和速度描述。这个输出是完整的,可以作为后处理工具的输入进行评估。然而,大型模拟产生的数据量几乎无法管理,因此其他输出也被发明出来。比如仿真中有检测器可以输出流量、车道上的平均速度和其他值。这些结果将使用CSV或GnuPlot格式写入到一个文件中。每个检测器都有自己的文件。软件开发作为交通研究人员的研究工具,SUMO被设计得快速和准确,而不是试图成为一个赏心悦目的软件。因此,尽管GUI的实现将是我们下一步的任务之一,但现在而言,主程序是从命令行启动,同时产生的输出必须经过后处理(如果我们想让结果可视化)。这可以防止因为GUI产生数据导致降低系统速度,为仿真模拟本身提供更多内存和系统时间。 SUMO是用C++实现的。在开发过程中,我们尽量只使用这种语言的标准化部分。我们的软件可以使用大多数平台进行编译,我们在以下环境中对此进行了验证:-使用MSVC的Windows-使用Sun-C++编译器和STL-Port的Solaris-使用gcc的Linux Simulation Benchmarks这种模拟可以在普通台式电脑上模拟大型城市,比如柏林、慕尼黑或科隆等。我们的大部分测试都是在英特尔个人电脑上进行的,它的运行频率为933MHz,内存为256MB。在这种情况下,SUMO大概能够模拟每秒大约100万辆汽车的移动。 正在进行的项目在我们的研究所,一些项目使用SUMO来验证他们对新技术的假设。以下项目已经开始使用SUMO,或将在未来几个月内使用它:-加州的一个项目,调查分布在高速公路车道上的探测器是否可以用来预测交通堵塞。-基于从柏林,维也纳和维尔茨堡的出租车得到的移动车辆数据,我们试图验证交通流预测方法-一个内部项目,试图预测新传感器技术的优势-美国的一个项目,试图改善高速公路出口匝道区域的交通状况 其他工具SUMO由不止一个应用程序组成。其他一些模块允许建立仿真和研究所需的指定数据。目前正在开发以下模块: SUMO-NETCONVERT由于高度的复杂性,SUMO的网络描述并由人类用户生成。相反,我们使用此工具将公共数据(如边界和节点列表)转换为一个完整的SUMO网络。在此过程中,SUMO-NETCONVERT读取可用数据,计算SUMO所需的输入,并将结果写入XML文件。到目前为止,四种不同的输入格式可以转换成SUMO网络:- simple XML-data containing edge types,nodes and edges- CSV-data containing edge types, nodes andedges- Cell-input files (Cell is aqueue-simulation developed by the ZAIK)- VISUM-networks由于SUMO在INVENT项目中使用,一些进一步的导入功能将在今年内实现:ArcView、VISSIM和GDF。其中GDF的间接导入已经可以通过使用脚本将其转换为XML,然后使用生成的XML描述作为sumonecontvert的输入。下图显示了哪些数据可以从边界和节点列表中计算出来。第一步是确定交叉口的优先级,第二步是计算可能到达的车道和边缘之间的关系,在第三步中,目的地边界在进入的车道之间被分割。计算是灵活的,取决于输入和输出边界的数量、大小以及它们在网络中的优先级以及由此产生的连接类型。图4:将简单的网络数据转换为完整的描述下一幅图显示了当希望对整个城市进行建模时,需要这样一个网络构建工具。无论是街道的数量还是它们之间关系的复杂性都不允许人类用户处理网络描述。图5:柏林市地图SUMO-NETCONVERT还负责红绿灯相位的建立。在现实世界中(至少在德国),每个交叉口的交通相位都是单独调整的,并且某些相位数据可能不适用于所有交叉口,因此我们使用启发式方法来生成实际的输出。 SUMO-ROUTER除了静态部分——网络——之外,模拟还包括移动的车辆。随着模拟质量的提高,对人口流动性建模的需求也随之增加。在这种情况下,车辆不在网络上进行统计分布,而是使用由具有特定发车时间的路线组成的单人每日计划。虽然给出了描述出发时间和路线起点和终点所需的数据,但必须计算路线本身。为了避免在模拟过程中对这些数据进行在线计算,该计算使用一个单独的模块SUMO-ROUTER来完成。该模块读取一组虚拟人的出发时间、出发地和目的地,然后使用著名的Dijkstra routing algorithm计算通过网络的路线。图6:小型网络中的路线由于街道上的速度随着交通量的变化而变化,因此使用交通量未知的网络计算路线时不考虑实际情况,路线将采用Christian Gawron开发的动态用户平衡方法来完成。在该方法中,路线和模拟将重复多次,以趋近于驾驶员的真实行为。 小结 我们试图建立一个通用的交通研究平台,为非编程用户提供一个简单的模拟工具,支持他们进行交通模拟。由于其高度可移植性,该工具可用于不同的操作系统。除此之外,该平台还可由其他人扩展,以便他们改进软件并加入我们没有考虑到的想法。此外,最初实现的模型可以用自己的方法来代替,以便在仿真质量和速度方面与现有模型进行比较。 未来工作 我们的研究所将把SUMO用于不同的目的,因此我们将做进一步的工作。这些工作有关移动车辆数据验证、交通预测改进和交通灯优化的项目。同时为了跟踪和验证模拟,将实现一个图形用户界面,其中将显示加载的地图,以及车辆移动和一般信息。为了保持可移植性,GUI将使用Qt-windowing library来实现,该库是免费使 用的,可用于大多数系统,包括Windows、UNIX/Linux和Macintosh。一些正在运行的项目表明需要将软件集成到其他软件包中,或者在软件和其他编程语言之间建立接口。对此,也将进行相关工作。此外,由于要模拟的交通量不断增加,并且一些研究实验需要多次模拟来计算单个值,系统将被扩展以允许使用计算机集群。本文完。 来源:车路漫漫

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈