写点什么

爱奇艺网络控制和抓包测试技术实践

  • 2019-11-30
  • 本文字数:2643 字

    阅读完需:约 9 分钟

爱奇艺网络控制和抓包测试技术实践

导语

移动互联网时代,网络形态呈现三大特点:


(1)多样的接入网络:2G/3G/4G/Wi-Fi,不同的协议,不同的制式,不同的速率。


(2)复杂的现实场景:空旷的大街,拥挤的体育场,飞驰的汽车,地下穿梭的地铁。


(3)动态的随机变化:强网、弱网、无网,下一刻的网络不确定会怎样。


爱奇艺测试团队结合视频播放异常场景的网络模拟需求,在开源方案 ATC(Augmented Traffic Control)的基础上,定制开发动态配置能力,优化了 API 接口,实现了 QTC 工具(QIYITraffic Control),可模拟网络的动静态复杂变化;同时,实现了一种低损耗的自动化网络抓包方案,支持高精度性能测试场景的网络抓包和数据分析,基本不影响网络自身传输质量。


以下文章与大家一起交流、探讨。



背景

在功能测试方面,异常网络环境下保证产品功能正确性和保护用户体验,是互联网产品交付的重要指标,需要高可用的网络控制工具在实验室环境模拟各种现实异常网络场景。目前市场上的工具大概分为两类:一是硬件控制,如网络损伤仪;二是软件控制,商业软件如 Fiddler 与 Charles,开源软件如 ATC 与 clumsy 等。硬件方案可提供高精度的动态网络控制但成本较大,同时二次定制开发难度偏高;软件方案成本低且精度略差,同时难以模拟动态网络。


在性能测试方面,开播时间是视频类 APP 重要的性能指标之一,衡量的是用户等待开播的延迟,常规线下测试是收集多次开播时间数据,经过数据处理得出一个线下测试的开播时间与历史值比较,是 APP 版本上线前都要测试的内容。

遇到的问题

1.需要一个稳定模拟指定的、持续动态变化的网络的工具

通过对网络环境建模,任意现实场景都可以划分成强网、弱网、无网状态,并量化成带宽、时延、丢包、抖动、误码等核心指标。一个理想的网络控制工具,就是根据量化指标数据的连续输入,持续模拟网络的动态变化(根据线上问题分析,大部分问题发生在网络变化的时机)。



图 1 网络模型图

2.需要一个稳定的低干扰的自动化抓包解决方案

视频开播是集客户端逻辑、网络状况及服务端逻辑三方面共同作用的结果,除了时间数据,往往需要网络包来辅助分析。抓包在常用测试中是一个手动测试项,常常通过 360Wi-Fi、小米 Wi-Fi 等组网支持。这类热点组网简单,可以快速用于问题的定位和分析,但它的性能测试问题也比较突出,主要问题有三个:第一,app 设备需要连入热点设备提供的网络,同一网络,存在干扰;第二,热点设备支持距离短,长时间运行不稳定;第三,手工方案效率低,无法用于批量数据采集

解决方案


图 2 整体结构图


如图 2 给出的整体结构图,下面介绍解决方案是如何解决上面提到的问题。


·QTC 方案


根据需求来筛选关键特性,画出方案选型表格,并制定具体的测试活动来填充表格。如下表 1,很明显硬件方案能够满足测试需求,但基于 ATC 开源软件做二次定制开发,同样能构建一个低成本的工具并满足需求。



图 3 工具方案选型表



图 4 QTC 方案设计图


1.产品形态


硬件要求:双网卡工作站 + 无线接入设备


软件要求:Linux 系统 + python2.7


服务部署时间:< 5 分钟


适用场景:设备需要接入 QTC 服务搭建的 LAN(QTC 热点,或者 QTC 交换机)


不适用场景:带宽配置<64 bps,网络参数切换时间 < 2s



图 5 QTC 框架设计图


2.使用方法


使用浏览器作为配置页面,跨平台使用,支持 Android/IOS/windows 多端设备使用。直接在测试设备上进行参数配置,无需其它测试设备协助,在无线热点覆盖区域内实现随时随地的移动测试。



图 6 QTC 使用 UI 界面


3.技术细节:动态场景配置(自研)


设计新的数据结构来存储动态场景(兼容静态场景数据结构),创建新进程来动态设置,使用进程间同步机制传递进程信息来刷新前端 UI。



图 7 QTC 场景参数结构



图 8 QTC 配置流程图


·低损耗网络抓包方案


基于问题,解决方案由硬件解决方案和软件解决方案共同组成。


1.硬件方案


主要解决稳定和抓包两个问题。测试团队经过实践,落地基于镜像交换机+无线 AP 的组网方案。该方案,核心在于镜像交换机,它将手机的网络流量镜像一份到图中 PC 机器的网口,PC 网口后续用于抓包,这样就把应用的网络响应与抓包在物理层分离,应用和抓包机器互不干扰,下图比较了常用抓包方案和新方案的优缺点。



图 9 抓包方案对比


新方案通过使用无线路由器释放热点,无线网络较 360 Wi-Fi 和笔记本无线网卡有一个质的提升,举个例子,实际测试实践,360 Wi-Fi 网络连入的手机,连接距离超过 2 米以后,网络经常变的不稳定,新方案在 10 米左右都能提供一个视频秒播的体验,使用路由器提供网络更加的稳定。


