汽车之家:新型流量回放在回归测试的实践应用——“创新案例 北京实践”系列分享第五期成功举办
软件测试作为软件开发过程中的关键环节,起着把关软件质量、降低开发成本、预防产品缺陷、提升客户满意度等功效。从美国、印度等国家的软件行业发展来看,软件测试在软件开发系统工程中占有相当大的比重。随着我国软件工程的不断发展,软件测试人才的培养、引进也显得尤其火热。
传统意义上的软件测试,其测试数据及验证过程往往需要人工参与或预置编写脚本。但随着系统的复杂性逐渐增大,任何一行代码的改动或一个配置文件的修改都有可能引起整个系统的崩溃或者带来巨大的损失,人工无法在短时间内完成验证。在此背景下,新型流量回放测试应运而生。流型回放测试,是用流量拷贝的方式把实际流量的镜像分发到新旧代码测试服务器上,用来验证新的代码修改是否对原有系统造成影响以及新功能是否可用。
那么,流量回放能在快速交付周期下,保障回归测试的质量吗?在保障业务之余,对传统方式不好验证的技术演进类任务,流量回放能否提供快速回归测试支撑呢?测试系统又如何解决流量回放方案中误报、用例质量等问题呢?
带着这些问题,6月10日,由北京软件和信息服务业协会主办的“创新案例 北京实践”系列分享第五期邀请到汽车之家经销商质效负责人王虹艺女士进行了分享。
一、 背景:新型流量回放回归测试方案应运而生
在互联网快速发展的背景之下,为了能够更快、更高效地交付更高价值的需求产品,汽车之家引入了新一代的精益产品研发模式。在测试及质量保证环节上,汽车之家也针对流程和工具做了很多改进和优化。经过这几年的努力,汽车之家的产品平均需求交付时间已经降低到了4天左右。
但在这看似不错的数字之下,隐藏着一些问题。这有两个方面的原因,一是因为研发速度非常快:当时,汽车之家使用的是自动化接口测试框架,它的维护编写时间已经追不上4天的交付时间了导致回归测试随机开展,没有一个兜底保障,这导致出现了很多线上问题。二是随着技术和项目的不断演进,产生了一些容器化、重构、组件升级等新形式测试任务;这些测试任务如果使用传统的方式去进行回归验证,效率比较低,没有办法在短时间内去完成。这两个因素促使汽车之家需要寻求一个更新的回归测试方案,去适应快速迭代交付的新开发模式,并且能支撑到不同种类的新型测试任务;还需要它是一个能够跨产品通用的方案。
回归测试方案的演进历程,大体可划分为三个阶段:手工阶段,自动化阶段,智能阶段。自动化阶段的回归测试,是根据设计人员提前编写好的程序进行检查。它其实节省的是程序自动化帮人们去重复执行的一个测试时间。第三个阶段是智能化阶段,在这个阶段其实是不需要人工去针对于某一个业务再去做具体的用例编写。新型流量回放测试,就是直接使用线上真实请求,通过分别部署线上旧代码的基准环境和待测试的新代码的对比环境,进行流量回放测试。在相同的请求情况下,对比response差异找出BUG。这种方式完全不需要提前人工参与编写脚本,也没有对应的维护成本;在相同成本的情况下,智能化测试的收益要比原来的自动化测试要高出来许多。
二、 方案:汽车之家新型流量回归测试方案介绍
目前流量回放的主流方案有两种类型:一类基于接口输入输出验证的黑盒方案,第二类是侧重于验证程序内部处理调用逻辑的白盒方案,它是按照程序内部的结构测试程序,检测程序中的每条通路是否都能按预定要求正确工作。两种测试方式各有优、缺点。在流量回放专项中,黑盒测试的优点是能跨平台、适用多种语言、可跨接口、外部调用真实链路齐全,缺点是写接口验证力度弱、测试数据场景不稳定。白盒测试的优点是支持测试数据还原、可验证写接口、测试数据稳定,缺点是只支持单一如java语言、不能兼容IO变更的、不适合集成测试阶段。
汽车之家经销商质效负责人王虹艺女士认为,没有完美解决所有问题的银弹,需要分析实际线上业务比例情况,按照读/写业务、有无I/O变更两大维度,界定四大业务场景,整合黑、白两套技术,形成一套流量回放解决方案。
汽车之家流量回放整体解决方案分三层:应用层,表现层和基础支撑层。在应用层,汽车之家目前已经基本上能够覆盖到全开发周期流程,包括开发自测、集成测试、预发灰度验证测试和线上监控等环节;在表现层,包含平台与CI两部分。在基础支撑层,基于自研的黑盒和阿里JvmsandboxRepeater两套不同的技术方案,分别对接读接口和写接口。并由读写方案分发适配器进行用例分发。
汽车之家流量回放方案,底层数据源集成了全公司多层节点多种的流量来源。并在经过一定的智能用例计算,包括筛选、清洗、膨胀以及分类等,会生成一份低冗余、高覆盖的一套case。在执行模块,引入实现了多种智能结果比对,误报过滤处理等环节,大幅减少需要人工介入的成本。
在落地过程中,围绕着“能快速、高覆盖地进行集成回归测试”的核心目标进行着持续的技术优化改进。汽车之家基于丰富的测试实战经验,通过引入智能去噪的专利算法,解决常规流量回放工具,因时间戳等动态字段导致误报的重点问题,误报率可下降80%。另外为了增加回归测试的覆盖度,汽车之家还制定了一套组合动态的用例生成方案,通过多种规则兼顾用例的时效性、随机性、低冗余、高覆盖等特点,并为不同场景下的测试提供流量膨胀等处理。 通过url参数、代码调用覆盖、响应情况等多维度,基于Kmean聚类算法等反向分类海量流量数据,进一步生成低冗余高覆盖的用例。此外区别于其他流量回放工具,汽车之家通过研发还实现了跨接口的流量回放,支撑接口迁移合并、优化、监控等场景。
三、 效果:汽车之家新型流量回放测试方案应用价值
目前,汽车之家流量回放测试方案能够在10分钟内完成配置接入,5分钟内完成错误排查。不管是读接口报告,还是写接口报告,它展示的指标是非常清晰的,也支持用户很方便地去排查。
汽车之家整体流量回放系统从2021年上线并实践一年之后,全年共回归了15,000次,完成了92个正式项目的测试,支持了50多次专项任务。全年回归400余万条用例,折算下来大概节约了4人年时间。在TDD模式之下,人均bug率及格线在1.2/人月的情况下 ,汽车之家仍然能拦截到100多个问题。
总之,新型流量回放测试, 为汽车之家提供了一个很好的质量保证。在一个敏捷应对、高速迭代环境下,新型流量回放测试能够帮助汽车之家更快交付、更多交付、更好交付产品。
展望未来,汽车之家的后续计划是进一步利用调用链,精准化降低冗余用例;通过智能的报错聚合,优化排错;优化底层读写接口方案集成。
在嘉宾作了主题演讲后,北京软协主持人与演讲嘉宾王虹艺进行了热情的交流互动,并代表直播现场广大观众网友们进行了提问。针对软件测试行业的发展前景,王虹艺表示,测试员的角色已从原来单纯只负责测试,转变成了对全流程的质量把控,比如这几年的测试左移和右移。甚至新一代的精益产品研发模式下,我们要更关注给用户交付的价值。建议即将进入测试岗位的学子们,首先要有热爱度,如果有机会的话可以体验一下软件开发全流程。测试岗的前景比较广,转岗也比较容易。
针对测试实践的效果及适用的场景,王虹艺表示,汽车之家新型流量回放测试实践节省了人力成本,能够支撑开发模式的快速迭代。目前汽车之家流量回放主要是在经销商事业线上应用,在经销商技术团队中进行了一年的实践应用,是小范围的;但今年的收效还是满意的;将来会向汽车之家其它合适的事业线推广。此外,流量回放测试并不是所有场景都适用,它适用于数据量大复杂,同时业务流量也很大,但业务逻辑简单的场景,或者读取业务占比大的场景,如ToC产品。但对于业务流程关联依赖较多的ToB产品测试,更多需要比较成熟、稳定以及人工编写丰富场景的自动化测试。
关于智能化对测试工具的影响,王虹艺表示,智能AI可以简化我们测试中人工操作的一些流程,在不断加快的新研发模式下,使用AI简化测试解放人力这是一个趋势。目前,汽车之家在各方各面都有着较为先进的智能化的应用,将来可能会依赖汽车之家内部的智能化能力,在测试工具上也进行更多的应用尝试,但在测试部门可能不会对底层的AI算法进行深入研发,更多的是依赖、利用AI的能力运用到测试工具中应用受益。而目前比较好的测试工具有国外twitter的Diffy黑盒方案,国内阿里团队的Repeater白盒工具方案。
关于中小企业如何快速搭建及应用流量回放的问题,王虹艺建议,选一个比较小的场景,投入比较少的人力,使用一些开源的工具,一步一步地实现出来。
最后,王虹艺表示,非常感谢北京软协对企业软件的推广。如果汽车之家以后有开源的流量回放测试工具以及对应开源社区的建立,一定会第一时间告诉大家,让大家都参与进来。
扫描二维码 回顾精彩内容