搜索对比测试工具
目录
1. 工具简介… 1
2. 设计思路… 1
3. 工具实用性… 3
4. 工具集成扩展… 6
1. 工具简介
因公司的搜索服务及底层索引创建维护由基础架构部同事维护,业务接入方同学对于业务相关的搜索测试基本都是功能性的基础验证,为了更直观的从多维度评估搜索策略优化产生的效果及影响,我们开发了这个搜索对比测试工具。该工具通过解析线上真实用户的搜索日志,分别调用预上线和线上搜索服务,给出搜索结果数量、排序、服务耗时等维度的可视化对比结果。目前已实现的功能及统计信息包括:
-
同一搜索query预上线、线上搜索结果数量对比,输出各自数量
-
同一搜索结果预上线、线上排序对比,分别输出相同排序和不同排序结果
-
搜索结果重复性判断及重复数量输出
-
对于梯度数据,即针对搜索结果数量落在个,百,十,千,万范围内的搜索词进行的对比分析
-
少无搜索结果搜索词统计
-
搜索词对应搜索耗时统计
-
根据配置的飘红阈值,在测试报告中对异常数据飘红显示,方便查看分析
-
配置化控制:可配置项包括待测业务、全局抽样数量、梯度搜索词抽样数量、报告中差异化比例飘红阈值,方便供其他业务线接入及工具的灵活使用
-
灵活扩展,可通过简单的增加其它业务线的搜索结果实现类,支持更多业务线。
(详细统计数据及报告展示格式请参见后文截图)
2. 设计思路
搜索对比测试主要目的是对比更改搜索策略前后,搜索结果数量是否有明显起伏,搜索结果是否满足预期效果,服务性能是否有明显差异。我们的对比测试工具主要从搜索结果数量、搜索结果排序和服务调用时间三个维度进行设计实现。下面对主要功能点设计思路进行说明。
-
为了模拟真实用户,我们提取线上搜索日志中真实用户的搜索query进行对比测试
-
搜索结果数量对比:我们取线上query分别调用预上线和线上服务,并对比当前预上线、线上搜索结果数量以及上一次真实用户搜索到的结果数量。
-
搜索服务调用时间对比:我们用stopwatch分别统计调用预上线/线上服务的时间
-
搜索结果排序对比:由于预上线和线上服务连接的都是线上数据库,而线上数据是实时动态变化的,再加上策略的调整,同一query对应的预上线/线上结果排序没有可比性,我们对调用预上线服务的query进行了重新拼接。考虑到搜索服务可以根据索引id进行搜索,并且索引id不参与搜索排序的打分,我们取一定数量的线上搜索结果的索引id,拼接到query上,重新调用预上线服务进行搜索,这样我们就可以比较两个环境中相同职位/简历对应的排序情况。
-
梯度数据对比:搜索结果的量级在一定程度上也会影响服务性能、结果数量及排序的相对变化,因此我们对不同数量级结果的query进行了抽样对比测试,增加对比结果评估的合理性。
-
少无结果的统计:少无结果的场景是搜索优化的重要参考项,我们分别对预
上线和线上环境少无结果的情况进行了统计,以支持后续优化。
-
重复结果统计:重复结果对于用户毫无意义,因此我们对是否有重复结果进行了判断
对比工具基本流程图如上图所示
3. 工具实用性
目前,我们的搜索对比测试工具已经应用到英才职位和简历搜索的对比测试中。
-
多维度的搜索结果对比,可以为研发、产品、测试人员提供比较有价值的参考
-
方便扩展,对于各调用平台部垂搜服务的业务线,只需增加具体的搜索结果实现类及对应服务地址即可接入
-
可视化对比测试报告,对比结果可以邮件的形式周知相关人员,并且报告中对异常数据进行了飘红处理,方便相关人员进行排查,详细的差异对比内容以附件的形式输出。测试报告样例如下图所示:
(附件内容展示只存在于预上线环境的索引数据)
(附件内容展示只存在于线上的索引数据)
(附件内容展示搜索结果中排序不同的索引数据)
4. 工具集成扩展
未来计划将具与jenkins集成,通过界面配置,实现全流程的自动化。
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/191667.html