文杰,携程高级测试经理,主要从事测试框架和平台的研发,现负责自动化与工具平台,热衷于研究技术提升测试工作效率。
2019年携程酒店团队开发了比对自动化平台,极大地提高了测试效率,但在使用过程中慢慢也发现了以下一些问题:
1)为了能够覆盖更多的场景,每次拉取很多流量运行,运行数据量比较大;
2)运行数据量大导致运行时间长,等待运行的场景积压多,运行不稳定;
3)每次运行的流量都是随机性拉取,导致流量场景覆盖不稳定;
4)每次拉取的流量没有一个具体数据度量,代码覆盖率是多少;
5)不能自动发现流量覆盖新的场景,而是通过人工偶然发现,手动标识;
根据以上问题,我们设计开发了精准流量筛选。在使用过程中提高了测试精准性和测试效率,并在此基础上根据业务人员需求相继开发了手动流量筛选,自动流量筛选,用例智能推荐等。
本文将从比对平台如何和流量筛选结合以及手动流量筛选,自动流量筛选,用例智能推荐的方面,分享精准流量筛选,希望能给遇到同样问题的小伙伴带来一些启发和借鉴。
![干货 | 携程是如何在测试时做精准流量筛选的 干货 | 携程是如何在测试时做精准流量筛选的]()
![干货 | 携程是如何在测试时做精准流量筛选的 干货 | 携程是如何在测试时做精准流量筛选的]()
![干货 | 携程是如何在测试时做精准流量筛选的 干货 | 携程是如何在测试时做精准流量筛选的]()
流量筛选我们主要采用和公司内部的代码覆盖率平台(采用开源代码覆盖Jacoco开发的内部系统)结合获取流量的代码覆盖率数据,以及分布式多线程运行,筛选流量使用杰卡德相似度算法。
关于杰卡德相似度算法:两个集合A和B交集元素的个数在A、B并集中所占的比例,称为这两个集合的杰卡德系数,流量相似度越高杰卡德系数近于1。
相关公式:
![干货 | 携程是如何在测试时做精准流量筛选的 干货 | 携程是如何在测试时做精准流量筛选的]()
精准流量筛选由三个模块组成:手动流量筛选模块,自动流量筛选模块,用例智能推荐模块。
手动流量筛选模块,自动流量筛选模块是两个相对独立的模块。手动筛选可以指定具体哪些流量进行筛选,更具有针对性;自动化流量筛选是在机器空闲的时候(通常是晚上),根据用户配置随机获取流量数据,然后对流量进行筛选,更具随机性,用户可以根据业务需求选择筛选方式。
用例智能推荐模块,推荐的用例是手动流量筛选模块和自动流量筛选模块筛选的流量用例,在筛选的过程中标识出新发现的场景流量用例,把这些新发现的流量用例推荐给用户,方便用户精确地写接口自动化用例。
筛选原理:比对自动化平台和公司的代码覆盖率平台打通,通过回放场景流量用例,获取流量用例的代码覆盖率信息,对流量用例的代码覆盖率数据进行相似度计算,剔除覆盖率数据相似的流量用例,留下代码覆盖率数据不同的流量用例。
筛选原理:每天凌晨开始,自动到配置的数据源拉取配置数量的流量,对流量进行回放,获取流量用例的代码覆盖率信息,对流量用例的代码覆盖率数据进行相似度计算,剔除覆盖率数据相似的流量用例,留下代码覆盖率数据不同的流量用例。
推荐原理:手动流量筛选和自动流量筛选在筛选用例的时候,标识出新发现的场景流量用例(覆盖了新的方法或者新的代码行),把这些新发现的流量用例推荐给用户,方便用户精确地写用例。
• 从目前4万多的流量中挑选出1000个新场景,后续还在自动流量筛选中;
• 代码覆盖率从23%提升到41%(流量筛选发现新场景该覆盖率还会继续提升);
为了更好的满足用户需求,对于流量筛选,后续我们将持续迭代。
【推荐阅读】
“携程技术”公众号后台回复“新书”,
可免费获得两本书的试读样章~
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
https://cn-sec.com/archives/116750.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论