服务阿里 9 个APP|揭秘新奥创升级的质量演变

简介: 新奥创技术体系,是手机淘宝端搭载着星环中台的整个商业化研发体系,孵化出的面对无线电商领域的技术体系。过去一年在手淘完成了下单、详情、购物车三大业务域的改造,接下来还会在订单、手淘导购等领域进行技术升级。目前新奥创已经接入阿里内的9个 App,逐步成为阿里集团无线领域电商系的技术解决方案。本文主要围绕新奥创技术体系的升级,剖析架构升级对测试保障带来的新的转变,也是新的机遇。

image.png
作者|何霜霜(谢萱)
出品|阿里巴巴新零售淘系技术部

背景

新奥创技术体系,是手机淘宝端搭载着星环中台的整个商业化研发体系,孵化出的面对无线电商领域的技术体系。过去一年在手淘完成了下单、详情、购物车三大业务域的改造,接下来还会在订单、手淘导购等领域进行技术升级。目前新奥创已经接入阿里内的9个 App,逐步成为阿里集团无线领域电商系的技术解决方案。

本文主要围绕新奥创技术体系的升级,剖析架构升级对测试保障带来的新的转变,也是新的机遇。

新奥创的升级

新奥创是在基于组件化协议产品的基础上诞生的,并且结合端侧动态化技术,整
体架构上升级了5大能力:

▐ 端侧动态化能力引入(DinamicX)

新奥创在解决业务端侧发版和客户端单点资源问题上,引入了DinamicX动态化能力。DinamicX是一套纯native的解决方案,专注于UI模板渲染,优势是高性能、高可用。它重点解决了奥创上组件native化随版本发布的限制,且同时支持android/ios/H5/小程序的跨终端的动态化方案,为多端业务体验一致性打下了基础。

▐ 事件驱动的能力加持

DinamicX 主要解决还是动态化UI渲染的能力,它提供触发事件的能力,方便业务方做定向的事件操作定制。在新奥创中,由新奥创客户端容器将用户端上不同操作的逻辑抽象成了一个个通用事件,同时定义页面操作的热点区域,将事件的配置放到了新奥创平台上,服务端在组件维度下发事件,当事件对应的热点区域发生操作时,客户端调用封装的事件逻辑。通过这个抽象,服务端可以控制某些组件是否需要响应用户操作【比如某些业务方希望用户点击商品时不跳转,可以通过不下发事件来完成】。

▐ 新通信协议的升级

新奥创在通信协议上增加了视图协议,协议中记录了组件具体的模板信息(模板类型,版本,以及资源链接),模板支持DinamicX模板,同时也支持weex和H5。有了视图协议,多端投放(PC/android/IOS/H5)的需求,只需要新奥创平台一次配置搭建,不同端可以下发不同的组件模板信息,提高了投放效率。

▐ 业务的隔离与热发

以上三个能力的升级,让端侧业务有了共建的技术能力,但同时也需要有一定的限制,例如A业务不能改B业务的组件,业务不能改平台的配置,这些有助于减少相互之间的依赖和感知,最大程度的保证整个体系的稳定可靠。所以新奥创与星环深度结合,提供了基于业务身份的页面、组件、规则隔离能力,在这个基础上,平台提供了各业务自助式的并行开发的能力,保障各业务之间互相不干扰;同时与星环共同实现了组件规则粒度的热发能力,提供7*24小时的实时发布能力。

▐ 统一端侧业务容器保障

新奥创的页面动态化方案的实施,依赖客户端业务容器的保障。端侧容器在整体设计上保持架构分层,业务隔离,业务逻辑变更不会影响全局环境,为业务共建和解放端侧资源提供了能力。

统一的端侧容器带来更多的好处在于能在端侧提供统一的异常处理能力,包括必要的端上监控能力,这在新奥创放量过程中起到了关键,非常平滑的过渡了奥创到新奥创的升级。

通过前面5个部分的升级,让新奥创成为具备开放/隔离性,实时性以及全域性的端到端动态化的架构特性。详细的新奥创了解,参看这篇《新奥创:多APP场景端到端的技术体系探索与突破》

测试的影响

好的架构升级,势必会带来新的测试方案的升级。新奥创的升级上,从以上5个架构优势上剖析,俨然已经形成了具备开放/隔离,实时性,以及全域性的页面动态化方案,随之新奥创架构上的业务生产模式也发生了变革。

举例一个业务需求的落地:需要在XX端/XX端/XX端实现一个新业务下单。

改造前的生产模式:迭代各端上线,依赖多角色协同,全端上线跨度好几周;同样的模式需要在其他电商端重复被执行。

image.png

改造后的生产模式:赋能多角色业务同时开展,架构隔离业务避免代码相互影响。

image.png

再进一步提升:多电商领域APP升级新奥创,需求同步跨端产品生效。

image.png

让需求跑的更快一点:新奥创端侧容器对业务基础组件扩展和统一渲染体验支持,以及端侧不同操作逻辑进一步抽象通用事件,让组件更加灵活,业务复用率更高。

image.png

