文|丁龙 网易云商高级系统测试工程师
一、什么是消费者洞察?
消费者洞察是在大数据的基础上,向上走一层,带着分析洞察的思路去进行客户服务。当垂直行业深入业务时,可以将数据进行更进一步的应用分析,输出给企业更有价值的洞察报告,直接反映消费者现状,并且指导企业的决策。
这本质上也是在颠覆咨询公司的服务模式,他们对企业的服务模式是一段时间输出一份报告,这里存在大量的数据采集和报告撰写的时间。但当我们沉淀分析方式,并且将数据看板化,就是在用 SaaS 的方式交付洞察咨询的能力,可以让企业以更快的频率看到数据的变化,以更灵活的方式进行数据指标间的交叉分析。
本品洞察画像: 基于品牌的 20 种价值观与大数据画像呈现。
换品洞察: 基于某手机展示用户换机情况。
二、业务实现
(一)总体架构
数据接入与存储:
通过编写 Spark 应用,将该应用部署在网易猛犸数据平台,从 Hive 同步宽表、标签表数据至 MySQL 和 ClickHouse 该应用具体同步方法如下:
- 将标签分类、标签以及标签枚举数据写入 MySQL
- 从 Hive 读取宽表数据,直接通过 insert 语句写入 ClickHouse
数据服务:
- 用户画像: 主要针对不同行业的洞察算法,提供各种标签组合,生成可视化的洞察画像与数据,反映不同类型消费者的现状
- 标签管理: 主要负责标签的层级管理和特殊标签的处理,并提供接口给外部进行标签列表的查询。标签分类、标签、标签枚举都存在 MySQL
针对于业务目前架构,测试大数据洞察画像的算法及同步的大数据标签是否正确,保障用户画像合理性,成为了重中之重。
(二)数据流转
消费者洞察数据通过数据清洗、分析、沉淀,获取到数据标签存储于 Hive 中,部署 spark 应用从 Hive 中得到宽表数据存储于 Clikchouse,标签表存储 MySQL,最终业务呈现则从 Clikchouse 中宽表计算。
基于以上数据流转与业务使用得出整体测试思路:
- 基于 Clickhouse 数据源的宽表进行数据完整性与准确性校验
- 业务画像呈现的洞察算法测试
三、目前现状
数据量大: 同步数据后人工校验各类标签规则耗时较长,往往需要 1 天甚至更久的时间
洞察算法过多: 圈选不同的组合条件下将产生不同的行业洞察算法,导致回归工作量大大增加
重复性工作量大: 数据更新频率快,半月/次,更新后同步需再次进行校验,重复性工作多,算法亦是如此
四、解决方案
(一)数据校验自动化
数据同步完成后,数据同步模块会通过接口触发 QA 的自动化标签校验机制。自动化校验平台以异步的方式对同步好的标签数据进行校验,如果出现问题会触发报警通知。
DataValidataController 提供给开发调用的 API 接口。ValidataImpl 实现数据完整性校验, 包括数据量级、标签量级、数据环比、标签搜索;数据准确行校验, 包括数据数据唯一性、数据关联性。
(二)洞察画像算法服务
大数据洞察画像算法服务主要是为了摒弃繁琐的 SQL 输入与手工计算,根据项目信息自动生成相应的算法 SQL,实现 SQL 之间的不同计算,同时也提供洞察算法汇总,提供相应的算法 API 服务。
整体思路: 基于目前消费者洞察的业务架构,实现了基于 Clickhouse 模块的自动化测试架构。
应用层: 主要是根据不同的标签,价格条件及行业实现各类算法汇总,包括本品洞察,竞品洞察,换品洞察,行业细分洞察等;该层也将提供后续需求及功能迭代的算法。
数据服务: 提供相应的算法 API 服务,实现各类算法的接口调用。
@RequestMapping("/userProfile")public String userProfile(@RequestParam String projectId)
@RequestMapping("/insight/summary")public String summaryInsight(@RequestParam String projectId,@RequestParam String key)
@RequestMapping("/insight/avg")public String avgInsight(@RequestParam String projectId,@RequestParam String key)
实现 Clickhouse 连接: Clickhouse 的连接与 MySQL 一致,方便快捷。
整合 goapi(接口管理平台)与 overmind(企业研发效能平台)实现 CI:
goapi 实现场景用例与结果断言,使用 overmind 的需求 CI 与功能场景模块化调用,当开发洞察需求提测时,自动触发场景用例调用,实现自动化校验与提测/发布卡点。
()
- Clickhouse 虽然有丰富的函数,但是有些函数的性能会很差,测试时发现 hasAny 的函数在大数据及行业平均值计算中耗时非常严重,所以在开发与测试中均规避了该函数,而采用行转列的方式实现。
- 由于大数据画像对于精度要求比较高,而 Clickhouse 在处理精度高的情况会导致精度缺失,所以在处理高精度的时候最好自己处理下精度丢失。
- Clickhouse 在处理 Where 条件多变的情况下,性能会比较差,如果业务的 Where 条件非常丰富与多变,当存在多个项目同步洞察的情况,画像返回会变得相当慢。
(四)成果
测试覆盖度提高
- 未引入:抽样覆盖了数据标签量级,标签搜索。
- 引入后:覆盖数据量级、标签量级、数据环比、标签上下线、标签搜索、标签唯一行、标签关联性。
测试效率提高
- 未引入:数据同步测试需要 1人/天,洞察算法测试需要 2人/天。
- 引入后:无需人力投入测试回归。
五、总结
消费者洞察业务,后续也将会承载新的行业用户分析,但不管接入什么行业,其本质还是对用户标签及行为进行解析形成画像及洞察能力,而在其中承载的支柱:数据&算法,可以在大数据画像自动化测试服务中得到很好的迭代及维护。
作者介绍
丁龙,网易云商高级系统测试工程师,目前主要负责网易云商问卷调研及消费者洞察测试工作。