阿里创新自动化测试工具平台--Doom

背景

  信息系统上线后通常会需要迭代升级甚至重构,如何保证被修改后系统原有业务的正确性非常重要。不复杂的业务系统通过一些常规的自动化测试工具加上人工测试可以解决,但对于业务十分复杂的系统,回归测试将变成一项浩大的工程。
  一个实际的例子:阿里巴巴作为一家以电商为核心的集团公司,交易系统和稳定性的重要性不言而喻。整个交易系统在多年的发展过程中,经历了很多业务的上下线,维护的人员也换了一波又一波,几乎没有人能梳理清楚其中的业务和代码。当它不得不面临一次全面升级的时候,其回归测试的困难度难以想象。因为常规的自动化测试工具需要准备测试数据、编写脚本,因此覆盖率不高,因此无法满足需求重构后的回归验证要求。
  doom平台的出现解决了这一难题,它通过复制线上真实流量去做自动化回归,通过它发现了很多重构带来的bug,同时加快交易重构项目的上线进程。同时通过录制流量作为用例来实现日常自动化回归取代传统编写脚本的自动化回归大大提升了回归效率和覆盖率。
  因为其解决方案的通用性,我们把这它拿出来给大家分享,同时也开放了云服务希望能支持到有需要的用户。

平台介绍

什么是doom平台

  doom自动回归平台是一个将一部分线上真实流量复制并用于自动回归测试的平台。 通过创新的自动mock机制不仅支持读接口的回归验证,同时支持了写接口(例如用户下单接口、付款接口)的验证。它最底层借助了java的instrument实现aop因此,目前仅支持java应用的接入使用。其原理图如下:

  它与tcpcopy或者diffy的区别:tcpcopy、diffy是在应用外的网络层实现流量录制和回放的,它们只能实现一些只读页面的验证。doom是在应用内部通过aop切面编程方式实现的流量录制和回放功能,因此可以做到应用内部接口级别的回归验证,当然也支持服务级别或者http级别的回归验证。通过独创的中间件级mock以及内部自定义的mock,可实现写流量的回归验证以及跨环境的回归验证(线上引流到测试环境)。

应用场景

  • 系统重构时,复制真实线上环境流量到被测试环境进行回归,相当于在不影响业务的情况下提前上线检测系统潜在的问题。
  • 可以将录制的流量作为用例管理起来进行日常自动化归回。

优势

  • 低成本:无需编写测试用例,通过流量录制形成丰富的测试用例。
  • 高覆盖:一方面线上大量真实流量确保覆盖率,另一方面支持中间过程的验证,例如发送消息的内容、中间计算过程等等的全对象的对比验证,传统手工编写验证点很难实现。
  • 支持写流量验证:(注:写流量是指可能导致有数据变更的流量)不用担心写流量回放污染应用数据,支持线上引流到测试环境以及写流量的自动化mock。
  • 低应用侵入:通过隔离容器技术、字节码级别的AOP技术、中间件级MOCK避免接入类冲突以及降低接入成本。

如何使用

  doom平台在阿里巴巴内部,特别是一些核心系统得到广泛使用,因此我们决定把这个产品开放出来,以云服务的形式免费提供给大家使用。doom支持 云效 上的应用直接申请使用,也支持任意能访问公网的应用直接申请使用。
平台文档:接入使用指南
平台链接:doom平台