如此,新奥创架构让需求跑的更快,参与的开发人数越少,相应的需求交付时间则更多的压在了测试端。如何拆解这个难题,站在新奥创测试角度,我们的重点有两个:

**1、维持新奥创整体架构的稳定性
2、需要提升业务测试效率**

应对新奥创整体架构的稳定性,我们产出了两个质量保障方案,DinamicX动态化保障和新奥创体系保障:

image.png

DinamicX 方面整体的解法主要在三个方面:
通过持续集成的规范、场景和性能测试能力的建设保障基础质量。

通过改进研发适配&测试流程,使得业务方流程提效。

建立线上数据采集-圈选的方式构建模型,将海量数据转变为测试度量指标,减轻业务回归的压力。

DinamicX 提供的是UI模板渲染能力,因此在利用单测/场景测试/性能基线等保障迭代基础质量之外,我们在组件模板的发布流程上,提供了真机自动化适配的能力,并结合组件的协议,自动转化生成正常&异常的测试用例,将边界场景和真机适配一键自动化执行。

以上,我们还是在保障自有能力的稳定性以及发布新组件流程上的提效,但基于底层SDK的能力架构升级,势必会存在一些不兼容或业务使用上可能存在的业务问题,因此即便我们有了完备的卡口保障方案,但每次的SDK升级还是无法完全评估对业务的影响,随着DinamicX的业务使用扩展,这个影响会成几何倍数成长。常规的保障方式需要每次迭代时由业务介入来保障业务自身的影响,但这势必会拖慢整个研发迭代周期,也对本身DinamicX带来的优势变成了不稳定劣势。

我们开始思考能不能有一种轻量的方式来辅助评估SDK改动带来的业务影响,规避每次SDK迭代升级的业务渲染异常问题。我们可以复用组件自动化适配和校验的能力,但同时我们还需要拿到业务方的使用数据,技术上我们将各业务方组件渲染上屏时进行数据埋点,埋点的时效性高,且正确性可以保障,它们能随着小时表更新,是一个巨大的数据宝藏。

通过这种方式,我们大大减少了组件平台上冗余无效数据(测试/下线组件等)的干扰,使回归更加精准。同时,不同的圈选条件可以满足我们不同的回归需求,自动化的执行和截图比对像素级校验结果的方式也解放了人力投入,增强了结果的准确性。

image.png

DinamicX 动态化组件保障解决的是动态化的稳定性,新奥创体系保障则注重在新奥创链路各环节中提供相应的保障措施。

image.png

测试体系化的建立,对业务最大的辅助是在底层 SDK 和平台升级时,在每个环节做好测试覆盖,规避业务升级影响,减少协同业务侧测试的业务回归投入工作量。

站在业务测试角度,更关心新奥创架构如何提升业务保障效率,以下会分3个维度重点讲解新奥创架构带来的能力和质量演变带来的效益。

▐ 降低客户端保障的难度&风险

抛开平台稳定性的部分,对业务测试来说,新奥创架构下的业务测试,也发生了变化,这部分更多聚集在客户端测试侧。新奥创升级之后,客户端上的逻辑变成以不同的组件渲染&交互来表达,在新奥创统一端侧容器之上,更少的端测代码改动,大大降低了客户端保障的难度&风险,让服务端测试和客户端测试的角色归一成为可能。

image.png

▐ 业务的可自动化能力加强

新奥创架构的升级,在客户端角度上以业务数据组件渲染&交互替代了复杂的客户端逻辑,也让我们有了新的视角去解决客户端UI自动化的问题。客户端方面想要提高测试效率,自然免不了端侧UI自动化的方式。传统端侧UI自动化,都是利用自动化框架,应对每个业务UI界面编写测试脚本,免不了因为UI界面的变更带来的重复投入,以及因为UI元素的不稳定导致脚本执行的不稳定,整体在端侧UI上投入产出不成正比,这也加剧了客户端侧测试验证的人工投入。

站在新奥创的架构上,参考新奥创架构的数据驱动页面生成的思路,新奥创测试的UI架构也是有一份统一的自动化通信协议,来驱动执行客户端的渲染、操作。新奥创在布局+数据+行为上均有语义描述,实现了从整体页面布局到组件元素渲染,再到组件触发区域事件响应,异步参数回收一体化的操作链路闭环,且新奥创对于组件元素除了关联组件唯一标识,组件模板标识,组件渲染字段列表之外,还添加了事件的描述,用于描述当前组件的异步触发区域以及事件描述的元信息。

端侧UI自动化基于新奥创组件及事件,同样也能产生一份自动化协议,进行端侧UI的自动化语义驱动,并且在UI层使用新奥创组件识别的方式相较于OCR图像或关键词识别更准确及高效。而对于非新奥创语义内的页面元素,全端质量通过自定义语义、OCR识别、定制识别等多种方式,有效补充了UI自动化引擎的可执行范围。

以上便构成了新奥创端侧UI具备的特性:

  • 无需UI脚本能力,即可完成端侧业务交易UI定制,持续集成用户无需关心端侧驱动实现,平台根据业务数据自动生成一套自动化协议,交给端侧自动化引擎实现多端自动化
  • 无感录制,支持组件/业务的线上数据采集,线下回放通过流量采集补全数据,进行全端质量用例自动收录
  • 支持跨端,多APP的交易场景覆盖一份自动化协议、一条自动化用例可同时支持多端执行自动化回放。
  • 端侧容器化检测能力针对仅UI图像覆盖不全的场景,补充端侧容器化数据的检测能力

