写点什么

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

  • 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:312456

评论

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

Java基础72问:黑马程序员java教程,漫谈MySQL权限安全

Java 程序员 后端

Java入门,java黑马程序员课后答案第二版第八章,如何成为杰出的程序员

Java 程序员 后端

Java基础72问,极客时间数据结构与算法,原理解析

Java 程序员 后端

Java基础学习百度云,尚硅谷linux,深入linux内核架构面试

Java 程序员 后端

Java基础知识梳理,java最新技术栈百度网盘,大厂面试必问

Java 程序员 后端

看山聊 Java:从零实现“百度网盘批量重命名”工具

看山

Java 工具集 10月月更

Prometheus 内置函数(四)

耳东@Erdong

Prometheus PromQL 10月月更

Java入门基础,千锋教育java教程,深度剖析原理

Java 程序员 后端

Java入门视频教程,尚学堂大数据全套教程百度云,Java多线程并发面试题

Java 程序员 后端

Java基础笔试题,尚硅谷和尚学堂大数据,彻底帮你搞懂

Java 程序员 后端

Java外包是如何转正网易的,面试阿里的时候一定会问到的

Java 程序员 后端

2021 Qcon 前端专场精彩回顾

程序员海军

大前端 可视化 vite Qcon

Java从入门到精通百度云,java教学百度网盘,思维导图+源代码+笔记+项目

Java 程序员 后端

Java基础教程百度云,java教程百度云下载,你不懂还不学?

Java 程序员 后端

SQL 笔记

越锋利

sql 课程

Java入门,spring框架教程,Java开发知识体系

Java 程序员 后端

Java基础入门教程,尚硅谷和黑马深圳,Java中级面试含答案

Java 程序员 后端

Java外包是如何转正华为的,2021最新网易Java面试题目

Java 程序员 后端

Java基础入门视频,kafka基础教程,最新Java开发面试解答

Java 程序员 后端

Java基础知识梳理,渡一教育java百度云资源,帮你快速拿Offer

Java 程序员 后端

Java基础笔试题,rabbitmq教程go,netty框架工作原理

Java 程序员 后端

Java多态实现原理解析,掌握这套精编Java高级面试题解析

Java 程序员 后端

Java大厂74道高级面试合集,我凭借这份PDF的复习思路

Java 程序员 后端

Java中级笔试题百度文库,牛客网java笔试题库,从底层开始带你了解并发编程

Java 程序员 后端

Java中高级面试技术问题,mysql优化视频教程,Java全栈知识体系

Java 程序员 后端

不会吧?!新版本longhorn部署需要k8s.gcr.io镜像?

远鹏

Kubernetes CloudNative cncf longhorn

Java中级笔试题百度文库,java架构师直通车百度云,使用指南

Java 程序员 后端

架构实战营模块1课后作业

断水风春

架构实战营

Java基础笔试题,mysql教程入门到精通,Java程序员

Java 程序员 后端

Java二叉树面试题总结,马哥linux视频教程百度云,GitHub重磅官宣

Java 程序员 后端

Java五年工作经验面试题,极客学院和黑马,深入linux内核架构面试

Java 程序员 后端

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