算法■深度|大数据算法应用的测试发展之路( 二 )


1 功能性测试与验证
除了正常的请求与响应的检查之外 , 大数据的“大”主要体现在数据的完整性和丰富性 。 一个搜索推荐引擎的好坏很大程度上取决于其内容是否足够丰富 , 召回是否足够多样 。 另外 , 算法带来搜索推荐结果的不确性 , 但也给我们的测试验证工作造成了麻烦 。 所以 , 数据的完整性和不确定性校验也是功能测试的要点 。
2 数据更新的实时性如何测试
总所周知 , 对于一个搜索或者广告的在线计算引擎 , 其内部的数据在不停地发生更新 , 或者出于商家在商品信息上的变更 , 也可能是因为广告主在创意甚至投放计划上的变化 , 这些更新需要实时反馈在投放引擎 , 否则会出现信息不一致甚至错误 。 如何测试和验证这些变更的及时性 , 即保证一定的并发带宽又保证更新链路的响应时间 , 这是需要测试重点关注的一个问题 。
3 数据请求响应的及时性如何测试
在线服务都要求低延迟 , 每次 query 服务端需要在几十毫秒内给出响应结果 , 而整个服务端的拓扑会有大概 30 多个不同模块构成 。 如何测试后端服务的性能和容量就变得至关重要 。
4 算法的效果如何验证
搜索推荐甚至广告的返回结果需要与用户的需求和兴趣匹配 , 这样才会保证更高的点击率与成交转化 , 但如何验证这种需求与结果的相关性 , 或者如何测试一个算法的效果 , 这是一个非常有趣且有挑战的话题 。
5 AI 算法系统的线上稳定性如何保证
线下发布之前的测试是对代码的测试验收 , 并随着缺陷的发现与修复 , 提升的是代码质量 。 而线上的稳定性运营是为了提升系统运行的稳定性 , 解决的问题是:即便是一个代码质量一般的系统 , 如何通过技术运维的方法来提升系统的高可用性与鲁棒性 , 并降低线上故障的频次与影响 , 这一部分也被称为线上技术风险领域 。
6 工程效率方向
这是对以上几个部分的补充 , 甚至是对整个工程研发体系在效率上的补充 。 质量与效率是一对孪生兄弟 , 也是同一个硬币的两面 , 如何平衡好两者之间的关系是一个难题 , 质量优先还是效率优先 , 不同的产品发展阶段有不同的侧重点 。 我们的工程效率 , 力在解决 DevOps 研发工具链路 , 用以提升研发的工程生产力 。
自此 , 我们基本定义完毕大数据应用的测试问题的六大领域 , 有些领域已经超过了传统的测试与质量的范畴 , 但这也正是大数据应用给我们带来的独特质量挑战 , 下面我们围绕这六个问题展开讲一讲 。
三 大数据应用测试六个问题的解法
1 AI 应用的功能性测试验证
功能测试主要分三块:端到端的用户交互测试、在线工程的功能测试、离线算法系统的功能测试 。
1) 端到端的用户交互测试
这是涉及到搜索推荐广告系统的用户交互部分的测试验证 , 既包括买家端(手机淘宝、天猫 app 和优酷 app 等)的用户体验和逻辑功能的验证 , 也包括针对广告主和商家的客户管理平台(Business Platform)上业务流程逻辑的校验 , 涉及广告主在广告创意创作、投放计划设定、计费结算等方面的测试 。 端到端的测试保证了我们最终交付给用户和客户使用的产品质量 。 端上的测试技术和工具 , 主要涉及端到端(native/h5)app/web 上的 UI 自动化、安全、性能稳定性(monkey test/crash 率)、流量(弱网络)、耗电量、兼容性和适配 , 在集团其他团队的测试技术和开源技术体系的基础上我们做了一些改进和创新 , 例如将富媒体智能化验证引入客户端自动化测试 , 完成图像对比、文字 OCR、局部特征匹配、边缘检测、基于关键帧的视频验证(组件动画、贴片视频)等 , 解决了广告推荐在客户端上所有展现形式的验证问题 。 另外 , 针对 Java 接口和客户端 SDK 的测试 , 除了常规的 API Service 级别测试之外 , 在数据流量回放的基础上使用对比测试的方法 , 在接口对比、DB 对比、文件对比、流量对比的使用上有一些不错的质量效果 。 端到端的测试验证 , 由于 UI 的改版速度非常快 , 测试策略上我们把自动化的重点放在接口层面 , UI 的 automation 只是简单的逻辑验证 , 全量的 UI 验证回归(功能逻辑和样式体验)还是通过手动测试 , 这里我们使用了不少的外包测试服务作为补充 。


推荐阅读