写点什么

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

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

评论

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

“技术+应用”驱动金融科技创新融合

CECBC

金融

2021最热门的20个数据库学习总结,你会用哪几个?

北游学Java

Java MySQL 数据库 后端

CRM Transaction处理中的权限控制

汪子熙

CRM SAP abap

新融合,新跳板:智能云网如何让企业数字化转型,起步即领先?

脑极体

搞服务器开发竟不知道宝塔为何物,有点说不过去呀!

liuzhen007

5月日更

架构实战营模块四作业

竹林七贤

完蛋,好像病了

IT蜗壳-Tango

5月日更

从0到1数字化转型的“精益落地”模式

高瑞

腾讯校招都会问些什么?| 五面腾讯(Java岗)经历分享

Java架构师迁哥

有无社保缴纳识别接口

ALone

用ABAP 生成二维码 QR Code

汪子熙

二维码 SAP abap

“碳中和”目标下的绿色金融探索

CECBC

金融

4年Java开发经验,经常被问到高并发、性能调优方面的问题,该怎么办?

Java架构师迁哥

被解救的代码 - 代码即服务时代来了!

阿里巴巴云原生

容器 微服务 开发者 云原生 开发工具

Flink消费Kafka

大数据技术指南

大数据 flink 5月日更

爱奇艺世界大会|开幕式速览:智能制作助推影视工业化,匠心构筑行业健康生态

爱奇艺技术产品团队

数据挖掘从入门到放弃(四):手撕(绘)关联规则挖掘算法

数据社

机器学习 5月日更

终于来了!这份阿里P9纯手写的Java并发核心手册,把我没学会的高扩展、高性能、高可用全部讲清楚了

Java 程序员 架构 面试

关于打的 umd 包在使用时,报 require is not defined 错误的问题出处

blueju

图说丨一图看懂浪潮云“1231”业务战略

架构实战营模块四总结

竹林七贤

爱奇艺世界大会|刘文峰:科技创新如何为用户和艺术家服务?

爱奇艺技术产品团队

五岳核心版上线!这份阿里开发手册核心版又将被多少人疯狂转载?

Java 编程 程序员 架构 面试

高性能 JavaScriptの笔记(三)

空城机

JavaScript 大前端 5月日更

业界率先支持 MCP-OVER-XDS 协议,Nacos 2.0.1 + 1.4.2 Release 正式发布

阿里巴巴云原生

容器 微服务 云原生 k8s 中间件

中国区块链第一村的价值裂变

CECBC

5分钟速读之Rust权威指南(三)

wzx

rust

从基础到实战一应俱全,这份全网首发的Kafka技术手册,超详细!

Java架构师迁哥

2021金三银四面试经历:阿里七面(已拿offer),面试经历+真题分享

Java 编程 程序员 架构 面试

如何给产品定价

石云升

创业 产品 职场经验 5月日更

Netty常用解码器学习笔记

风翱

Netty 5月日更

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