首页 > 其他分享 >测试环境使用问题及其优化对策实践

测试环境使用问题及其优化对策实践

时间:2024-01-09 15:05:05浏览次数:28  
标签:jsf 部署 编译 测试 test 优化 测试环境 对策

一、前言

我们经常听到研发人员和测试人员抱怨:“测试环境怎么又不能用了!”、“测试环境现在部署的是master包!”、“测试环境数据又被人改了?”、“测试环境怎么部署的这么慢!”、“测试环境里的公共服务,你用的时候我只能等着?”、“测试环境挂了,我自动化脚本全失败了!”测试环境是是测试实施的基础,测试环境健全以及是否稳定直接影响了项目的进度,而测试环境的指标包含质量、效率、成本,质量主要是环境的稳定性,效率是环境部署更新、环境使用的情况,成本主要是资源使用成本和人员维护成本,测试环境的质量、效率、成本会直接影响到项目的交付质量和交付效率

测试环境使用问题及其优化对策实践_解决方案

测试环境问题是每个测试团队都面临的问题,在2022年1024黑马午餐会和技术大佬的交流中,有同学也提出了环境治理、提高环境使用效率的问题,京东集团技术委员会主席曹鹏也给出了建议

测试环境使用问题及其优化对策实践_解决方案_02

解决测试环境问题理想状态下是存在多套环境,但是服务器资源成本和人员维护成本都不允许,那么我们就需要考虑在现有的工具、资源下,如何更好的通过规范和流程前更好的使用我们现在工具以保证我们的测试环境稳定性、提高测试环境的使用效率是我们需要去思考的问题,本文主要是介绍我们在整个测试环境治理中所做的一些探索和优化;

二、问题调研

我们为了针对性的解决大家在测试环境使用中的痛点,在二级部门内部发起了一次关于测试环境的调研,针对不同的岗位选取了20个样本,调研结果如下:

1、测试环境使用群体

结果:使用到测试环境的人大部分是研发和测试人员

测试环境使用问题及其优化对策实践_测试环境_03

2、使用测试环境一般作为什么用途

结果:使用测试环境一般功能测试>研发自测>性能测试

测试环境使用问题及其优化对策实践_重启_04

3、对现在环境编译部署的时间是否满意

结果:对于现在测试环境部署的效率不满意

测试环境使用问题及其优化对策实践_解决方案_05

4、觉得现在的测试环境是否稳定随时可用

结果:对于现在测试环境的稳定性不满意

测试环境使用问题及其优化对策实践_重启_06

5、对于编译部署的时间不满意,主要是哪些应用比较慢

| 应用 | 反馈次数 | | tms-bid-web-test | 1 | | tms-tfc-web-test | 1 | | tms-workbench-client-test | 3 | | tms-workbench-web-test | 1 | | tms-basic-web-test | 1 |

以下是我们调研后针对反馈的编译速度慢的应用取样部署编译时间:

•tms-bid-web-test:

测试环境使用问题及其优化对策实践_测试环境_07

•tms-tfc-web-test:

测试环境使用问题及其优化对策实践_重启_08

•tms-workbench-client-test:

测试环境使用问题及其优化对策实践_测试环境_09

tms-workbench-web-test:

测试环境使用问题及其优化对策实践_重启_10

•tms-basic-web-test:

测试环境使用问题及其优化对策实践_解决方案_11

6、大家认为环境不稳定不可用的原因主要是

•大家共用一套测试环境,研发联调,测试回归,很容易出问题

•偶尔存在中间件测试环境host地址变更情况

•目前workbench测试环境有两台机器,部署时正常来讲是为了保证服务可用,部署重启时至少1台提供服务,但是实际两台部署的中间间隔是固定的60s,第一台从部署到提供服务大于60s,这样导致两台服务均不可用,而workbench又是多团对开发,导致很多时候在等待服务启动,研发测试效率变低

•接口经常超时