原理

  • 如何实现回归验证?
      对于web应用来说,请求最终都通过发起http请求方式来完成。我们假定生产环境应用会正常的响应用户的请求,通过aop的方式将请求入参及返回结果以及执行过程中的一些快照数据例如访问数据库的入参和返回结果、访问远程服务器的入参及结果保存下来。然后将快照数据发送给测试机器(代码发生变化的机器)完成一次回放过程。通将落库数据、调用后台请求的数据以及返回结果和线上真实请求发生时的数据进行全量对比,发现其中的差异,从而识别被测试系统的问题。针对后台应用来说也是如此,只是后台应用一般都是通过rpc请求实现,这时只要记录rpc入参、rpc返回值以及中间快照数据用于回放即可。

  • 如何保证数据库不被污染?
      mock是单元测试常用手段,用来解决接口未完成或者调不通的情况。将这个特性进行延展,在线上执行真实请求时就把写数据库的请求以及对外服务的访问保存下来,在回放时当执行数据库或者调用后台的服务进行mock,这样回放时不会真正的访问数据库,也不会真正的发起对后台服务的调用,因此会影响业务数据,甚至可以在线下环境进行回放,因为mock数据来源于真实请求,也省去了造数据的麻烦。

  • 如何实现对外系统请求的mock?
      应用会通过各种各样的中间件对外发起rpc请求,可以通过平台配置的中间件隔离来设置,平台客户端会对这些中间件进行aop处理实现自动的mock,不需要人工去配置具体的rpc接口。如果不支持的中间件请联系我们,我们会对其做适配开发。
  • 如何解决回放时程序执行流程可能和线上真实流程不一致?
      在生产环境程序执行时的一些内存数据状态和回放时测试服务器的内存数据状态往往会出现不一致,这些不一致会导致程序的执行流程不一样。例如本机缓存、内存开关、session查询等等。那么要如何解决呢?平台提供了自定义mock机制,将这些会导致不一致的代码片段进行mock。例如将缓存的get方法进行mock,那么如果线上读缓存时有数据,那么回放时直接可以用这些缓存数据进行mock即可,确保了回放的流程和线上真实执行时一致。
  • 如何解决对比时的噪音?
      回放时和录制时必然存在一些差异,例如服务器ip、时间、以及一些随机数等等。通过两种方式去解决:
    • 排除法:平台支持指定字段排除对比,将不需要的字段排除即可。
    • 指定对比法:将关心的业务数据进对比。

系统架构

部署图

  如图上所示,云服务提供配置管理功能,而在用户机房可以通过扩展实现自定义数据存储或者直接使用阿里云oss存储产品来实现用例或者流量的存储。配置之所以集中管理是为了方便平台升级,而支持数据自定义存储则提供给了用户更多的存储选择。
  图中A企业完全使用平台功能,如果平台功能不满足需求也可以像图中企业B一样,基于平台提供的录制、回放等等能力去实现自己的稳定性/回归测试平台。

客户端服务端架构

  上图为客户端服务端的架构图。客户端为接入应用嵌入的一个功能模块,可以负责流量录制、流量回放、中间件mock、中间件隔离、流量对比分析等等功能。服务端提供客户端相关的配置信息,例如要录制哪些流量,录制比例是多少、哪些ip服务器需要被录制等等。客户端的一些状态信息也会发送给服务端方便展示管理。另外只有当发生对比异常时,服务端才会发送异常数据给服务端用于查看分析。
  要实现不同企业的不同中间件mock,客户端需要扩展不同的中间件mock插件来实现。各个插件通过中间件插件管理器去管理,平台支持一些常用的中间件也支持扩展。除了mock外还需要提供了一个中间件隔离机制,例如通过在中间件最底层做一些隔离,避免在mock失败的情况下不会访问到数据库,保证回放时业务数据的安全性,当然如果是在非生产环境进行回放测试也可以避免这个风险。

平台开放

  • 录制数据存储到哪里?
      平台默认将录制数据保存到oss,也支持用户通过扩展实现使用自己的数据存储服务。
  • 能基于doom平台实现自己的用例管理执行平台吗?
      doom平台开放了流量的录制、回放以及对比的api,有需求的用户可以基于这些能力快速搭建一套属于自己自动化回归测试平台。
时间: 2024-09-30 15:37:51

阿里创新自动化测试工具平台--Doom的相关文章

svg-Watin自动化测试工具触发image的click事件

问题描述 Watin自动化测试工具触发image的click事件 最近用watin这个自动化测试工具做系统的功能测试,有一个地方是:watin获取svg的子节点image,并且触发click事件.已经使用过jQuery选择器和eval方式,都未能实现,求大牛帮忙看看.谢谢啦! html: 相关文章 selected-OnItemClickListener与OnItemSelectedListener区别 aspx-Ext.net的ext.button点击事件的触发顺序 如何通过JS代码触发cli

小议阿里云"数加"平台对企业有何帮助?

文章讲的是小议阿里云"数加"平台对企业有何帮助,阿里云发布大数据平台"数加",让DT时代不再只是阿里巴巴鼓吹的一个概念,而是实实在在的落地了!通过数据倒推本质,意味着一个新的时代来临,而这对企业和个人开发者又意味着什么? 1月20日,阿里云在2016云栖大会上海峰会上发布了一站式大数据平台"数加",工欲善其事必先利其器,首批亮相的就有多达20款产品,覆盖数据采集.计算引擎.数据加工.数据分析.机器学习.数据应用等数据生产全链条. 阿里云大数据事业

Serverless理念的弄潮儿—— 阿里云数加平台助力大数据普惠

