抖音技术能力大揭密!钜惠大礼、深度体验,尽在火山引擎增长沙龙,就等你来! 立即报名>> 了解详情
写点什么

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

2020 年 2 月 15 日

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

一、前言

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


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%+


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


作者介绍


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


本文转载自公众号携程技术(ID:ctriptech)。


原文链接


https://mp.weixin.qq.com/s/vsSY-p2QIolgElAalDOQuA


2020 年 2 月 15 日 17:45285

评论

发布
暂无评论
发现更多内容

还有高仿项目吗

GitHub指北

远程协助软件向日葵分析

lenka

3月日更

好想做个女孩子,编程第一步,女装身上穿

GitHub指北

正则表达式的使用与匹配原理解析

Guanngxu

正则表达式

控制台的安装与使用 | 联盟链开发(二)

李大狗

联盟链 FISCO BCOS 狗哥

Java8中的 Stream 那么彪悍,你知道它的原理是什么吗?

Java小咖秀

Java stream java8 面试题 开发

避免失控:谈谈人与人交往中的恶

boshi

职场 心理 七日更

一些人的某些目标

sadhu

生涯规划 职业规划 个人提升

MongoDB中的null类型查询

Kylin

mongodb 3月日更 21天挑战 数据库查询 NoSql查询语法

Seldon使用(一):简介及入门

托内多

tensorflow kubeflow Kubernetes PyTorch seldon

领域驱动设计101 - 通用语言

luojiahu

领域驱动设计 DDD

大数据中流量分析常见分类

大数据技术指南

大数据 28天写作 3月日更

探索 Snabbdom 模块系统原理

pingan8787

JavaScript Vue Web Vue 3 Snabbdom

架构师训练营 4 期 第12周

引花眠

架构师训练营 4 期

分享18个常用的ECMAScript 6代码片段

devpoint

reduce URL参数解析 Form表单数据解析

新年上班第一天生产环境分布式文件系统崩了!!

冰河

高可用 分布式存储 fastdfs 可扩展 无限扩容

JVM - 类加载器

insight

3月日更

在离开新手村后,你该如何的走出呢?打造属于你的快与慢的能力。

叶小鍵

OpenCV 写图像也有讲究,取经之路第 5 天

梦想橡皮擦

28天写作 3月日更

《码农歌》

臧萌

加班

架构 idea

型火🔥

架构 原则 架构之道

Vue3源码 | createApp都干了什么?

梁龙先森

源码分析 前端 Vue3

(继续码字) 因果有顺序吗?是一种必要充分条件吗?

mtfelix

28天写作 bewriting 胡思乱想

【LeetCode】矩阵置零Java题解

HQ数字卡

算法 LeetCode 28天写作 3月日更

FISCO BCOS 开发环境节点搭建 | 联盟链开发(一)

李大狗

区块链 联盟链 FISCO BCOS 狗哥

科技强国的使命召唤中,百度AI埋下三根未来“引线”

脑极体

前端开发:Vue启动项目报错ValidationError:webpack Dev Server Invalid Options

三掌柜

vue.js 前端 3月日更

Python PyAutoGUI 库

HoneyMoose

uni-app跨端开发H5、小程序、IOS、Android(四):了解uni-app项目结构

黑马腾云

html5 微信小程序 uni-app android iOS Developer

Spark详细剖析

五分钟学大数据

大数据 spark 28天写作 3月日更

工作多年后我更明白了UT的重要性

你呀不牛

Study Go: From Zero to Hero

Study Go: From Zero to Hero

节省55%测试时间,携程酒店比对平台介绍-InfoQ