京东零售大促质量效能建设

267 阅读9分钟

背景

大促活动特点:页面数量多、前端动效多、玩法逻辑复杂且涉及权益发放、异常场景多。

基于这些特点,我们也遇到了源源不断的挑战。

研发层面来看,第一,全页面开发模式导致相似功能重复开发,耗费人力;第二,兼容范围广,包括安卓、iOS、鸿蒙、小程序、浏览器等,兼容问题解决起来耗时长;第三,下发素材多,影响加载速度;第四,不断增加新玩法,新接口,开发周期长。大促期间交付时间紧迫,导致问题较多,比如占比较高的兜底问题、权益问题、掉楼问题、性能问题等等。

运营层面,期望活动配置简单便捷、能够短周期内快速上线、有好的用户体验。

活动搭建模式演进

为提升交付效率,前后端研发团队逐步转向低代码,推动了活动搭建模式转变。

前端搭建模式由全开发转变为全搭建。旧的全开发模式,导致相似楼层重复开发;新搭建模式下,全页面需求被拆解为楼层需求,按照楼层进行研发测试和交付,最终沉淀为楼层模版库。对于会场活动,可直接复用现有成熟模版搭建,实现快速上线。

后端的低代码体现在三个方面

第一针对常用的素材查询,后端提供了通用接口;

第二针对互动类做任务和发奖玩法,后端沉淀了任务组建和发奖组件,常见的签到、浏览、关注、助力等任务,红包、优惠券、积分等奖品,都可以通过后台配置直接实现,无需开发代码;

第三提供接口编排服务,该服务提供丰富的节点能力,业务端研发通过拖拽及编写js脚本即可生成所需要的接口,点击发布即可线上调用,省掉了重复编写代码、服务部署、网关接口注册等流程。

随着前后端低代码的实施,以及搭建模式的演变,测试在新模式下也面临着极大的质量保障和效能提升挑战。

解决方案与实践

我们从质量保障、测试提效、平台建设,三个维度着手进行了质量效能建设,贯穿项目全生命周期。

01质量保障

按照测试类型,将大促常见的质量问题分为功能类、兜底类、埋点类、兼容类、性能类。

通过测试左移,引入需求分析和领域模型建设,前置发现问题。

在需求分析方面,由测试专家提炼出9大分析因子类型,并在测试平台沉淀514条因子。在需求评审前后,测试人员在平台创建需求分析单,勾选判定项,平台即可自动推荐出该判定项下的需求分析因子,同时对出过线上问题的因子打标。通过因子自动推荐,提升产研测人员识别问题能力,将测试专家的经验更精准的赋能给项目成员;同时通过需求分析,提前识别产品研发设计缺陷,避免问题遗漏到测试阶段。经验表明,问题越早发现,成本越低。

在领域模型建设方面,我们对模版和会场分别沉淀了通用用例模型,覆盖了常见需求的测试点。对于常规需求,测试人员可以直接引用通用用例,节省用例编写时间,并通过用例获取重点关注信息,避免漏测。

通过测试右移,引入上线前测试&研发check、完善线上巡检机制。

测试check:通过对历史线上问题归纳提炼,总结出5大类测试自检类型,20+条自检项,避免因为漏测而导致的线上问题。

研发check:主要包含三大方面,资产类check、配置类check、时间穿越预演。资产类主要针对金额处理、资产逻辑闭环、库存及金额上限等,避免发放问题导致的客诉和资损;配置类主要针对后台配置,提前check配置项,避免测试数据在线上露出;时间穿越针对复杂互动玩法,通过白名单方式,穿越到未来日期,提前进行线上演练。

通过上线前check,多重保障大促质量。

线上巡检:通过接口监控、自动化扫描、性能上报监控、异常上报监控、用户反馈值班5大手段实现多维度监控。

接口类监控:针对接口返回的核心字段进行断言,定时自动执行,并配置告警规则;

自动化巡检:针对活动页面进行扫描,提前发现页面错误、活动过期、白屏等问题;