免费开通大数据服务:https://www.aliyun.com/product/odps 阿里云坚持将计算能力变成像水电煤一样的公共服务,提供给大众,而非单单而不是卖服务器给客户,这跟今日流行的Serverless 架构理念是一致的.Serverless 理念在数加平台得到了很好的体现,数加平台今天已经可以提供很多业务场景化的计算服务,比如推荐引擎,规则引擎,以及各种人工智能的服务,助力企业在DT时代更敏捷.更智能.更具洞察力.在本文中,班输从数据平台简介.大数据应用特点.数加平台Server

阿里YunOS推开放平台 提高开发者体验

 本文讲的是阿里YunOS推开放平台 提高开发者体验[IT168 云计算]10月15日,在由杭州市政府和阿里巴巴集团联合主办的"2015杭州·云栖大会"上,阿里巴巴集团旗下YunOS推出面向广大开发者和服务提供商的开放平台,同时发布最新的YunOS航海版light和全新的YunOS for Wear两大系统产品.YunOS开放平台的推出,让"人人都是开发者"成为可能,并进一步完善了YunOS的生态布局. 主题分享:YunOS开放平台让创业创新更加简单 在YunOS分

阿里云移动测试平台MQC移动测试沙龙第3期【北京站】

阿里云移动测试平台MQC移动测试沙龙 第3期[北京站] 11月25日,阿里云移动测试平台MQC将在阿里北京大本营举办移动测试第3期线下沙龙活动.本次沙龙由MQC发起,联合美团点评技术团队合办,旨在分享阿里云和美团内部移动测试技术干货.欢迎大家踊跃报名! 活动日期: 2017年11月25日 星期六 14:00-17:30 活动地点: 阿里中心.望京A座 5F-14岳麓书院 北京市朝阳区望京东园四区绿地中心 阿里中心.望京A座5层 活动主题: <详解阿里云测试专有云输出形态>.<移动时代后台

手机UI自动化测试工具NativeDriver VS Robotium

最近在调研手机端的自动化测试工具,之前看到了Robotium这个工具也写了几个用例,后面发现了NativeDriver工具,也写了几个 例子,下面主要从官方介绍以及写例子的过程中发现的一些问题对比一下两种工具的优缺点吧,也是刚开始做自动化测试不久,暂时还没有了解工具底层的一些东 西,以下仅是自己个人观点,如果有不全面的欢迎大家评论补充讨论.现在打算使用NativeDriver工具来进行手机端UI自动测试. NativeDriver: 官方地址:http://code.google.com/p/n

《手机测试Robotium实战教程》—第1章 1.3节移动端自动化测试工具的选择

1.3 移动端自动化测试工具的选择 之所以需要选择,是因为可选项太多了,不同的平台,会有很多不同的自动化测试工具供选择,其中既有商业性的收费工具,也有开源免费的自动化测试工具. 这本书的主题Robotium就是其中一种开源的自动化测试框架,在正式展开前,先看看当下还有哪些在Android测试方面比较常用的测试框架可供选择. 1.3.1 Appium Appium也是一种自动化测试框架,可以用来测试natvie.hybrid和mobile web APP,Appium最吸引人的一点是,它既支持An

基于阿里云数加平台的大数据Serverless实践

本文PPT来自班输于10月16日在2016年杭州云栖大会上发表的<基于阿里云数加平台的大数据Serverless实践>. 数加是阿里云大数据的品牌名,其旗下包含一系列的大数据产品及服务,可以为用户提供一站式的数据开发.分析.应用平台.数加提供的服务包括智能语音/图象/视频分析服务.企业级数据仓库服务,地理信息可视化服务,风险预警与管控服务等等.其在基础平台的大数据产品包括数据开发.机器学习.大数据计算.分析型数据库.流计算,在数据应用层的产品包括数据可视化DataV.推荐引擎.人脸识别等等.

阿里云上线镜像平台 小白用户轻松上云

本文讲的是阿里云上线镜像平台 小白用户轻松上云,5月6日,阿里云计算镜像平台正式上线,面向用户提供一键式的云服务器配置服务,帮助"小白用户"轻松上云.该平台将大大降低用户入云门槛,提供云服务器(ECS)的易用性. 在阿里云镜像平台上,服务商可以向用户提供基于云计算产品的工具.镜像和运维服务.镜像是指云服务器(ECS)实例可选择的运行环境模板,一般包括操作系统和预装的软件.镜像能够解决"小白用户"的技术问题,节省繁琐的配置时间,轻松上云. 对许多云计算用户而言,一旦系