三层架构下,优酷视频搜索测试体系很复杂吗?( 二 )


step4:订阅 , 支持短信、钉钉机器人、邮件等等 。
2)实时
把握整个实时流式计算的业务系统有几个关键点:流式计算、数据服务、全链路、数据业 务(包括索引和摘要) 。结合质量保障体系的线上、线下全链路闭环的理论体系去设计我们的整 体质量保障方案 , 如下图所示:

三层架构下,优酷视频搜索测试体系很复杂吗?

文章插图
 
2.算法1)特征算子组件单测
UDF 在算法数据特征计算过程中是特别普遍的开发组件单元 , 实时和离线都有自己的 UDF 定义 , UDF 也支持多种语言 , UDF 本质上是一个函数 , 它以不同的工程资源形式附加到各个平 台的项目中使用 , UDF 的测试就可以简化成函数的测试 , 归结为输入输出的类函数单测的模式 。我们复用统一框架的执行能力设计 UDF 单测模式如下:
三层架构下,优酷视频搜索测试体系很复杂吗?

文章插图
UDF 从功能输出来说分为三类:
第一类是有固定规则和处理逻辑的 , 这种可以通过输入输出来构建 case , 判断时候则判断 固定的输入是否等于输出就行;
第二类则是一些通用的规则类或者一下非固定业务含义输出的 , 这一类我们则通过正则匹 配或者通用规则来去校验结果;
第三类则是算法模型类 , 这种我们通过构建算法的评测集合 , 去执行评测集 , 获得recall&accuracy 指标阈值来进行是是否通过校验 。
2)feature 列级测试
列级特征则是将整个列的计算逻辑以 UDF 算子为单元组件进行 DAG 逻辑编排 , 然后通过 编译生成图化逻辑来流式构建特征列 。计算引擎原理如图:
三层架构下,优酷视频搜索测试体系很复杂吗?

文章插图
列级特征本质上就是一个图化的 UDF 组合逻辑 , 可以看做是一个复杂图化的计算函数 , 包 含了很多子 UDF 的图化遍历的逻辑 。构建编译器在列级图化逻辑编排完成之后进行编译会得到 该列的 DAG 信息 。这个 DAG 信息就会作为列级的图化逻辑属性 。当列级 feature 进行逻辑执行 的时候会解析该 DAG 信息进行图的遍历依次执行 UDF 算子 。同样的原理 , 我们在测试构建时 候我们构造列级特征检测的 case 集合 。
特征既有数据含义 , 同时也具备部分业务应用上的含义 ,  特征检测我们可以结合数据规则和业务含义内容共同制定特征检测机制 。通过构建特征输入集 来进行图化逻辑执行得到特征值 , 通过特征值的检测、特征分布、特征业务属性检测几个维度 去完成特征检测 。这个时候我们会通过统一的 trace 策略机制去记录每个 UDF 的调用执行情况 ,  以供追查 UDF 执行错误和异常情况 。
3)全图化索引测试
前面 UDF 是算子组件维度的 , 而特征 feature 是列维度的 , 索引全列则是以行为维度的 ,  每行综合多列 。而全列索引特征构建是综合多列 feature 的图化逻辑形成的一个 pipline 。pipline 以引擎索引分类为一个完整的 Pipline , 比如 OCG 就是一个全列的完整 Pipline 。所以 Pipline 级 别的数据测试则是以行维度的数据 。
 
3.效果1)效果基线 对搜索整条链路以及链路上影响算法的重要模块如意图分析模块都建设了效果基线 。
a)搜索链路效果基线建设 。
效果测试集必须是动态的 , 这里采用 case 放在云文件或者数据平台 , 当流量出现新词的时 候随时添加 。要作为效果基线 , 必须保证测试集对应的预期结果必须是准确的 , 这里采用的机 制是评测同学维护 。总体流程是评测同学在数据平台维护效果基线 query、预期结果 , 代码加载 数据进行规则判断 , 噪音消除 , 失败报警 。
  • 规则:检测 TOP n 召回某种类型卡片 , TOP n 只能召回某些 showids , 聚合卡片中 TOPN 只能召回某些 showids , n 可配、showids 可配、卡片类型可配等等;
  • 噪音消除:失败重试、运营数据剔除、showid 可能出现在多种卡片 , 每种都需要相应业 务逻辑 。
使用场景:
  • 搜索链路所有模块发布卡口;