写点什么

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

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

评论

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

固定价格项目能否敏捷?

Bruce Talk

敏捷 随笔 Agile

10道阿里Android岗必问题摆这儿了,你爱刷不刷!(附参考回答解析

android 程序员 移动开发

老友(研发岗)被裁后,想加盟小吃店,我用Python采集了一点数据,多少是个心意

梦想橡皮擦

11月日更

反垄断专家如何看待区块链监管的发展方向

CECBC

12月面试ing-本以为学了个好找工作的Android开发,没想到又是坑---

android 程序员 移动开发

绝佳的录屏编辑神器,一款走遍天下!!

淋雨

Camtasia

构建数据网格分布式架构的四项原则

俞凡

架构 数据

架构实战营-模块三

瓜子葫芦侠

「架构实战营」

06 K8S之kubectl命令介绍

穿过生命散发芬芳

k8s 11月日更

MacBook 搭建VUE3开发环境

IT蜗壳-Tango

11月日更

腾讯云数据库TDSQL已助力20余家金融机构完成核心系统替换 即将进入规模化复制阶段

科技热闻

架构实战营-设计消息队列存储消息数据的 MySQL 表格

Nullrable

架构实战

与德勤论道企业数字化战略到落地

大咖说

云计算 数字化转型 数字化 企业上云 阿里云;

rabbitmq简介

小鲍侃java

11月日更

智+人:在云端重塑一场认知革命

脑极体

【设计模式】第十二篇 - 桥接模式 - 露娜的召唤师技能

Brave

设计模式 桥接模式 11月日更

架构实战营-模块6作业

Nullrable

架构实战营

eBPF: 让云原生运维拥有超能力

俞凡

云原生 网络 ebpf

算法入门-选择排序

ES_her0

11月日更

设计模式【3.2】-- JDK动态代理源码分析有多香?

秦怀杂货店

源码分析 动态代理

【死磕Java并发】—–深入分析volatile的实现原理

chenssy

11月日更 死磕 Java 死磕 Java 并发

软件测试高效学习方法

程序员阿沐

学习方法 程序员 互联网 软件测试 计算机

思科基本网络连接与IOS的基本操作 「网络工程师之路」

Regan Yue

网络工程师 11月日更 思科 网络工程

thanos-io/thanos-CONTRIBUTING.md

卓丁

Prometheus Thanos thanos.io Contributing github Contributing

如何提升口头表达能力?

石云升

表达 11月日更

15年手持4个大厂offer的我,今天面试今日头条体无完肤

android 程序员 移动开发

前端开发工具之Mock.js

Augus

11月日更

iOS开发:报错‘Unknown class ViewController in Interface Builder file’解决方法

三掌柜

11月日更

Vue进阶(幺陆柒):Vue 项目调试技能

No Silver Bullet

Vue 11月日更

记录渗透靶场实战【网络安全】

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

dart系列之:dart语言中的变量

程序那些事

flutter dart 程序那些事 11月日更

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