写点什么

大数据应用的测试发展之路(一)

  • 2020-04-27
  • 本文字数:2256 字

    阅读完需:约 7 分钟

大数据应用的测试发展之路(一)

从 IT(Information Technology)到互联网和移动互联网,再到数据技术 DT(Data Technology)时代,技术在不断地演进,从单机硬盘升级为当下主流的云+端模式的“新技术”。随着最近几年数据计算力与机器智能算法的兴起,基于大数据 AI 算法的应用愈来愈热,大数据应用在各个行业也不断涌现。测试技术作为工程技术的一部分,也随着时代的不断变化在同步演进,在当下 DT 时代,如何测试和保障一个基于大数据的应用的软件质量,成为测试界的一个难题。本文通过系统性地介绍阿里巴巴 AI 中台的技术质量体系-即搜索推荐广告应用的质量是如何测试的,来尝试回答一下这个问题。文章最后,也对这个方向的未来做了一些展望和预测。希望能给大家带来一些借鉴,也欢迎斧正,以便帮助我们改进。


随着移动互联网和智能设备的兴起,越来越多的数据被沉淀到各大公司的应用平台之上,这些包含大量用户特征和行为日志的海量数据被存储起来,先经过统计分析与特征样本提取,然后再经过训练就会产出相应的业务算法模型,这些模型就像智能的机器人,它可以精准地识别和预测用户的行为和意图。如果把数据作为一种资源的话,互联网公司与传统公司有着本质的不同,它不是资源的消耗者,而是资源的生产者,在平台运营的过程中不停地创造出新的数据资源,并且随着平台的使用时长和频率的增加,这些资源也在指数级地增长。平台通过使用这些数据和模型,又反过来带来更好的用户体验和商业价值。2016 年,AlphaGo,一个基于深度神经网络的围棋人工智能程序,第一次战胜围棋世界冠军李世石。这个由谷歌(Google)旗下 DeepMind 公司开发的算法模型,背后使用的数据正是人类棋手所有的历史棋谱数据。


阿里的搜索、推荐和广告也是非常典型的大数据应用的场景(高维稀疏业务场景),在谈如何测试之前我们需要先了解一下平台处理数据的工程技术背景。搜索推荐广告系统在工程架构和数据处理流程上比较相近,一般分为离线系统和在线系统两部分,见图 1(在线广告系统一般性架构,刘鹏《计算广告》)。离线系统负责数据处理与算法模型的建模与训练,而在线系统主要用以处理用户的实时请求。在线系统会使用离线系统训练产出的模型,用以实时的在线预测,例如预估点击率。用户在访问手机淘宝或者其他 app 的时候会产生大量的行为数据,包括用户的浏览、搜索、点击、购买、评价、停留时长等,加上商家商品维度的各类数据(广告还需要增加广告主维度的数据),这些数据经过采集过滤处理之后再经过特征提取之后生成了模型所需的样本数据,样本数据在机器学习训练平台上经过离线训练之后就可以产生用以在线服务的各类算法模型(例如深度兴趣演化网络 DIEN、Tree-based Deep Model、大规模图表示学习、基于分类兴趣的动态相似用户向量召回模型、等等)。在线系统中最主要的功能是数据的检索和在线预测服务,一般使用信息检索的相关技术。搜索推荐广告系统在使用了上述维度的大数据,经过深度学习之后,成为一个千人千面的个性化系统。对于不同的用户请求,每次展现的商品和推荐的自然结果和商业结果都不尽相同,即便是同一个用户在不同的时刻得到的结果也会随着用户的实时行为的不同而改变,这些背后都是数据和算法模型的魔力。



图 1 在线广告系统一般性架构图


在思考搜索推荐广告系统是如何测试的之前,我们首先要定义问题域,即要解决的测试问题是什么,我们的思路从以下几个方向展开。


1)功能性测试与验证。除了正常的请求与响应的检查之外,大数据的“大”,主要体现在数据的完整性或丰富性。一个搜索推荐引擎的好坏很大程度上取决于其内容是否足够丰富,召回是否足够多样。另外,算法带来搜索推荐结果的不确性,也给我们的测试验证工作造成了麻烦。所以,数据的完整性和不确定性校验也是功能测试的要点。


2)数据更新的实时性如何测试。众所周知,搜索或者广告的在线计算引擎,其内部的数据在不停地发生更新,例如商家在商品信息上的变更,广告主在创意甚至投放计划上的变化等等。这些更新需要实时反馈在投放引擎,否则会出现信息不一致甚至错误。如何测试和验证这些变更的及时性,即保证一定的并发带宽又保证更新链路的响应时间,这是需要测试重点关注的一个问题。


