随着业务的增长,系统的高频率迭代,质量保障工作迫切需要引入更加科学高效的测试方法来助力业务高质量的交付。长城项目一期测试中,全渠道质量团队引入技术平台部R2技术,极大的提升了项目交付的质量。因此,本文将重点介绍全渠道质量团队是如何利用R2来保障业务质量的。

一、为什么引入R2?

全渠道长城项目是将全渠道现有交易能力下沉至交易中台,在技术系统层面实现了线上线下系统深度一体化,为零售的全渠道技术(人通、货通、场通、数据通)奠定了基石,贯穿从全渠道门店、商品、采购、促销、优惠券、通用下单、支付到售后的整个订单生命周期。项目涉及改动的应用多达27+,接口300+,业务范围极广。如果完全依赖传统的人工测试,那么在有限的时间内,不仅需要投入大量人力,同时也很难保证每次迭代回归覆盖了所有业务场景,最终也会影响项目交付的质量。

因此,为了更加全面的有效的覆盖线上的所有业务场景,全渠道质量团队调研了适用于长城项目改造前后数据对比的平台工具,最后在多种工具中选择了技术平台部的R2工具。R2的全称是Record和Replay,即录制和回放。测试同事与R2团队沟通试用后,发现它是一款非常适合于大型项目大量数据对比的辅助测试工具。另外,R2的接入也非常简单,仅需要在应用中接入所要求的pfinder版本,R2就可以找到测试的应用,并进行辅助测试。通过录制线上真实的流量,回放至线上或者测试环境中,不仅可以帮助测试完善业务测试用例,同时通过mock 上游jsf接口、mysql数据库、jimdb缓存的方式,可以屏蔽外部对于待测代码的影响,只关注于系统内部的代码改动。

基于以上R2的定位和特点,R2完全可以助力系统的技改类测试和回归测试。本文所介绍的长城项目属于技改类测试。

二、R2如何赋能全渠道生态业务测试?

首先,对相关接口进行线上流量的录制。然后,异步回放到待测应用中。最后,根据接口在线上和待测应用的diff结果以及录制的相关请求,综合分析和评估系统是否达到了上线标准。以长城项目促销业务为例,介绍如下。

2.1 录制和回放

由于长城项目的促销业务对用例的实时性要求高,因此采用实时DIFF助力回归测试。实时DIFF和离线DIFF的主要区别是:离线是先录制好线上流量,暂时不回放,等需要回放时再回放。而实时是录制完成后立刻开始异步回放,从而减少时效性对测试结果的影响。实时DIFF对应的录制和回放任务需要注意以下三点:

任务设置:设置任务名称,选择回放环境,选择被测试应用。如图2.1左上角所示。

链路设置:首先需要选择要实时DIFF的接口,每个接口分别开启接口回放和选择要回放的接口别名。注意:该别名是后续录制完流量要进行接口再次请求的别名。 然后设置接口响应相关的规则。其中,接口影响对比规则有3种,常用的是第一种和第二种,第三种需要自己写对比脚本。请求对比规则的equals method指进行整个方法的对比,会对比方法内的所有字段。可视化配置指需要设置忽略的字段,如果响应结果里有list类型则需要设置list内字段的排序,以保证数据比对的准确性。图2.1中展示了部分示例。

图2.1

应用设置:指选择录制的机器,后续会将这些机器上录制的流量异步回放到待测应用中。如图2.1中右下角所示,所选择的机器即为机器对应的IP。

2.2 结果分析

实时DIFF任务回放完成后,点击结果可以看到本次任务所录制的请求,及产生DIFF的请求有多少。如果有DIFF的任务,则可以通过对比结果查看具体是哪个方法的请求结果不一样。如图2.2所示。

图2.2

以促销的一个接口实时DIFF结果为例。图2.3和2.4分别是查询某个秒杀场次下对应sku的接口请求参数和响应结果,其中图2.3中接口入参主要包括门店id,场次和租户,响应结果中每个sku都包含该sku对应的促销id,促销价和限购信息,其中boundNumber表示活动限购数,surplusRepertory表示活动库存。

图2.3

图2.4左侧为当前的请求结果,右侧为历史录制的结果。可以发现左右两个结果中的同一个sku的同一个促销surplusRepertory对应的值不一样。对此,分析造成不同的原因如下:

(1)首先考虑到异步回放也会存在一定的时间差,所以实时查询的剩余库存可能不一致。但是历史版本里对应剩余库存是0,并且历史版本是线上最先进行请求的,这个请求是早于左侧的请求的,如果是时间差的原因,则只会出现左侧剩余库存小于右侧的,所以diff的原因不是时间差导致的。

(2)从DIFF结果来看,问题为待测应用查询的剩余库存不同。通过分析发现,左侧每一个sku对应的剩余库存都是等于活动库存的,有订单产生剩余库存也没有做相应的变化。然后,通过相同场景的模拟定位发现待测应用对于设置了活动库存的场景,没有进行活动剩余库存动态变更,这样就会造成sku超卖的情况,影响业务运营。

图2.4

