写点什么

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

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

评论

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

想做技术自媒体实现财富自由?先看看广告报价吧,无编码学爬虫之二。

梦想橡皮擦

Python 28天写作 2月春节不断更 3月日更

2021年美团/字节跳动/腾讯面经总结:互联网工程师必备的面试1000题

比伯

Java 编程 程序员 架构 面试

VR,正在上演一出“风月宝鉴”

脑极体

真实字节二面:什么是伪共享?

艾小仙

Java 程序员 字节跳动 面试

代码从业者

ES_her0

28天写作 3月日更

星环科技Sophon Edge边缘计算平台持续赋能千家万业

星环科技

敏捷, 是一种信仰

boshi

敏捷 七日更 28天写作

加快布局区块链技术发展,助力网络强国建设

CECBC

区块链

翻译:《实用的Python编程》03_02_More_functions

codists

Python

SQL Server 多表数据增量获取和发布 2.1

happlyfox

28天写作 3月日更

Kubelet从入门到放弃:拓扑管理(上)

DCOS

Linux Kubernetes 云原生 kubelet

关于搜商的一点记录「Day 9」

道伟

28天写作

一篇读懂https的本质、证书验证过程以及数据加密

梁龙先森

大前端 https

javascript中的内存管理

程序那些事

JavaScript nodejs 内存管理 程序那些事

java学习笔记(一)

陈皮

Java

手写一个LRU缓存淘汰算法

Simon郎

Java 大数据 缓存 LRU 数据结构与算法

谁才是一级方程式赛车中的最强车手?

亚马逊云科技 (Amazon Web Services)

产品经理训练营 - 第四章作业 (二)

joelhy

产品经理训练营

dubbo 源码 v2.7 分析:核心机制(一)

程序员架构进阶

架构 源码分析 dubbo 七日更 28天写作

前端上手Docker超详细基础教程

1024肥宅

Docker Linux 大前端 jenkins CI/CD

数据库周刊59丨GaussDB(for openGauss)开放商用;人大金仓保障冬奥会演练顺利完成;MDL锁导致的MySQL问题分析;PG日志使用手册;达梦表空间查询;数据库笔试题面试题集……

墨天轮

MySQL 数据库 程序员 运维 postgre

(28DW-S8-Day10) T型学习模式:迁移式学习

mtfelix

T型人才 28天写作 迁移学习 一万小时定律

这个新春,你的云端安全守卫来咯 | 新服务上线

亚马逊云科技 (Amazon Web Services)

环信大学 | 构建一套适合微服务的高可用架构

DT极客

Docker 常用命令,还有谁不会?

xcbeyond

Docker 常用命令 28天写作

「产品经理训练营」作业 05:知识星球加入星球流程图

狷介

产品经理训练营

如果重来,结果就会好吗?「Day 10」

道伟

28天写作

别梦依稀咒逝川,Ruby二十八年前|M1芯片Mac os系统配置Ruby(3.0.0) on Rails(6.1.1)开发环境(2021最新攻略)

刘悦的技术博客

ruby ruby-on-rails rubygems macOS Big Sur m1

打破垄断 上海发布自主研发树图区块链重大成果

CECBC

区块链

面试系列二:精选大数据面试真题JVM专项-附答案详细解析

五分钟学大数据

大数据 28天写作 3月日更

大厂动态规划面试汇总,教你如何修炼内功

盼盼编程

算法 动态规划 数据结构和算法 笔试

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