Qcon北京2017总结:测试角度看泛智能和大数据

作者:黄闻欣

全部 ppt 下载地址:https://pan.baidu.com/s/1eRHgUZK#list/path=/

本来这个文章应该在很早之前就写的,可惜一直没时间,写的时候断断续续。关键是这次 leader 拓展又见晓生,每次见到他都会提醒我,这总结居然还没有写。

下面就由小 V 来总结下我在这次 Qcon2017 究竟学了啥。两个关键字,大数据和泛智能,关键是能给大家一些启发。

先说大数据

在分层测试的概念里面,最后一环是发布运营,这是我们对于质量监控的延伸。而这种延伸其实就已经涉及到"大数据"了。这里我很喜欢一个概念,大数据 = 交易资料 互动资料 观察资料

而在这几年,包括 APM,用户行为监控,其实都是在这上面做文章。对于专项测试而言,我们的 SNGAPM 的思路就是利用外网的大数据来提升专项质量的实践,包括 CT 树,触顶聚类。而同样来自我自己专题《[ 移动专项最佳实践][2]》的腾讯互娱的何老师的分享《[ 腾讯手游性能优化之路][3]》也介绍了互娱的 APM,其中一个比较有意思的实践就是利用(用户在地图的位置** 发现 GC的数据)**在 APM 后台展示王者荣耀的地图上聚类展示 GC 的点。

交互资料的建设上,比较有意思的是 [《网易乐得 "无埋点"数据采集实践之路》][4],他其实是用户行为上报的一种实践,通过"无埋点"可以解决很多数据上报的固有问题,如验证测试、需要人工配置的漏斗模型等等。在技术上,android 采用的 ASM 的方式进行静态插桩,iOS 通过 iOS Method Swizzing,主要是从控件角度来 hook,当然这里方案还有很多种,特别是 android 还有动态 hook 的方式,但是从现在 hook 方案对于 android art 的支持情况来看, ASM 确实是没有办法的办法了。比较值得推荐的原因是,1. 在分享中介绍了许多用这个技术面对的具体的坑,2. 对列表控件的行为上报的特殊理解,来挖掘用户对列表局部内容的关注度。

出了大数据的数据采集的维度,数据展示和数据分析也有一些不错的开源组件和对应的实践。这些开源组件包括:

1 . Kafka :硅谷大数据技术专题的《Apache Kafka:大数据的实时处理时代》

特点:无论在 APM 还多系统中都广泛使用的消息队列组件,分享中我影响比较深刻的是它数据的两种状态,出了众所周知的 KStream 还有 KTable。另外 Kafka ChangeLog 可以用来回溯和重建。

2 . Kudu:大数据应用专题的《基于 Impala 构建实时用户行为分析引擎》

特点:跟 HDFS,Hbase 不同的另外一种大数据存储的选择。

3 . Ambry:硅谷大数据技术专题的《分布式海量二进制文件存储系统》

特点:接口简单,I/O 性能出色,多中心同步

4 . Airflow :硅谷大数据技术专题的《Airbnb 的核心日志系统》

特点:工作流系统

5 . Superset :硅谷大数据技术专题的《Airbnb 的核心日志系统》

特点:跟我们的叮咚系统类似,但是功能和组件都非常丰富的开源的报表系统。

  1. 关于数据异常分析和展示的论文《Discovery driven Exploration of OLAP Data》,在 google 中可以下载。

(这个附带了一些感悟,国外的这些公司真的很热衷开源)

再说**泛智能**

有了"大"数据,经过数据清洗,训练,验证,落地应用就变成了现在说的机器学习。为什么说泛智能呢?因为,在整个 Qcon2017 确实大量充斥着"人工智能","机器学习",当然也不乏挂羊头卖狗肉和炫技,而不是为了解决问题。但是无论如何,这是趋势,什么东西都加上智能,运维智能,测试智能等等,我们也需要思考这里有什么东西,可以帮助我们解决问题。因此这里不论一些"智能"的落地效果,但是想法对于 app 质量提升上还是有启发的。

根据我现在知道的一些应用,我做的一些分类。主要按照监督和无监督类型来展开。

监督类

1. 生成用例:杨老师的《[ 用人工智能高效测试移动应用][8]》,爬 app,根据 app 的界面特征建模,生成测试用例。例如新的购物类 app,上传到网站上,就会自动生成购物流程的测试用例。

2. 拟合算分:罗老师的《[ 直面音视频测试之痛][9]》,使用机器学习,把各个维度的客观数据与 MOS 分进行拟合。

3. 告警:《[ 智能运维里的时间序列][10]》,使用机器学习,预测时间推移的数据变化情况,如果跟预测的不同,触发告警,通过这种方式弥补传统阈值或者简单傅立叶变换导致的误报,进而提升外网发布运营在质量上的响应速度和敏感度,

4. 原因分析:这算是个我认为比较特别的用法,利用机器学习对数据生成"决策树",然后分析"决策树",分析触发问题的充分必要条件。这算是找问题原因的一个不错的方法。

无监督

1. **解决长尾问题:**《美团 crash 监控分析系统优化之路:crash 率从千分位到万分位》,通过数据聚类,可以聚合同类问题,也可以帮助快速发现新增问题

类似的我们部门内的实践,在测试用例上,利用 k-means 聚类,减少重复用例,其实也是一种长尾问题通过聚合减少的应用。

