揭秘阿里测试技术最高奖项目——“时间穿越”

发表于:2019-6-20 08:55

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:淘系技术测试团队    来源:淘宝技术

#
阿里
分享:
  爱迪生奖是阿里测试技术领域的最高奖项,奖励在测试领域有卓越表现和突出贡献的技术团队。今年,来自淘宝、天猫、蚂蚁、菜鸟、盒马、零售通、数据中台等18个参赛团队齐聚一堂,共同角逐该项大奖。经过激烈的竞争评比,综合质量效率的创新、提效、智能化、扩展性等多个维度,淘系技术测试团队一路过关斩将,最终凭借《时间穿越—手淘双促客户端稳定性之提前验收》项目斩获了本次大赛的一等奖 - 爱迪生奖。本文将给大家带来“时间穿越”项目的详细介绍。
  一、背景
  2017年11月1日,双十一预热期拉开帷幕。监控发现手机淘宝 (iosandroid) 、手机天猫 (iosandroid) 四个端的闪退率均有不同程度的明显上涨,紧急成立了专项小组去分析问题原因并制定解决方案,后续数据才逐渐回落。出现这个问题的主要原因是预热期大量富媒体上线导致客户端内存水位偏高,内存超过系统阈值后进程被杀死。用户的真实体感就是在使用过程中,手机变卡并可能伴随着发热,之后客户端就发生了崩溃现象,可想而知,这样的用户体验是非常差的。但其实大促期间的每个上线业务都须进行性能测试以及性能验收,为什么上线后还会出现这样的问题呢?
  经过我们的分析排查发现,大促前验收场景均为单点,各个业务都是独立单点的进行测试,而真实用户使用路径则是复杂的链路维度,即在测试过程中没能构建出真实的引起性能问题的场景。以上仅仅是一个例子,其实面对着即将上线的各种互动、会场、游戏、氛围,我们通常的做法是和用户一起等待着时间的到来。
  由于难以构建出真实的引起客户端崩溃的场景,氛围能否会正常切换,隐藏的价格是否会出现,定时出现的模块能否透出,客户端的稳定如何,下一秒会发生什么,我们无法得知。
  在各种大片,会场,动画,动效,游戏中徜徉的用户,内存还好吗?手机滚烫吗?会崩溃吗?
  带着这些疑虑在真实场景进行验证的我们,需要在真实情况到来之前拿到一个更加确定的答案。各种各样的大促对于手淘来讲像是家常便饭,我们不能够去容忍这种不确定性给客户端带来的质量问题以及体验的缺失,针对这个问题我们提出了时间穿越的解决方案,能够让我们在当下的环境中提前看到未来的真实场景。
  二、时间穿越
  为了解决这个问题,我们启动了“时间穿越”项目。“时间穿越”的基本思路是构造出一个未来真实的环境,通过进入这个环境可以做到在真实的未来场景中进行测试和验收,并且通过流程化、卡口化的方式保证无遗漏,辅助自动化驱动,驱动过程数据采集以及问题分析,给出在真实场景下的测试结果。
  时间穿越的技术实现分为服务端,客户端,灰度环境三个部分:
  服务端:
  所谓时间穿越实际就是将整条链路进行基于当前时间的偏移,也就是需要更改应用的时间。
  应用的时间是取自集团提供的NTP服务,所以需要做的第一步是自建一个NTP服务,自建NTP服务能够提供集团NTP+偏移的一个新的时间服务。之后我们将有需要进入未来时间的应用都扩容到打有指定标记的宿主机群上,接下来只需要将宿主机的时间指向我们的自建NTP服务就完成了应用的时间变更能力。为了使应用无需进行任何改造以及部分应用涉及到预算问题,我们打通了底层部分,支持应用的一键扩容。
  客户端:
  客户端的时间并非取自用户设置的时间,又因为手淘后端应用数量巨大,穿越后必然会存在一部分应用处于当前时间,另外一部分应用处于未来时间的情况,根据上文的逻辑,客户端的时间会被在当前时间和未来时间来回的纠正,导致整个客户端无法使用,我们采用下图所示方案,来规避上述问题。
  灰度环境:
  该如何保证线上用户不能进入到未来时间的环境中?又如何使指定用户进入到未来时间的环境呢?
  对于淘系的应用我们采用的是系统灰度环境;非淘系的应用采用的是微服务接口。两种情况都是在统一接入层对当前的请求进行一次判断,如果请求是白名单用户发起的,就进入到未来时间的灰度环境中,如果请求是非白名单用户发起的,那么就进入到正常的线上应用中。通过这种方式保证了在不影响线上用户的前提下,保证指定用户进入到未来时间的环境中。
  时空穿越的整体实现涉及链路比较长,涉及的环节也比较多,但是使用起来却很简单,只需要手淘客户端扫码添加白名单,之后将环境时间更改到预期的目标时间,稍作等待,即可生效。
  在2018年双十一的真实使用过程中,我们从造势、预热、正式三个关键的时间节点入手,利用时空穿越进行了针对客户端页面维度以及链路维度的验收:
  下图就是在预热期进行链路验收的一个过程图,可以看到,通过模拟用户真实使用场景,提前发现了客户端的性能稳定性问题,并在之后推动各个业务方进行低端机降级、压缩图片、减少坑位等等优化方式,最终保证了双十一的线上质量。
  在平稳度过大促之后,我们开始考虑如何将这个验收能力应用在日常的客户端质量保障中,于是开始了客户端验收常态化的项目。
  三、客户端验收
  手淘客户端验收流程图
  简单来讲就是把验收过程嵌入到客户端发版的生命周期中,卡口化流程化避免遗漏,提供性能、稳定性、专项的检测工具,通过分析采集的数据构建问题模型发现问题,并且通过版本大盘进行版本质量的整体度量,逐步形成一个针对客户端线下质量的体系化的解决方案,更加便捷高效的发现问题保证手淘的质量。
  四、结果
  在2018年双十一大促中,我们利用“时间穿越”工具,通过模拟用户行为的链路维度验收解决了17年大促期间的痛点问题,成功发现了客户端150多个有效问题,验收范围基本涵盖了所有的大促活动和会场。客户端稳定性以及性能相比去年有飞跃式提升,被誉为历年客户端最佳双十一。但是“时间穿越”的能力并不仅限于此,真实场景的验收是无论大促状态业务还是日常状态业务都应该进行的一个最终线上验收步骤,而链路维度的时间变更能力,为很多想象奠定了工具基础。

     上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号