2.软件方案


主要解决自动化的问题。自动化的一个关键问题就是,手机如何自动化的开启和关闭抓包功能,这里使用网络请求的方式搭建这一通路。PC 机本地实现一个 HTTP 的监控服务,服务内部实现与抓包工具的交互;手机在执行自动化的场景中,如果需要抓包,通过 HTTP 请求的方式开启关闭 PC 机的抓包功能,实现自动化。

价值

通过和 IT 团队合作,将 QTC 节点部署到公司办公核心网络,在指定办公区域放射公共 wifi 信号,只要能接收到 QTC 热点信号的地方,就可以自行设置接入设备的网络环境,模拟各种异常网络场景。不区分业务形态,不区分接入的设备类型,且不同设备之间互不干扰,实现“移动测试”,同时在后台服务器上,可以抓包追踪所有的网络流量,实现“精准运维”。目前 QTC 服务已经应用于播放 SDK、基线 APP、TV app 和短视频业务等多个产品的线下弱网测试,赢得了技术团队的认可和好评,有力提升了产品质量和研发效率。以 TV app 为例,借助 QTC 工具,新增 26 条弱网测试用例,已支持两个产品版本测试,平均每版本发现弱网功能 bug 约 10 个。


基于新的抓包组网,爱奇艺基线 APP 性能测试接入后,开播等性能测试可以自动收集网络包数据。通过使用抓包工具定位到了 APP 点击转场慢、网络请求 DNS 慢导致的开播性能问题。

未来规划

  1. 现实场景的模型化,寻找更精准的测量方法和测试工具来采集现实场景的网络参数,并拓展采集维度,构建网络场景数据库。

  2. 借助 AI 技术做对网络场景数据做智能挖掘,找到异常场景的特征值,提高测试的精准性。

  3. 不仅是开播,只要客户端功能是需要网络请求,都可以使用网络插件来自动化收集网络包用于后续分析,未来将会扩展到更多的自动化测试场景中。


本文转载自公众号爱奇艺技术产品团队(ID:iQIYI-TP)。


原文链接


https://mp.weixin.qq.com/s?__biz=MzI0MjczMjM2NA==&mid=2247485795&idx=1&sn=125c9c940ab1bfe0f24020766f39b723&chksm=e9769540de011c5675ca892ca5db49ca925136b321dfd93588d2ec5e73148a2c148d1291d481&scene=27#wechat_redirect


2019-11-30 08:002840

评论

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

数字货币管理,3 大新模式来了!

CECBC

区块链 数字货币

“哥伦布”华为,与智能联接新大陆

脑极体

问世间异步为何物?

架构师修行之路

微服务 异步

架构师训练营第二周作业

Geek_4c1353

TensorFlow 篇 | TensorFlow 2.x 基于 Keras 模型的本地训练与评估

Alex

tensorflow 模型训练 keras

让世界为之赞叹的开源项目,除了Linux,你知道Git吗?

小Q

Java git 学习 程序员 面试

一个草根的日常杂碎(9月23日)

刘新吾

随笔杂谈 生活记录 社会百态

朋友入职阿里请我吃饭,只因为面试前我逼他看了这些,经验很重要

小Q

Java 学习 程序员 架构 面试

无代码平台,完成业务的最后一公里

蓝黑

智能体:华为给时代炼一炉钢

脑极体

小朋友都能看懂的 HTTPS

Java架构师迁哥

甲方日常 22

句子

Vue 工作 随笔杂谈 日常

学完这篇Spring Cloud技术提升一个点!

Java架构师迁哥

二.图说Eureka源码(环境搭建)

阿亮

源码 SpringCloud Eureka

大作业

任小龙

鼓励语言区块链技术的应用

CECBC

区块链

巡展2020第十三届亚洲国际物联网展览会-南京站

InfoQ_caf7dbb9aa8a

12周作业-大数据

飞雪

JAVA集合之LinkedList底层实现和原理

彭阿三

linkedlist

换道超车 区块链是你的捷径

CECBC

区块链 互联网

「架构师训练营第 1 期」第二周课后总结

睡不着摇一摇

极客大学架构师训练营

大作业

SuperLab

实践案例丨ACL2020 KBQA 基于查询图生成回答多跳复杂问题

华为云开发者联盟

搜索 数据集 知识图谱

架构师训练营期末大作业

史慧君

Redis做分布式锁可能不那么简单

架构师修行之路

分布式 分布式锁

面试官:讲讲Redis的五大数据类型?如何使用?(内含完整测试源码)

冰河

redis Jedis JedisCluster

关于Java Servlet找不到自定义包或者第三方包

谷鱼

classes

三步带你开发一个短链接生成平台

葡萄城技术团队

Java SpreadJS Node

架构师训练营笔记2则分布式系统架构和数据结构

tuuezzy

智谱 AI 首席科学家唐杰团队荣获国际数据挖掘顶会时间检验应用科学奖

极客播报

使用Grafana + simpod-json-datasource快速搭建数据看板

诸葛小猿

Grafana 数据可视化 simpod-json-datasource

爱奇艺网络控制和抓包测试技术实践_软件工程_爱奇艺技术产品团队_InfoQ精选文章