写点什么

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

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

评论

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

亚马逊云科技与英矽智能合作,利用人工智能技术加速新药研发

Lily

补齐OLAP引擎短板!ByteHouse 是如何实现流批一体的?

字节跳动数据平台

数据库 大数据 云原生 数仓 企业号 7 月 PK 榜

如何通过三级缓存解决 Spring 循环依赖

江南一点雨

Java spring

微信朋友圈广告代理 朋友圈广告 信息流广告加盟

陈老师讲创业

信息流 微信朋友圈广告代理

Perforce Helix Core新版本推出资源压力感知功能,提升服务器可用性,助力大规模开发

龙智—DevSecOps解决方案

版本控制 版本控制系统

为什么强调数智底座能力?

用友BIP

数智底座

用友BIP:助力企业数智化转型,实现数智化国产替代

用友BIP

国产替代

数智底座成竞争焦点,用友能否再创辉煌?

用友BIP

数智底座

一文了解JNPF低代码开发平台

高端章鱼哥

低代码 低代码开发 JNPF

AI成为“老师傅”,1份图谱揭露资产故障真因

用友BIP

AI

浅谈生成式人工智能

天翼云开发者社区

人工智能

Debian11系统编译安装Nginx教程。

百度搜索:蓝易云

nginx 云计算 Linux 运维 Debian

IPQ6010 and IPQ6018 what's the difference?|802.11AX WIFI6 Solution|DR6018

wallyslilly

灵活预算,畅享高性能!月付香港主机助你建设理想网站!

一只扑棱蛾子

香港主机

六步带你体验EDS交换数据全流程

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

PEPE的二代分叉币PEPEP空投和预售正式开启

新消费日报

大模型时代,科技企业入局能源行业需要新范本

TE智库

新能源 特斯联

什么是DevOps监控以及如何在组织中实施?

互联网工科生

DevOps 运维工具

大型民营集团如何构建全面预算管理体系?

用友BIP

全面预算

探索学习Hypermesh的有效方法

智造软件

CAE CAE软件 Hypermesh 结构分析软件 学习教程

Debian11系统编译安装PHP教程。

百度搜索:蓝易云

php 云计算 Linux 运维 Debian

今年值得学习的五种最吸金的编程语言

这我可不懂

Python JavaScript 编程语言

DevOps | 产研协同效能提升之评审、审批流、质量卡点

laofo

DevOps 研发效能 持续集成 持续交付

从Istio在CNCF毕业,看服务网格的架构变迁

博文视点Broadview

一文了解什么是ISO 9001认证,以及在静态分析和代码质量领域有哪些通过此认证的工具

龙智—DevSecOps解决方案

代码扫描 静态代码分析 代码分析

何为低代码?何为高代码?

互联网工科生

软件开发 低代码 JNPF 高代码

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