•下游业务测试依赖应用较多,如测试京驿app如较下游系统:京驿app需求,需后端tfc,rfq,basic,cmc,jdi等环境持续可用,排查时,服务可用状态不持续在线

7、现在测试环境最令人不满意或者影响工作的地方

•测试环境共有一套,不做区分,不稳定

•测试环境比较稳定,目前暂无这些问题

•配置更新还需要重新编译

•workbench用的人多,经常有人部署导致耽误测试时间

•不同分组jmq未隔离

•高可用

•环境太少,如果有上线回归,就占用测试环境了

•下游下单需多次排查测试环境,平台连接后端服务不可用/无可用的后端服务实例

•经常宕机

•频繁部署,编译时间长,部署后杰夫服务不可用

•部署起来太慢啦,有的宿主机好久不动,突然服务停了,比如通联,不清楚代码是否有问题

•basic环境部署时,其他系统基本都用不了了,需要等

•部署时间长,部署人员多,长时间处于部署中 货航系统还比较满意,偶尔系统间交互会有问题

•频繁部署,影响工作效率

8、用户期望测试环境能满足用户哪些需求

•研发联调,集成测试有单独环境支持

•测试回归环境有单独环境,不要跟功能测试环境混用

•稳定版本提供单独环境,对应线上环境,以对外提供稳定的环境

•稳定性

•单测覆盖率的提升方面是否有助力方案;

•研发是否可操作自动化的验证方式;

•高可用

•聊天环境,测试环境,独立的

•环境稳定

三、解决方案

我们针对调研反馈的问题和现在已知的测试环境问题进行解决,主要解决内容如下:

1、问题:系统编译部署的等待时间长

解决方案:寻求行云部署帮助,优化编译命令和配置

测试环境使用问题及其优化对策实践_测试环境_12

优化结果:编译速度由原来的5~10分钟,降低至3分钟以内;

tms-bid-web-test优化前:

测试环境使用问题及其优化对策实践_重启_13

tms-bid-web-test优化后:

测试环境使用问题及其优化对策实践_测试环境_14

tms-tfc-web-test优化前:

测试环境使用问题及其优化对策实践_重启_15

tms-tfc-web-test优化后:

测试环境使用问题及其优化对策实践_解决方案_16

2、问题:系统稳定性不好,公用的应用basic、workbench等部署频繁,部署时候影响别人使用

解决方案:使用行云现有编排部署方式,核心尤其是对其他应用提供服务的应用,主干测试分组中增加到2台实例,在部署的时候采取滚动部署,即一台机器部署且探活jsf接口可用后,再执行第二台机器的部署,在部署过程中保持有一台实例能够提供服务,减少因为频繁部署导致的测试系统不稳定问题

编排部署配置方式:

(1)扩容

大部分测试分组当前都是一台机器部署,所以在滚动部署之前需要扩容到两台机器,在实例列表页面选择测试分组,在容器状态中选择扩/缩容,选择扩容操作

测试环境使用问题及其优化对策实践_解决方案_17

扩容数量、扩容版本默认当前内容,扩容后,容器为2

测试环境使用问题及其优化对策实践_测试环境_18

确认成功后,系统会新增一台机器,并自动进行部署,部署成功可执行后续操作

测试环境使用问题及其优化对策实践_重启_19

(2)编排部署(编译+部署)

在部署编排页面点击【新增部署编排】

测试环境使用问题及其优化对策实践_重启_20

在公有模版里面选择【编译+部署】

测试环境使用问题及其优化对策实践_测试环境_21

在打开的默认模版中,构建任务选择需要编译的分支,通常我们选择的是test分支

测试环境使用问题及其优化对策实践_重启_22

在滚动部署节点,基本设置中

选择分组:我们要部署的分组,通常是日常测试分组

更新方式:按每分组数量

每次更新容器个数:1

每次更新时间间隔:可以使用默认的15s

