前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >干货 | 节省55%测试时间,携程酒店比对平台介绍

干货 | 节省55%测试时间,携程酒店比对平台介绍

作者头像
携程技术
发布2019-05-15 09:36:21
6350
发布2019-05-15 09:36:21
举报
文章被收录于专栏:携程技术携程技术

作者简介

黄文杰,携程酒店研发部高级测试经理,主要从事测试框架和平台的研发,现在负责自动化与工具平台,热衷于研究技术提升测试工作效率。

一、前言

当初我们为什么想到要开发比对平台,主要遇到以下几个问题:

1)很多.net应用转java返回的报文相差不大;

2)采用常规的方法测试测试量太大,测试时间太长;

3)可以补充多的测试场景;

4)自动化测试的补充;

5)实现比对监控;

为此我们根据以上测试问题设计开发了接口比对平台。在使用过程中极大的提高了测试效率,在此基础上根据业务人员需求相继开发了数据库比对模块,埋点比对模块,缓存比对模块。

本文将从各模块如何实现比对以及各个模块相互关系的方面,分享携程酒店比对平台,希望能给遇到同样问题的小伙伴带来一些启发和借鉴。

二、整体介绍

1、比对流程图

2、相关技术

比对中我们主要采用流的报文解析方式,以及分布式多线程运行。

通过该方式可以解决以前比对中以下一些瓶颈:

1)不能忽略节点比对;

2)不能忽略节点排序比对;

3)不能选择节点比对;

4)不能比对大于10M的报文;

5)比对速度比较慢;

3、模块关系图

比对平台由四个模块组成:接口比对、数据库比对、埋点比对,缓存比对。

根据用户配置,接口比对的同时可以生成数据库比对用例,当接口用例集比对完成接下来就运行数据库比对用例集,极大提高了测试效率,当然数据库比对也可以独立使用。

根据用户配置,接口比对的同时也可以生成埋点比对用例,当接口用例集比对完成接下来就运行埋点比对用例集,埋点比对也可以独立使用。

缓存比对模块目前是单独使用的,主要比对数据库数据和缓存数据,增,删,改,查等操作。

三、模块介绍

1、接口比对

比对原理:同一个请求报文,访问二个部署在不同机器的不同版本服务,比较二个服务的返回报文。

比对用例数据来源:

  • 手动配置
  • ES保留
  • ES实时拉取
  • 数据库拉取

用例集可以配置以下规则对报文处理后进行比较:

  • 忽略大小写:节点值比对时,忽略配置节点值的大小写
  • 忽略节点排序:对报文中list需要忽略排序的,可以配置节点忽略排序,list比较的时候我们会进行排序处理然后进行报文比对
  • 忽略节点:忽略配置的节点(以及所有子节点)的比较
  • 忽略属性:忽略配置的节点中属性的比较
  • 数值比较:将配置节点值转化为数值进行比较
  • 属性数值比较:将配置的属性值转化为数值进行比较
  • 白名单:只比较配置了白名单的节点(以及所有子节点)
  • 节点替换:将返回报文的节名称进行替换

ES用例集详情页配置点

  • 获取用例环境
  • 拉取用例数
  • ES请求地址
  • ES查询语句

DB用例集详情页配置点

  • DB名称
  • 拉取用例个数
  • 数据库服务地址
  • SQL查询语句

用例详情页面也可以选择手动用例或者新加手动用例进入用例集。

比对运行方式

  • CI自动运行(和自动化体系打通,服务发布后自动运行)
  • CI手动运行
  • 手动运行场景用例集
  • 定时器运行(可实现比对监控)
  • 单用例手动运行

执行方式

  • 分布式
  • 多线程

运行结果查看页

  • 根据接口,运行状态筛选运行用例
  • 根据用例差异节点统计个数筛选运行用例
  • 差异信息展示节点值不同的列表
  • 比对日志展示返回比对报文
  • 请求报文展示当时请求报文信息
  • 可以重新运行失败用例
  • 可以下载失败用例报文日志

2、数据库比对

比对原理:二个相同类型订单在数据库中各个需要比较的字段进行比较。

比对用例数据来源:

  • 手动配置
  • 接口比对生成

用例集配置点

  • 比较的库表
  • 忽略比较的库表字段(可不填)
  • 需要比较的库表字段(可不填)

比对运行方式

  • 手动执行
  • 接口比对完成触发数据库比较执行

执行方式

  • 分布式
  • 多线程

运行结果查看页

  • 根据表比较不同个数展示筛选运行用例
  • 差异信息展示用例表字段具体比较不同详细信息

3、埋点比对

比对原理:接口比对生成的埋点用例,根据埋点key从ES中获取埋点信息进行报文比对。

比对用例数据来源:

  • 接口比对生成

用例集配置点

  • 应用ID
  • 公共规则(可以不填)

比对运行方式

  • 接口比对完成触发埋点比较执行

执行方式

  • 分布式
  • 多线程

运行结果查看页

  • 根据用例差异节点统计个数筛选运行用例
  • 差异信息展示节点值不同的列表
  • 比对日志展示返回比对报文
  • 可以重新运行失败用例

4、缓存比对

比对原理:数据库查询的数据和缓存中数据进行比较。

比对用例数据来源:

  • 手动配置

用例配置点:

  • 查询SQL
  • 缓存Key
  • 比较的字段
  • 等等(和具体业务相关就不具体描述)

比对运行方式

  • 定时运行
  • 手动运行

运行结果查看页

  • 具体错误信息展示弹出层中

四、总结

目前比对平台已稳定运行一年多:

  • 用例基本不需要维护,每次拉最新(除手动用例)
  • 用例基本都是ES,DB实时拉取不需要编写(除手动用例)
  • 场景配置简单,基本不需要学习成本
  • 失败用例自动归类降低分析成本
  • 用户接入简单方便
  • 比对测试丰富了测试场景,构成自动化测试体系中重要一环
  • 1000个用例平均4分钟内运行完成
  • 目前Case量50万+
  • 到目前发现BUG数1000+
  • 节省测试时间55%+

为了更好的满足用户需求,仍在持续迭代中。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 携程技术中心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、整体介绍
  • 三、模块介绍
  • 四、总结
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档