• 0
  • 0
分享

  在当今数字化快速发展的时代,软件系统的稳定性和性能至关重要。为了满足某企业的业务需求,提高软件研发效率和质量,全栈式流水线调度平台项目应运而生。该项目在测试过程中展现出了一系列优秀的实践经验,特别是在性能测试方面,为项目的成功实施提供了有力保障。

  一、项目背景与目标

  为有序推进某平台建设,召开的某平台建设专题会提出了“一平台、多频道”的多部门协作研发要求,形成以“平台+”为思路的架构升级方案。该项目的目标是建设研发过程中持续集成、持续交付(CICD)的流水线调度和运行平台,支持云上容器化、云下主机两大类流水线运行场景,为该企业云上非信创、信创流水线、云下集中构建流水线的运行提供有效支撑,并实现多项具体功能。

  二、性能测试优秀实践

  (一)挡板模拟流水线压测

  1.测试目标:屏蔽流水线插件相关方的影响,主要验证全栈式流水线调度平台的流水线调度能力和运行支撑能力是否符合预期。

  2.测试流水线设计:根据中心流水线模板,覆盖典型流水线类型。典型流水线需满足在典型流水线模板基础上设计,覆盖常用生产场景,任务中插件的选择和排序符合常规用户习惯。测试流水线中使用特殊的插件来模拟对资源的占用和特定执行时间,根据生产上每个插件的平均运行时间来设置模拟插件的运行时长,模拟插件对资源的占用情况与生产上每个插件设置的工作负载保持一致。

1-1.png

1-2.png

  3.测试场景设计:以TFS流水线生产运行数据为依据,确定某企业流水线的性能测试场景。包括每10s调起一条流水线,至200条流水线全部调起;每2s调起一条流水线,至200条流水线全部调起;1分钟内调起200条流水线。

  4.经验分享:在测试中发现流水线任务调度策略存在问题,先调起的流水线任务和后调起的流水线任务在排队时具有相同的权重,导致流水线平均运行时间被拉长。针对此问题,采取的措施是任务调度策略增加优先级控制,赋予先调起的流水线任务更大的权重。通过优化,流水线的成功率达到100%,整体运行时长明显缩短,单条流水线耗时(最大值)和单条流水线耗时(平均值)也得到了显著改善。

1-3.png

  (二)全流程贯通流水线压测

  1.测试目标:验证某平台性能,包括验证某平台流水线管理模块并发执行流水线场景的性能、验证流水线整体性能、验证调度平台使用真实的流水线插件并发执行流水线调度场景的性能以及验证流水线工具链中基础环境、关键插件的承受能力。

  2.测试流水线选型:根据常用流水线类型的使用频次和压测选型分析,选取了云上VUE(Arm+Kylin)、云上VUE(海光+Kylin)、云上VUE(X86+Euler)、云上java(X86+Euler)、云上Java(Arm+Kylin)、云上Java(海光+Kylin)、云下Java集中构建、云下C#集中构建等典型流水线进行压测。

  3.测试场景设计:流水线全流程压测分为两轮。第一轮测试场景包括每2s调起一次某企业流水线,至被测流水线被重复调起10、50、100、200次以及1分钟内调起流水线200次。第二轮测试场景包括使用模拟插件验证当前资源条件下待测流水线的最大并发量,测出系统容量值及流水线执行时长拐点,然后使用真实插件对云上、云下流水线进行全流程压测,验证单类流水线的最大并发量,并对多种技术栈类型的流水线进行混合测试,依据TFS流水线运行统计数据,指定混合压测流水线类型的占比。

  4.经验分享:在测试中发现云下C#集中构建流水线在压测调起200条场景中,由于运行池并发数限制,导致单条流水线平均耗时1分6秒,运行时间延长65%。执行200条流水线运行场景中,流水线执行完毕后出现资源回收排队甚至卡死的现象,经分析是由于流水线插件运行日志上传ufile出现排队导致。解决方案是将日志从实时上传ufile调整为先存到本地NAS上,然后通过定时任务,每12小时批量上传ufile。经过优化后,流水线的性能得到了有效提升。

1-4.png

  (三)试点系统真实流水线对比测试

  1.测试目标:通过对比同一条真实流水线在TFS和某平台上的运行统计数据,验证某平台各流水线插件的性能指标是否能够达到TFS上的水平。

  2.测试流水线选取:选取A平台FSPP模块和B平台USER模块的CI流水线作为测试对象,对比其在TFS和某平台上的实际运行时长差异。

  3.测试场景设计:选取流水线运行高峰时段和平峰时段,在TFS和某平台多次调起同一条流水线运行,统计流水线整体运行时长和各插件运行时长,对比其在TFS和某平台上的实际运行时长差异。

  4.经验分享:测试结果显示某平台镜像制作和上传过程的耗时较TFS有比较明显的增长。为解决此问题,采取的措施是将部分版本的基础镜像提前缓存至本地NAS(主要是中心推荐使用的基础镜像版本),命中缓存后自动跳过从制品库下载基础镜像的步骤,有效降低了镜像制作和上传过程的耗时。通过这一优化措施,某平台各流水线插件的性能得到了显著提升,能够更好地满足业务需求。