2. 分析原因:这个是自己 yy 的,例如聚类高活跃的用户的用户行为,然后帮助更快地分析活跃的原因。

小结一下,可以看到机器学习其实可以给我们带来,聚类、分类、回归、预测、告警,大家也可以从这些方向想一下可以用来解决我们现在面对的什么问题。

其他

有诗和远方,也有眼前的苟且。除了高大尚的大数据,这里也附带分享也写我觉得不错的知识点。

《Oracle 和 MySQL 性能优化感悟》:

这个金字塔其实归纳得很好,做性能优化的时候,有一定的指导意义。

《Go 构建日请求千亿级为服务实践》:

利用对象池减少 GC,https://research.google.com/search.html?q=david lo stanford

《[Instagram 服务器性能优化实战与经验][15]》:

利用 cython 来编译 python,提升性能

python GIL 限制,不能有效地使用多线程,那么就用多进程,但是进程内存消耗大,work 进程不共享内存,内存浪费。他们利用 uWSGI 做共享内存 , uwsgi.cache_get 这个可以给 ct 入库使用。

《**3 x 3:提速移动 App **交付》:

快速通过自动化做界面测试:https://github.com/linkedin/LayoutTest-iOS

利用模拟器做自动化测试

https://github.com/linkedin/bluepill ,NewMonkey 已经在更早之前使用的类似的技术,关键的坑在启动模拟器的数量关键瓶颈在内存,大约 1 个模拟器耗费 1.5GB-2GB 的内存。

《[ 移动 App 性能监测实践][18]》:

很多人会错误使用 Method Swizzling,具体可见:http://petersteinberger.com/blog/2014/a-story-about-swizzling-the-right-way-and-touch-forwarding/

《[Software Performance Analysts: Past, Present and Future][19]》

这设计到后台性能调优,后台的性能,其实涉及到软件和硬件,就像一个数据库的调优,可以涉及 Bios,操作系统参数,数据库本身的参数调整,如何获取最优的参数组合,会有一些工具与方法论,例如 Auto-Tuning

很多时候,在各大公司的后台服务中,其实 CPU 利用率其实并不高,从一些论文里面会有不少研究解决方案的。例如: Google Papers David oStanford 的论文,利用给应用分为后台类应用和前台快速响应类应用来充分利用 cpu,甚至深入到 CPU 如何保证前台快速响应类应用的 Cache。

其实大家不妨定期阅读一些论文,说不定真能拓展思路。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT技术精选文摘

基于Redis的推荐系统开发

介绍 推荐系统并不总是需要用到复杂的机器学习技术.只要手头上有足够的数据,你就可以花很少的功夫开发一个推荐系统.一个最简单的推荐系统可以只是从用户感兴趣的表中查...

4498
来自专栏BestSDK

Google发布Spatial Audio SDK,提供一站式VR/AR商店

Google 推出了3D对象库Poly,为虚拟现实(VR)和增强现实(AR)开发者提供一站式商店,寻找项目并发布他们的项目。 近日,Google发布了一个新的空...

31610
来自专栏SDNLAB

更智能化的CDN技术,CDN迈向3.0时代

我们的生活无时不刻不依赖着网络,伴随着终日对网速慢的抱怨和诅咒,同时也享受着网络技术发展带来的红利。怀着对技术细节刨根问底的执着,我们会发现原来身边还存在着像C...

3749
来自专栏腾讯技术工程官方号的专栏

大型DCI网络智能运营实践

? 9月14-15日,GOPS全球运维大会上海站圆满举行,为期两天的运维盛宴,为各位运维人带来了相互交流和学习的绝佳平台,来自腾讯技术工程事业群(TEG)网络...

862
来自专栏技术翻译

18个面向开发人员的机器学习平台

机器学习平台不是未来的潮流。它现在正在发生。开发人员需要知道如何以及何时利用他们的力量。使用像Filestack这样的合适工具在ML环境中工作可以使开发人员更容...

1250
来自专栏程序你好

AI开发人员可以使用18个机器学习平台

随着近几年AI的火热,机器学习平台(Machine learning platforms)也开始引领技术潮流。开发人员需要知道怎么样利用这些平台的能力。在ML环...

643
来自专栏ImportSource

微服务到底有多微?How big is a microservice?

关于这个问题,有人说用代码行数来衡量微服务到底有多微,我们都知道不同语言写的微服务行数肯定都不统一,这个显然行不通;还有人说用重写时间来衡量,什么意思呢?就是说...

3237
来自专栏数据派THU

数据蒋堂 | 计算封闭性导致臃肿的数据库

来源:数据蒋堂 作者:蒋步星 本文长度为1873字,建议阅读5分钟 本文讲述计算机的封闭性如何导致了臃肿的数据库。 许多大型用户的数据库(仓库)在运行多年之后,...

18210
来自专栏CSDN技术头条

每个软件工程师都应该了解的搜索技能

如果你问一名软件工程师:“如何给产品添加搜索功能?”或者“如何构建一个搜索引擎?”你可能会得到这样一个回答:“我们刚刚推出了ElasticSearch集群,以后...

2019
来自专栏Crossin的编程教室

Python零基础入门在线课程 | Crossin的编程教室出品

“码上行动”是“Crossin的编程教室”经过5年积累后推出的一项服务,目的是为了让编程初学者,尤其是自学者,更快地找到正确的学习方向,提高编程水平。

1003

扫码关注云+社区