image.png

▐ 多样性保障能力的延伸

在端侧UI自动化的基础上,我们有更多的能力与和目前优秀的测试产品合作,来扩展端侧多样性保障的能力。

image.png

质量平台的 UI 自动化目前能力主要在基础交易链路场景,与域内效能产品合作,提前对新业务/大促场景进行测试验证,从19年双11开始,成为大促质量保障的主要测试验证能力。

结束语

新奥创已接入/正在接入 9 个 app :手淘,手猫,躺平,AE ,盒马,口碑,大麦、特价版,飞猪完成了详情、购物车、下单三大基础业务域的改造,接下来还会在订单、手淘导购等领域进行技术升级。

应对新的生产关系和新的业务特性,新奥创架构升级还在持续迭代中,希望能服务更多的业务场景,相应的质量保障也在逐步完善中,是新奥创升级的基石,已经是日常新奥创业务迭代发布的保障手段,也在辅助新奥创架构下的app升级。

相信不久的未来,新奥创能从帮助业务实现研发效率提升,升级成为帮助业务实现业务整体交付效率的提升。

招招招招人啦!

淘系技术质量部电商丰富的场景,广阔的平台等你一起来挑战!在这里你可以接触到全链路压测、海量的数据处理、人工智能推荐算法等领域;可以涉猎业界最前沿的测试技术、定期而丰富的技术分享;还可以与层层选拔的各路优秀同学共同战斗,共同成长!
欢迎测试开发工程师/专家加入我们,让科技引领面向未来的商业创新和进步。
简历投递至📮:xiexuan@taobao.com

关注「淘系技术」微信公众号,一个有温度有内容的技术社区~

公众号二维码.jpg

相关文章
|
2月前
|
安全 前端开发 API
【Azure 应用服务】Azure Web App 服务默认支持一些 Weak TLS Ciphers Suite,是否有办法自定义修改呢?
【Azure 应用服务】Azure Web App 服务默认支持一些 Weak TLS Ciphers Suite,是否有办法自定义修改呢?
|
2月前
|
运维 Kubernetes 容器
【Azure K8S】演示修复因AKS密钥过期而导致创建服务不成功的问题(The provided client secret keys for app ****** are expired)
【Azure K8S】演示修复因AKS密钥过期而导致创建服务不成功的问题(The provided client secret keys for app ****** are expired)
【Azure K8S】演示修复因AKS密钥过期而导致创建服务不成功的问题(The provided client secret keys for app ****** are expired)
|
2月前
|
开发者
【Azure 应用服务】如果发现当前使用的订阅无法在China North 3 区中创建App Service服务,如何来解决这个问题呢?
【Azure 应用服务】如果发现当前使用的订阅无法在China North 3 区中创建App Service服务,如何来解决这个问题呢?
|
2月前
|
Java Linux Windows
【Azure 应用服务】App Service / Function App 修改系统时区为中国时区的办法(Azure中所有服务的默认时间都为UTC时间,转换为北京时间需要+8小时)
【Azure 应用服务】App Service / Function App 修改系统时区为中国时区的办法(Azure中所有服务的默认时间都为UTC时间,转换为北京时间需要+8小时)
|
2月前
|
开发框架 .NET Linux
【Azure 应用服务】 部署到App Service for Linux 服务的Docker 镜像,如何配置监听端口呢?
【Azure 应用服务】 部署到App Service for Linux 服务的Docker 镜像,如何配置监听端口呢?
|
2月前
|
API
【Azure 应用服务】在App Service中调用外部服务API时需要携带客户端证书,而多次调用的情况下会出现WindowsCryptographicException Keyset does not exist异常
【Azure 应用服务】在App Service中调用外部服务API时需要携带客户端证书,而多次调用的情况下会出现WindowsCryptographicException Keyset does not exist异常
|
2月前
【Azure 应用服务】可以在app service里建SFTP服务吗?
【Azure 应用服务】可以在app service里建SFTP服务吗?
|
2月前
|
关系型数据库 MySQL Java
【Azure 应用服务】App Service 无法连接到Azure MySQL服务,报错:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
【Azure 应用服务】App Service 无法连接到Azure MySQL服务,报错:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
142 0
|
2月前
|
存储 安全 网络安全
【Azure 环境】使用Azure中的App Service部署Web应用,以Windows为主机系统是否可以启动防病毒,防恶意软件服务呢(Microsoft Antimalware)?
【Azure 环境】使用Azure中的App Service部署Web应用,以Windows为主机系统是否可以启动防病毒,防恶意软件服务呢(Microsoft Antimalware)?
|
2月前
|
Shell
【Azure 应用服务】App Service服务无法启动,打开Kudu站点,App Service Editor 页面均抛出:The service is unavailable
【Azure 应用服务】App Service服务无法启动,打开Kudu站点,App Service Editor 页面均抛出:The service is unavailable