三、R2赋能全渠道的收益如何?

3.1 R2在全渠道的接入和使用情况

全渠道从2021.12开始接入R2,在R2团队的指导下,1天内快速完成了27个核心应用和320个接口的接入,目前接入约79+个应用。长城项目在2021年12月份上线以后到2022年2月正式开始切流期间, 使用R2进行实时DIFF和离线DIFF,同时在后续的切流过程和切流完成后核心接口也采用实时DIFF测试,从而保证了系统的稳定性。

图3.1

图3.1展示了全渠道应用接入R2的发展情况,横坐标表示时间,纵坐标表示每个月全渠道已经接入R2的应用数。2021年12月底长城开始上线,为了更好的监控长城项目的质量,全渠道核心应用于该月陆续接入R2,并利用R2进行线上流量录制,回放到待测应用中,提前监控待测应用,提前发现不一致的地方,并及早的进行修复和优化。因为前期大部分应用接入了R2,所以后期新增的应用没有明显的变化。2022年2月切量完成后,2022年3月新增部分需求,然后继续对该部分需求接入R2进行测试。

图3.2

图3.2展示了全渠道使用R2进行实时DIFF和离线DIFF的任务数,横坐标表示时间,纵坐标表示任务数。蓝色表示实时DIFF任务,橘色是离线DIFF任务。2021年12月是各个应用接入R2的开始阶段,因此实时和离线DIFF任务想对都比较多。另外,开始时有的应用是一个接口建一个任务,但实际上其实一个应用可以将多个接口根据每个接口录制和回放的规则单独设置,即只需建一个任务即可。2022年2月完成切量前,大部分是研发使用R2进行长城项目的数据对比。2022年3月份测试使用R2进行日常项目和需求测试。其中,根据每个业务线的情况,对于实效性要求强的业务会优先选择实时DIFF,对实效性不强的业务还可以选择离线DIFF。从数据来看,使用实时DIFF进行需求测试居多。

3.2 长城项目中使用R2发现的业务数据问题

以促销和商品线接入R2进行实时DIFF为例,图3.3展示了长城上线前通过R2发现的bug数量。其中,商品&促销共发现140+问题,其中商品B端发现了76个问题,C端发现了37个问题。另外,促销B端发现了27个问题,促销C端发现了30个问题。图中B端指的运营管理后台,C端指七鲜前端。

图3.3

另外,基于R2对比结果可以发现,商品涉及的属性相对较多,所以R2会将切流前后每一个不一致的字段对比出来。其中,商品B端对比不一致的字段主要有商品状态、图片丢失、商品描述、商品名称、商品品牌等。导致这些数据不一致的主要原因是:(1)数据同步问题;(2)对于某些字段0和null的不一致;(3)字段没有对齐。使用R2的优势是,可以提前将这些不一致的对比出来,进行修复和优化,降低了项目上线的风险。

图3.3中展示的促销B端对比发现的问题主要是促销活动切流后查不到,但是C端可以命中,主要原因是数据同步异常和产品功能没有对齐,因此需要进行系统的数据修复和开发与产品对齐功能,从而保障上线质量。C端问题集中在用户实时请求后响应结果中只要有字段或者值不同,都将被对比出来。促销C端的问题也集中在了数据同步的问题。因此,R2在验证数据同步逻辑时起到了非常重要的作用。

四、总结和建议

本文主要介绍了全渠道质量团队是如何利用R2来保障业务质量的。从为什么引入R2开始,一步步介绍引入R2到全渠道落地及收益情况。基于长城项目促销业务,详细介绍了全渠道接入R2的应用情况和R2的使用情况,以及R2助力发现的问题汇总。最后,基于长城项目使用R2测试经验,提出一下几点使用建议:

来保障业务质量的。

(1)使用R2进行任务设置时,可以将一个应用的相关接口建立为一个任务,尽量不要一个接口建一个任务。

(2)可以借助R2获取一些接口的入参,将接口相关的参数进行沉淀,完善自动化测试用例。

(3)对于有DIFF的接口响应,可以在研发修复之后,直接进行DIFF回放测试,不需要重新执行任务。另外,对实时性要求高的,可以借助DeepTest进行手动模拟DIFF的请求进行验证。实时性要求不高的就可以借助R2的离线DIFF回放功能。

(4)对于返回结果结构复杂的,可以设置要对比的字段或者要过滤的字段,并沉淀一个任务模版,后期稍作改动就可以复用,提高创建任务的效率。

作者:京东零售 杨亚晓

来源:京东云开发者社区