测试环境使用问题及其优化对策实践_测试环境_23

任务步骤环节,需要添加jsf下线、jsf上线2个节点,使用默认的配置即可

测试环境使用问题及其优化对策实践_解决方案_24

确认成功后,保存并且运行,会先进行编译构建操作(此处不赘述),编译构建完成之后,会进行滚动部署操作,分2个批次进行部署,先进行jsf下线

测试环境使用问题及其优化对策实践_解决方案_25

此时,jsf下线后,会有一台实例仍然存在,一台实例jsf下线

测试环境使用问题及其优化对策实践_重启_26

部署完成之后,会进行jsf存活的验证,验证成功后,才执行后续操作

测试环境使用问题及其优化对策实践_测试环境_27

当jsf探活100%后,会进行我们设置的sleep15s的操作

测试环境使用问题及其优化对策实践_解决方案_28

进行第二台实例的部署,全都部署完成后两台实例jsf都可用

测试环境使用问题及其优化对策实践_解决方案_29

测试环境使用问题及其优化对策实践_重启_30

全部部署完成后,咚咚提醒执行完成

测试环境使用问题及其优化对策实践_重启_31

每次更新版本的时候,直接到部署编排页面,到编译部署任务里面点击运行就可以了!

测试环境使用问题及其优化对策实践_测试环境_32

(3)编排部署-可选

应用场景:不需要编译操作,只做部署操作

部署编排页面点击场景化部署编排

测试环境使用问题及其优化对策实践_重启_33

选择滚动部署

测试环境使用问题及其优化对策实践_测试环境_34

选择待部署分组(主干测试环境选择日常测试分组),部署配置镜像默认使用当前使用镜像

测试环境使用问题及其优化对策实践_重启_35

执行下一步操作,按数量更新,设置每次更新容器数,间隔时间,选择是否jsf上下线、负载均衡摘除/挂载,np下/上线操作,是否勾选负载均衡和np下/上线要看是否配置负载均衡和是否在np关联域名

测试环境使用问题及其优化对策实践_重启_36

保存并运行后开始滚动部署操作

测试环境使用问题及其优化对策实践_重启_37

(4)重启操作-可选

应用场景:只重启,不编译、不部署

部署编排页面点击场景化部署编排

测试环境使用问题及其优化对策实践_解决方案_38

选择制定ip重启

测试环境使用问题及其优化对策实践_重启_39

手动输入测试环境的2台实例ip,点击下一步

测试环境使用问题及其优化对策实践_重启_40

批次设置2,每个批次50%,暂停设置选择自动流转,间隔时间自定义,流量类型选择jsf流量上/下线

测试环境使用问题及其优化对策实践_测试环境_41

设置完成后,每次重启的时候过来点击运行就可以了

测试环境使用问题及其优化对策实践_测试环境_42

(5)部署效果(过程详解,不需要操作)

以部署编排为例(编译构建页面的部署一样的效果)

测试环境使用问题及其优化对策实践_解决方案_43

先执行jsf下线操作,此时该应用只有一台实例存活

测试环境使用问题及其优化对策实践_重启_44

再执行jsf上线操作,会一直探活jsf接口是否可用,当jsf接口可用后,会jsf上线验证成功

测试环境使用问题及其优化对策实践_测试环境_45

此时jsf接口2个都是存活的,其中一个部署的是新程序包,一个部署的是老程序包;

测试环境使用问题及其优化对策实践_测试环境_46

在第一批次部署成功之后,会进入我们设置的60s等待时间

测试环境使用问题及其优化对策实践_解决方案_47

等待时间结束后,执行jsf下线上线操作

测试环境使用问题及其优化对策实践_重启_48

测试环境使用问题及其优化对策实践_解决方案_49

最终两台服务器都可用,部署的都是新的程序包

测试环境使用问题及其优化对策实践_解决方案_50

(6)日志查看

