作者简介
黄文杰,携程酒店研发部高级测试经理,主要从事测试框架和平台的研发,现在负责自动化与工具平台,热衷于研究技术提升测试工作效率。
当初我们为什么想到要开发比对平台,主要遇到以下几个问题:
1)很多.net应用转java返回的报文相差不大;
2)采用常规的方法测试测试量太大,测试时间太长;
3)可以补充多的测试场景;
4)自动化测试的补充;
5)实现比对监控;
为此我们根据以上测试问题设计开发了接口比对平台。在使用过程中极大的提高了测试效率,在此基础上根据业务人员需求相继开发了数据库比对模块,埋点比对模块,缓存比对模块。
本文将从各模块如何实现比对以及各个模块相互关系的方面,分享携程酒店比对平台,希望能给遇到同样问题的小伙伴带来一些启发和借鉴。
1、比对流程图
2、相关技术
比对中我们主要采用流的报文解析方式,以及分布式多线程运行。
通过该方式可以解决以前比对中以下一些瓶颈:
1)不能忽略节点比对;
2)不能忽略节点排序比对;
3)不能选择节点比对;
4)不能比对大于10M的报文;
5)比对速度比较慢;
3、模块关系图
比对平台由四个模块组成:接口比对、数据库比对、埋点比对,缓存比对。
根据用户配置,接口比对的同时可以生成数据库比对用例,当接口用例集比对完成接下来就运行数据库比对用例集,极大提高了测试效率,当然数据库比对也可以独立使用。
根据用户配置,接口比对的同时也可以生成埋点比对用例,当接口用例集比对完成接下来就运行埋点比对用例集,埋点比对也可以独立使用。
缓存比对模块目前是单独使用的,主要比对数据库数据和缓存数据,增,删,改,查等操作。
1、接口比对
比对原理:同一个请求报文,访问二个部署在不同机器的不同版本服务,比较二个服务的返回报文。
比对用例数据来源:
用例集可以配置以下规则对报文处理后进行比较:
ES用例集详情页配置点
DB用例集详情页配置点
用例详情页面也可以选择手动用例或者新加手动用例进入用例集。
比对运行方式
执行方式
运行结果查看页
2、数据库比对
比对原理:二个相同类型订单在数据库中各个需要比较的字段进行比较。
比对用例数据来源:
用例集配置点
比对运行方式
执行方式
运行结果查看页
3、埋点比对
比对原理:接口比对生成的埋点用例,根据埋点key从ES中获取埋点信息进行报文比对。
比对用例数据来源:
用例集配置点
比对运行方式
执行方式
运行结果查看页
4、缓存比对
比对原理:数据库查询的数据和缓存中数据进行比较。
比对用例数据来源:
用例配置点:
比对运行方式
运行结果查看页
目前比对平台已稳定运行一年多:
为了更好的满足用户需求,仍在持续迭代中。