1-5.png

  三、总结与展望

  全栈式流水线调度平台项目的成功实施,得益于在性能测试方面的优秀实践经验。通过分阶段策略化的性能测试方法,包括挡板模拟测试、全流程深度测试和真实场景的模拟验证,确保了平台的性能和稳定性。

  在未来的工作中,我们将继续深入挖掘和应用优秀的测试实践经验,不断优化和完善测试流程,以适应不断变化的业务需求和技术发展。同时,我们也将积极推广这些优秀实践经验,为其他项目提供参考和借鉴,共同推动该企业的软件研发水平不断提升,为企业业务的持续发展提供坚实的技术支撑。


作者:常会鑫    

来源:http://www.51testing.com/html/10/n-7802710.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1.分析BUG是前端问题还是后端问题web端第一章通过浏览器的控制台(F12)点击Network查看HTTP状态码和数据传参情况第二种通过抓包工具Charlesapp端通过抓包工具Charles来确定传参是否准确如果app发抓包那么可以用jmeter跑接口,看传参2.查看服务器查看服务器日志查看动态日志 tail -ftail -f vsr/xxx/log.logtail  -fn 1000   vsr/xxx/ltest.log   循环实时查看最后1000行记录(最常用的)查看静态...
            1 1 1123
            分享
          • 1、测试时间不同:Beta测试是软件产品完成了功能测试和系统测试之后,在产品发布之前所进行的软件测试活动,它是技术测试的最后一个阶段。alpha测试简称“α测试”,可以从软件产品编码结束之时开始,或在模块(子系统)测试完成之后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。2、测试的目的不同:α测试的目的是评价软件产品的FLURPS(即功能、局域化、可用性、可靠性、性能和支持)。尤其注重产品的界面和特色。α测试即为非正式验收测试。Beta测试是一种验收测试,通过了验收测试,产品就会进入发布阶段。3、测试人员及场所不同:α测试是由一个用户在开发环境下进行的测试,也可以是公司内...
            0 0 1118
            分享
          •   美国国家航空航天局(NASA)局长比尔-纳尔逊(Bill Nelson)分享了该局将继续与波音公司合作执行前往国际空间站(ISS)的乘员任务的四个关键原因,尽管波音公司的Starliner飞船出现了推进器问题。这些问题迫使美国国家航空航天局(NASA)谨慎行事,决定在明年二月用 SpaceX 的"载人"龙""(Crew Dragon)飞船运送乘员返回,这意味着两名乘员将继续在国际空间站生活半年多。  纳尔逊局长在昨天的媒体电话会议上分享了原因,宣布了美国国家航空航天局的决定。他说,需要有两个不同的航天器来运送宇航员,以及美国国家航空航天局与波音公司的...
            0 0 398
            分享
          • 这个问题是我之前笔试的时候碰到的一道题,今天来详细展开写写解答思路:仔细分析一下这道题目,他的核心考察是循环语句的用法,还有date命令的用法。date命令是linux系统中比较常用的命令,就是跟时间挂钩,包括查看时间,修改时间,转换时间戳格式,加减时间等等。这道题目相对较为宽松,他并没有要求具体的时间格式要求,比如年月日时分秒等,那么我们就打印最常见的时间格式就好。linux中bash的循环用法有很多,包括for循环,while循环和until循环,相对于for循环,前提我们需要知道循环次数,如果想无限循环,只能把次数写大点;当我们只知道停止条件,不知道次数,就需要使用while循环;当重复...
            1 0 5689
            分享
          • 一、Monkey简介Android系统自带monkey程序,模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。Monkey的使用是在产品稳定了,没有特别多的Bug时候。用monkey去测试待测应用的稳定性、健壮性(是否会发生闪退、崩溃),手机出厂前的整机测试。Monkey犹如其猴子的译名,就是杂乱无章的乱点,通过指定执行点击次数,不断的点击安卓系统,或者指定的App,给系统产生压力。注意:在使用Monkey之前,需要利用adb将PC端与安卓设备连接。二、monkey常见命令1.1、调出说明手册命令:adbshellmonkey–he...
            0 0 2380
            分享
      • 51testing软件测试圈微信