R2在全渠道业务线的落地的更多相关文章

  1. Hybris电商方案介绍(企业全渠道) B2B B2C O2O建设

    1). 什么是Hybris: hybris software成立于1997年,2013年与SAP整合,成为SAP旗下的一份子,提供全渠道客户互动与商务解决方案,该解决方案能够为各机构提供客户的实时背景 ...

  2. 全渠道价值链整合云服务 B2B SOLOMO(组图)

    最近看到>中谈到“全渠道零售”(Omni-channel Retailing),指在互联网和电子商务的当今时代“零售商将能通过各种渠道与顾客互动,包括网站.实体店.服务终端.直邮和目录.呼叫中心 ...

  3. 全渠道定价、库存决策,运筹混合整数规划建模求解,MNL选择模型,内附代码!

    0. 写在前面 刊论文!模型简单,代码实现更简单,墙裂推荐!可为运筹建模提供参考,也可作为全渠道零售研究的入门资料ε٩(๑> ₃ <)۶з 全文有点长,前面先放一个博文结构和涉及内容: 第 ...

  4. 如何利用CRM系统打通营销全渠道?

    企业经常通过不同渠道组织各种形式的营销推广,可惜,这些营销推广的效果往往差强人意. 相关研究表明,很多营销推广不理想的主要原因是不同营销渠道之间没有打通数据,不清楚每个营销渠道或营销策划的投入产出.推 ...

  5. 全渠道后端 : RFID在仓储物流中的运用

    核心提示 沃尔玛的业务之所以能够迅速增长,并且成为现在非常著名的公司之一,是因为沃尔玛在节省成本以及在物流配送系统与供应链管理方面取得了巨大的成就. 最后为一个业务展望,从B端工厂提货 到C端交付的系 ...

  6. 全渠道java b2b b2c o2o平台

    大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B.B2C.C2C.O2O.新零售.直播电商等子平台. 根据微服务化设计思想,结合spring cloud一 ...

  7. 《O2O实战:二维码全渠道营销》读书笔记思维导图(530KB)

  8. 阿里聚安全移动安全专家分享:APP渠道推广作弊攻防那些事儿

    移动互联网高速发展,要保持APP持续并且高速增长所需的成本也越来越高.美团网CEO在今年的一次公开会议上讲到:"2017年对移动互联网公司来说是非常恐的.".主要表现在三个方面,手 ...

  9. 互联网研发效能之去哪儿网(Qunar)核心领域DevOps落地实践

    本文从业务目标角度出发,确定了开源+自建模式搭建 Qunar 研发工具链整体生态:通过 APPCODE 打通工具链,流程规范化自动化:多种手段+发布门禁助力质量提升:建立应用画像确定运维最小单元,可发 ...

  10. APP分发渠道的竞争分析

    一. 最近几年,手机APP市场发展非常迅速,随着手机的硬件水平的不断升级,大量资本涌入,越来越多的开发者从桌面平台开发转移到移动平台开发,面对数以万计的手机APP,如何推广自己的APP成了难题,APP ...

随机推荐

  1. Ansible 常用基础模块

    Ansible 常用基础模块 目录 Ansible 常用基础模块 Ansible的执行 Ansible ad-hoc ad-hoc模式的使用场景 ad-hoc模式的命令使用 ad-hoc结果返回颜色 ...

  2. vb.net 数据库连接字符串

    '设置数据库连接字符串 Dim connString As String = "Data Source=.\SQLEXPRESS;Initial Catalog=YourDatabaseNa ...

  3. 源端为备库的场景下Duplicate失败问题

    环境: Oracle 11.2.0.3 + OEL 7.9 A -> B -> C 级联ADG环境:db11g -> db11gadg -> db11gcas 之前测试提到,从 ...

  4. JavaScript原型与原型链深入理解

    原型: 每一个js 对象(null除外)都会和另一个对象相关联,"另一个"对象就被我们称之为'原型', 而每一个原型拥有一个prototype 属性指向原型对象(就是原型的实例)的 ...

  5. Updates were rejected because the tip of your current branch is behind

    最近本地一个flutter项目因为当时使用可视化创建的时候出了一些问题,但是起初没有注意,后来因为需要新增一个语音插件,需要修改原生android MainActivity.java,才发现这个目录根 ...

  6. HTML渲染机制

    一直写页面但是很少对一些较深的运行机制的了解,这次趁休假查了一些相关的资料加上个人理解,记录一下关于html渲染的整个过程,也加深一下自己对html渲染的理解 一.先借一张图来看看html的整个加载过 ...

  7. 区间数k大数查询

    题目 问题描述 给定一个序列,每次询问序列中第 l 个数到第 r 个数中第 K 大的数是哪个. 输入格式 第一行包含一个数 n,表示序列长度. 第二行包含 n 个正整数,表示给定的序列. 第三个包含一 ...

  8. 【VS Code 与 Qt6】QCheckBox的图标为什么不会切换?

    本篇专门扯一下有关 QCheckBox 组件的一个问题.老周不水字数,直接上程序,你看了就明白. #include <QApplication> #include <QWidget& ...

  9. HDU 6981.Rise in Price (Beam Search 贪心)

    by 0htoAi,写于2021.8.14 Problem Description There are n×n cells on a grid, the top-left cell is at (1, ...

  10. 案例实践 | 某能源企业API安全实践

    随着智能电网.全球能源互联网."互联网+电力".新电改的全面实施,分布式能源.新能源.电力交易.智能用电等新型业务不断涌现,运营模式.用户群体都将发生较大变化,电力市场由相对专业向 ...