性能上报监控:通过每日性能埋点分析,发现性能异常的页面,并邮件通知相关人员,保障用户体验;

异常上报:通过异常埋点分析,发现报错或者崩溃页面;

用户反馈:主要通过人工值班,识别用户反馈是否是线上问题,及时发现并解决,减小问题影响范围。

针对接口编排服务的测试能力建设

后端接口编排服务实现了接口快速生成,但编排逻辑是否正确、接口返回结果是否符合预期、接口性能如何,都需要测试介入进行保障。我们从对内系统平台建设和对外业务支持两个视角出发,搭建了服务编排规范化流程。

对内系统平台,建设提测门禁,提测时自动触发执行单元测试原子和接口自动化原子,回归阶段进行全量脚本自动化回归,上线后通过接口监控和常态化压测进行线上保障。

对外业务支持,同样引入编排自测和接口自动化原子门禁。在功能测试阶段,自动生成基础脚本,包括入参规则和出参校验,人工进行场景化脚本补充,减少人工全量编写脚本的耗时,最终在回归阶段用于全量自动化回归,线上根据业务情况开启接口监控,保障服务正常运行。

02效能提升

兜底自动化

针对常出现的兜底类问题,如接口下发字段缺失、字段类型异常、字段为null、list为空等场景,需要测试针对核心字段逐个进行mock测试,费时费力且有可能遗漏字段。为提高兜底测试效率,我们开发了一套兜底自动化工具,只需输入被测活动链接和待mock接口匹配规则,系统便会针对所有字段自动生成mock文件,并循环mock各个场景,最终输出mock结果截图,测试只需要对结果截图进行check。提效效果明显,接口字段覆盖率提升到100%,大大减少漏测情况。

埋点自动化

针对埋点问题多,反复修改验证耗时长的痛点,我们结合埋点规范,实现埋点冒烟测试。研发自测阶段可输入埋点方案和活动链接,系统自动检测不符合规范的埋点,并生成检测报告,前置发现并解决问题,减少测试介入。

兼容自动化

针对兼容机型多,测试耗时长等问题,赛博云测平台实现了一键录制回放功能。测试人员只需要输入活动链接,勾选必过机型,便可一键执行,不依赖测试人员的代码能力,小白也能独立完成自动化测试。同时引入算法图像识别能力,对于常见的文字识别、空坑、白屏、掉楼等问题,系统自动识别并在报告中对问题图片打标,减少人工check图片工作量。

UI自动化回归

在功能测试环节,我们建设了模版自动化能力,以提升模版回归及会场回归效率。针对高复用率模版,沉淀核心用例和测试数据集,结合Airtest进行UI自动化脚本沉淀,重点验证核心取值逻辑&兜底逻辑&页面交互跳转,最终通过图片对比进行结果断言。当前正在建设页面回归能力,自动识别页面所有楼层模版,并针对楼层自动拼接回归脚本,最终集成到会场发布门禁。

03平台建设

流水线能力建设

我们将以上效能提升工具集成到测试流水线节点,建设了活动特有流水线。在一个测试平台即可完成各个环节的测试,减少多工具平台切换带来的测试负担,同时也作为新人指引,可以快速了解活动测试的必要环节。

页面发布卡点能力建设

在发布平台引入UI自动化(功能检测)和H5遍历(兼容&异常检测)能力。当运营搭建完成页面后,触发自动化回归和h5遍历,并邮件形式反馈执行结果,进一步保障会场质量。

大促日报机制建设

活动上线后,通过平台自动生成大促日报,汇总每日问题和解决情况,包括用户反馈问题、线上巡检问题以及性能情况,性能拆解为首屏性能和楼层性能数据,方便快速定位问题,推动性能不断迭代优化,从而保障用户体验和活动平稳运行。

04展望未来

当前的图片问题检测能力还需要不断扩展,提高问题覆盖率,测试脚本自动生成也迫在眉睫,接下来将持续探索,让测试工作更加智能化。

QECon2.jpg