NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

评论

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

Apache Log4j 2 报高危漏洞,CODING 联手腾讯安全护卫软件安全

CODING DevOps

Apache DevSecOps CODING Log4j 2 腾讯安全

性能工具之Java分析工具BTrace入门

zuozewei

Java 性能测试 性能分析 签约计划第二季

下周上海见!超越商业,创业邦100未来独角兽峰会议程抢先看

创业邦

Linux之ls命令

入门小站

Linux

5G与2021的双向奔赴

脑极体

深度揭秘技术创新:全球首个知识增强千亿大模型是怎样炼成的?

百度大脑

人工智能

盘点2021:一年读完的50本书

石云升

书单 年终总结 28天写作 12月日更 盘点2021

使用 Apache APISIX serverless 能力快速拦截 Apache Log4j2 的高危漏洞

API7.ai 技术团队

Serverless log4j APISIX

时间紧资金少人才缺?8位产业专家带你破局AI智能化升级

百度大脑

人工智能

【Promise 源码学习】第十六篇 - 了解 co 库

Brave

源码 Promise 12月日更

工业4.0时代:低代码的兴起,或将掀起制造业格局的变革

优秀

低代码 工业4.0

性能工具之常见性能工具一览

zuozewei

工具 性能测试 签约计划第二季

性能分析之构建 Linux 操作系统分析决策树

zuozewei

Linux 性能测试 性能分析 签约计划第二季

记录docker,k8s,oneops,.netcore搭建个人博客过程

哔啵哔啵

.net Docker k8s .net core oneops

伙伴大会报名截止倒计时3天!

明道云

即时通讯(IM)开源项目OpenIM本周版本发布- v1.0.7web端一键部署

OpenIM

40 K8S之Calico网络插件

穿过生命散发芬芳

k8s 28天写作 12月日更

架构实战营第 4 期 -- 模块二作业

烈火干柴烛灭田边残月

架构实战营

数据情报在金融行业的探索系列

nexpose

数据分析 目标追踪 风险识别 数据分析预测 数据情报

iKuai与DNSPod合作,搞了一个大动作!

网络安全 DNS DNS劫持

数据库大赛50强之「华东师范大学」:恰同学少年,代码激扬!

OceanBase 数据库

数据库 学习 开源 oceanbase

XTransfer技术专家康康:从普通程序员到架构师的进化之路

XTransfer技术

程序员 创业心态 创业公司 跨境支付 XTransfer

性能基础之CPU、物理核、逻辑核概念与关系

zuozewei

Linux 性能测试 基础 签约计划第二季

性能监控之Telegraf+InfluxDB+Grafana+Python实现Oracle实时监控

zuozewei

数据库 oracle 性能监控 签约计划第二季

实用机器学习笔记九:数据部分总结

打工人!

机器学习 算法 学习笔记 12月日更

Android单页应用如何在Activity与Fragment中共享状态

Changing Lin

12月日更

性能分析之单条SQL查询案例分析(mysql)

zuozewei

MySQL 性能测试 性能分析 签约计划第二季

TypeScript 之模块

冴羽

JavaScript typescript 翻译 前端 web前端

睁眼、耸肩、觉醒:人形机器人的吊诡与最终幻想

脑极体

记录-最骄傲的事(3)

将军-技术演讲力教练

Xcode13 适配之打印启动时间

CRMEB

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