因为两台实例部署后,调用流量可能会随机打到某一台机器上,查看日志可以在实例列表-日志服务中选择当前所有机器,选择日志路径以及搜索关键字进行查询

测试环境使用问题及其优化对策实践_重启_51

优化后结果:

•一键式部署,一键操作编译+部署操作,不需要随时等待编译部署完成,完成之后咚咚给予提醒

•保障环境稳定性,部署过程中随时有一台应用可用,不会因为频繁部署导致环境不可用形象测试效率

3、问题:没有单独的测试回归环境,和功能测试环境一起使用

解决方案:每个测试应用单独搭建一套回归测试环境,部署master版本,用于上线前的回归测试以及自动化回归测试

测试环境使用问题及其优化对策实践_解决方案_52

优化后结果:

master分支和test分支进行环境隔离,在回归测试和日常需求测试过程中互不影响

测试环境使用问题及其优化对策实践_解决方案_53

4、问题:每次配置更新还需要重新编译

•解决方案:有重启并更新配置的操作,但是不推荐,推荐重新发布,会生成另一个版本号,这样方便回滚,如果用重启并更新配置,虽然生效快,但是新配置不可回滚

测试环境使用问题及其优化对策实践_测试环境_54

5、问题:测试环境的维护困难,不清楚当前测试环境是否可用,哪些环境当前异常

解决方案:自研测试环境监控看板工具,调用行云接口做应用存活探活,实时查看当前不同业务条线测试环境当前状态(5分钟自动刷新,支持手动刷新)

测试环境使用问题及其优化对策实践_测试环境_55

测试环境异常不可用的情况下,会同步发送咚咚消息给测试环境操作人员以及维护人员,相关维护人员接收到消息之后去查看环境异常原因

测试环境使用问题及其优化对策实践_解决方案_56

6、问题:测试环境异常导致每天的自动化执行失败

解决方案:提供封装好的接口,每天会配置好的应用测试分组和机器做探活,如果多次失败后重启应用,待探活成功后触发流水线自动化任务

接口:

/\\ \* 获取所有机器IP * @return */

public List getAllMachine(); /\\ \* 获取机器状态。 \* 该方法用于获取机器的当前状态。 \* @return 机器的状态 / public void machineStatus(); /\\* \* 根据应用名称和组名称获取当前状态 \* @param appName 应用名称 * @param groupName 组名称 * @return 状态值,true表示获取成功,false表示获取失败 */ Boolean getStatusByAppAndGroup(String appName,String groupName);

是否需要做探活的标识:

测试环境使用问题及其优化对策实践_重启_57

四、小结

健全、稳定、体验良好的测试环境,一直是影响产品迭代效率和稳定性的关键环节,也是做好自动化测试的必要条件,我们在经过针对性的环境优化后,对不同的目标完善了测试环境、回归环境、自动化环境、性能测试环境等分别独立的测试环境的的隔离,尽可能了保证了测试环境的稳定性,在保障资源预算的前提下,提高了测试环境的使用效率,并且有针对性的做环境监控和异常预警,使环境维护人员有针对性的去解决环境问题,减少环境维护的人员成本。

作者:京东物流 朱飞

来源:京东云开发者社区 自猿其说 Tech 转载请注明来源

标签:jsf,部署,编译,测试,test,优化,测试环境,对策
From: https://blog.51cto.com/u_15714439/9140592

