配置化类别覆盖测试平台

项目背景

类别覆盖测试是我们基础质量保证相关方面(类别覆盖; 搜索质量评估)的其中一项,之前有一篇 公众号 文章介绍了这两部分内容。初衷是通过平台工具化的方式,整体评估城市类别组合召回列表的相关质量。 目的包含以下几方面:

  1. 覆盖全量,热门城市类别组合,进行相关少无结果召回的统计;

  2. 对召回内容列表项及详情相关标签或字段进行验证;

  3. 普通帖及各类商业 的统计分析(占比; 跨城市; 详情404及状态异常统计; 列表展示字段与详情对比统计)

  4. 平台化: 用户可通过平台选择覆盖范围进行覆盖测试; 验证点支持配置化,后文会展开说明

  5. 提供数据层面的产品支持,对少无结果城市类别组合实施推荐补充策略,提升入口流量转化。

平台名称CCSQ(categorycoverage and search quality),2017年末我们输出的第一版的执行范式是单机版的任务执行模式; 当时主要是针对404及少无结果输出相关统计报告。 第一版存在以下局限,之前的公众号文章中也提到了这些后期规划的内容,如图1所示:

  1. 执行过程不透明,只能通过日志查看一些过程执行情况。

  2. 不支持订制化执行,只有全量覆盖。

  3. 验证点相对单一。

  4. 执行过程耗时较长,全量覆盖一次需要两到三天的时间。

针对第一版本的问题,结合平台化以及订制化的后续规划需求,我们产出了平台化的第二个版本。

(图1)

平台框架 

概述: Web平台工程采用springboot +mybatis+redis进行开发,分布式任务执行服务器通过自动注册功能实现在平台统一管理,之后接收任务调度。 执行任务的结果写到同一个缓存key中,任务执行结束”告知”web平台自己这台服务器执行结束,web平台会检查所有分发的服务器是否都执行结束之后,对结果进行处理和统计展示。

                  

框架说明:

(1)、任务节点部署运行之后, 通过平台注册接口进行节点注册。

(2)、平台提供用户入口列表接口配置,类别城市组合配置,验证点配置功能。

(3)、根据用户的执行配置选项,通过平分算法,将任务平分到任务节点,任务节点对应的覆盖数据存储到缓存。

(4)、web平台触发对应节点任务执行。

(5)、任务节点根据用户配置的验证点进行请求结果的校验与缓存记录。

(6)、任务节点执行完毕后通过平台接口更新执行状态。

(7)、平台读取汇总缓存数据,生成报告,平台展示并提供下载功能

(8)、统计数据存储到数据库,支持平台数据对比分析。

平台特点

1.列表接口配置

为支持列表接口形式的多样化,目前平台支持接口的模板化配置,后面通过数据进行实际接口的生成,完成后续请求验证过程。 通过此方式可以实现不同业务线的配置化接入。

2.校验元素配置化

以往的方式对于校验目标的获取是hard code的方式通过正则或者字符串操作实现的,缺少灵活性与可扩展性。 二期我们把校验目标的获取做成配置化的方式,用户可以在平台配置要校验目标的CSS Selector,代码通过用户配置的CSS selector获取校验目标。

3.校验规则配置化

通用校验的平台配置:如类别少无结果,详情页404,详情页异常等,用户可以在平台选择需要执行的基础校验列表。

4.订制化校验规则的配置化

对于上面配置化方式获取到页面元素,对应的校验规则目前我们也做了配置化的,例如常规的非空,相等,不等,包含这些基础验证; 以及一些字段的特殊校验,如薪资: 必须满足区间段的格式,且后者大于前者。

平台展示

城市类别组合列表接口模板化配置页

城市选择页面 : 城市选择此处是精确到最小粒度

类别选择页  : 类别选择是在一级大类基础下,展示二级三级类别

规则设置页面 规则一边展示的是列表标签校验项,另一边是详情页的校验项,列表和详情还可以进行组合校验,校验规则有相等、不相等、介于、不介于等十种规则

结果展示页 在执行结果页面只展示当前请求用户的结果数据。其实现原理是,后端记录用户请求ip,并围绕这个请求ip生成独立数据,并提供给前端展示。下图展示的是勾选北京、北京/东城、北京/东城/崇文门,类别全选保险,规则定制的是详情页薪资标签数据介于1-3500的执行结果。

任务执行效率提升

因支持用户自定义方式执行,城市类别组合数量从几百到几百万不等,执行效率的提升是平台后期主要优化的一个点,目前完成的优化内容如下:

1. 多节点分布式执行

目前的分配算法主要基于类别城市组合数量以及执行节点的数量动态进行分配。 避免固定分配可能出现的资源利用不足与热点节点出现的问题。

2.节点通过线程池,多线程的方式执行

任务节点根据城市类别划分,分配给不同的线程worker执行。

3. 缓存存储访问替代数据库存储访问

输入及过程数据缓存存储,取代之前的数据库存储的方式,数据库查询一次,并将查询出的数据放到缓存中,减少频繁查库操作,执行时间较之前缩短45%左右。

总结与未来规划

平台特点:

  1. 输入接口,覆盖范围,检验点,检验规则配置化

  2. 分布式执行,任务节点自动注册

  3. 平台统一管理执行服务器,查看进度及结果

  4. 平台内网访问链接:需要请联系文章结尾处的负责同学

未来规划:

  1. 利用云平台服务器的计算能力,扩增任务执行服务器,提高执行效率。

  2. 订制化报表功能,产出日常实用的报表。

  3. 交互优化

负责测试开发人员,有需要可联系: @李杰 @ 赵亮@马胜振