3)数据请求响应的及时性如何测试。在线服务都要求低延迟,每次 query 服务端需要在几十毫秒内给出响应结果,而整个服务端的拓扑会有大概 30 多个不同模块构成。如何测试后端服务的性能和容量就变得至关重要。


4)算法的效果如何验证。搜索推荐甚至广告的返回结果需要与用户的需求和兴趣匹配,这样才会保证更高的点击率与成交转化,但如何验证这种需求与结果的相关性,或者如何测试一个算法的效果,这是一个非常有趣且有挑战的话题。


5)AI 算法系统的线上稳定性如何保证。线下发布之前的测试是对代码的测试验收,并随着缺陷的发现与修复,提升的是代码质量。而线上的稳定性运营是为了提升系统运行的稳定性,解决的问题是:即便是一个代码质量一般的系统,如何通过技术运维的方法来提升系统的高可用性与鲁棒性,并降低线上故障的频次与影响,这一部分也被称为线上技术风险领域。


6)工程效率方向,这是对以上几个部分的补充,甚至是对整个工程研发体系在效率上的补充。质量与效率是一对孪生兄弟,也是同一个硬币的两面,如何平衡好两者之间的关系是一个难题,质量优先还是效率优先,不同的产品发展阶段有不同的侧重点。我们的工程效率,力在解决 DevOps 研发工具链路,用以提升研发的工程生产力。


以上就是大数据应用在测试领域的六大问题,可能有些问题已经超出了传统测试与质量的范畴,但这正是大数据应用带给我们的独特质量挑战。


2020-04-27 15:312329

评论

发布
暂无评论
发现更多内容

一款开源小工具,提升K8S资源管理幸福感!

Rancher

数据挖掘从入门到放弃(七):TensorFlow和keras实现线性回归LinearRegression

数据社

机器学习 5月日更

为什么“放弃”?

Nydia

学习

父母为什么催婚,而你又在逃避什么

小天同学

婚姻 爱情 5月日更

从外包跳槽到大厂,我用了55天成功逆袭。

Java 程序员 架构 面试

发布两小时,Github访问量破百万,阿里内部首次公布的 Java10W 字面经有多强?

Java 程序员 架构 面试

区块链技术在数字农业领域的应用挑战

CECBC

IPFS与 Filecoin的区别是什么?

meio

IPFS Filecoin

博睿数据多点开花,数据链DNA加速走进金融、医疗、政企行业

博睿数据

数据链DNA

API网关才是大势所趋?SpringCloud Gateway保姆级入门教程

Zhendong

Java spring API 网关

夺魁!亚马逊云科技荣膺中国数据管理解决方案领导者!

亚马逊云科技 (Amazon Web Services)

【签约计划】试用期规则

InfoQ写作社区官方

签约计划 热门活动

产品思维

lenka

5月日更

破茧成蝶,如何用数据之力重塑您的业务?| 云途专栏

亚马逊云科技 (Amazon Web Services)

【epoll】epoll多路复用和Reactor设计思想

Linux服务器开发

后端 网络编程 C/C++ epoll Linux服务器开发

【偶尔一道ctf】xctf adword mobile easy-apk

Thrash

520,珍惜眼前人

数据社

520 520单身福利 520 单身福利

线程与线程池的那些事之线程篇

秦怀杂货店

Java 线程 多线程 进程 并发

造车潮

ES_her0

5月日更

全面隔绝虚拟货币暴涨暴跌风险

CECBC

5分钟速读之Rust权威指南(六)

wzx

rust

Flink的广播变量

大数据技术指南

大数据 flink 5月日更

写给大神

小梨蕊

情人节 520单身福利 520 单身福利

架构学习笔记:复杂度来源

风翱

5月日更 架构复杂度

医疗数字化:区块链或成最强辅助

CECBC

医疗

SWOT分析模型

石云升

创业 战略 职场经验 5月日更

ArrayList vs LinkedList

ltc

ArrayList linkedlist

亚马逊云科技宣布在上海设立生命健康行业数字化赋能中心

亚马逊云科技 (Amazon Web Services)

数据预处理&特征工程

Qien Z.

Python 5月日更

NetCore配置文件使用全过程

happlyfox

520单身福利

Dubbo 延迟与粘滞连接

青年IT男

dubbo

大数据应用的测试发展之路(一)_软件工程_公直_InfoQ精选文章