相关文章

  • 优化CentOS 7.6的HTTP隧道代理网络性能
    在CentOS7.6上,通过HTTP隧道代理优化网络性能是一项复杂且细致的任务。首先,我们要了解HTTP隧道代理的工作原理:通过建立一个安全的隧道,HTTP隧道代理允许用户绕过某些网络限制,提高数据传输的速度和安全性。然而,由于数据需要在中间节点进行转发,因此可能会引入额外的延迟。优化网络性能......
  • 亚马逊鲲鹏自动测评系统:优化店铺运营,提升销售业绩的得力助手
    随着电商竞争日益激烈,卖家们迫切需要能够快速提升店铺流量、排名和销售业绩的工具。近期,亚马逊鲲鹏自动测评系统被认为是一款能够全自动化批量操作的利器。该系统内置防指纹技术,绑定IP后,实现每个账号的独立运行,可快速增加店铺流量,提升排名,从而推动销售业绩的有效工具。使用亚马逊鲲......
  • 亚马逊鲲鹏自动测评系统:优化店铺运营,提升销售业绩的得力助手
    随着电商竞争日益激烈,卖家们迫切需要能够快速提升店铺流量、排名和销售业绩的工具。近期,亚马逊鲲鹏自动测评系统被认为是一款能够全自动化批量操作的利器。该系统内置防指纹技术,绑定IP后,实现每个账号的独立运行,可快速增加店铺流量,提升排名,从而推动销售业绩的有效工具。使用亚马逊鲲......
  • ElasticSearch 性能优化
    提升写入性能使用bulk接口批量写入节省重复创建连接的网络开销通过进行基准测试来找到最佳的批处理数量延长refresh的时间间隔通过延长refresh(刷新)的时间间隔可以降低段合并的频率,段合并十分耗费资源默认的刷新频率为1s,对index修改index.refresh_interval即可立即生效初始......
  • 神经进化算法在社交网络领域的优化与创新
    1.背景介绍社交网络已经成为了现代人们生活中不可或缺的一部分,它们为我们提供了一种快捷、高效的沟通和交流方式。然而,随着社交网络的不断发展和扩张,它们也面临着各种挑战,如信息过载、网络滥用、虚假账户等。因此,在社交网络领域,优化和创新变得至关重要。神经进化算法(NEA)是一种基于......
  • 雅意2.0:打造专为中文优化的300亿参数多语言模型
    前言雅意2.0,作为一款专注于中文语境的开源大型语言模型,其在多语言处理方面的能力尤为突出。该模型不仅具有300亿参数规模的庞大体量,还在多个关键领域取得了显著的技术突破。Huggingface模型下载:https://huggingface.co/wenge-research/AI快站模型免费加速下载:https://aifasthub.com......
  • SpringBoot 接口:响应时间优化9个技巧!
    今天聊聊SpringBoot接口:响应时间优化的9个技巧。在实际开发中,提升接口响应速度是一件挺重要的事,特别是在面临大量用户请求的时候。好了,咱们直接切入正题。本文,已收录于,我的技术网站ddkk.com,有大厂完整面经,工作技术,架构师成长之路,等经验分享在SpringBoot应用中,接口响应时间的优......
  • 优化业务系统运维管理:实现更智能的信息化业务系统监控与决策
        在当今高度信息化的时代,业务管理已成为企业成功的关键因素。为了更好地满足不断变化的市场需求,提高企业运营效率,我们推出了一款全新的业务管理工具——监控易。这款工具将助力企业实现更高效、更智能的业务监控与决策。一、业务系统运维列表:全面掌握业务状态    ......
  • MyBatis批量插入数据优化
    背景介绍我们使用了mybatis-plus框架,并采用其中的saveBatch方法进行批量数据插入。然而,通过深入研究源码,我发现这个方法并没有如我期望的那样高效这是因为最终在执行的时候还是通过for循环一条条执行insert,然后再一批的进行flush,默认批的消息为1000为了找到更优秀的解决方案......
  • day28 基于Loki的日志收集系统-基于Loki特性的场景变现及优化 (9.8-9.9)
    9.8-基于Loki的日志收集系统一、EFKvsLPG架构和组件Loki:Loki是一个开源的水平可扩展日志聚合系统,由Promtail、Loki和Grafana组成。EFK:EFK是一个集成的解决方案,由Elasticsearch、Fluentd和Kibana组成。存储和查询:Loki:Loki使用基于日志流的存储方式,将日志数据存储为可压......