移动互联网时代,网络形态呈现三大特点:
()多样的接入网络:G/G/G/Wi-Fi,不同的协议,不同的制式,不同的速率。
()复杂的现实场景:空旷的大街,拥挤的体育场,飞驰的汽车,地下穿梭的地铁。
()动态的随机变化:强网、弱网、无网,下一刻的网络不确定会怎样。
爱奇艺测试团队结合视频播放异常场景的网络模拟需求,在开源方案ATC(Augmented Traffic Control)的基础上,定制开发动态配置能力,优化了API接口,实现了QTC工具(QIYITraffic Control),可模拟网络的动静态复杂变化;同时,实现了一种低损耗的自动化网络抓包方案,支持高精度性能测试场景的网络抓包和数据分析,基本不影响网络自身传输质量。
以下文章与大家一起交流、探讨。
在功能测试方面,异常网络环境下保证产品功能正确性和保护用户体验,是互联网产品交付的重要指标,需要高可用的网络控制工具在实验室环境模拟各种现实异常网络场景。目前市场上的工具大概分为两类:一是硬件控制,如网络损伤仪;二是软件控制,商业软件如Fiddler与Charles,开源软件如ATC与clumsy等。硬件方案可提供高精度的动态网络控制但成本较大,同时二次定制开发难度偏高;软件方案成本低且精度略差,同时难以模拟动态网络。
在性能测试方面,开播时间是视频类APP重要的性能指标之一,衡量的是用户等待开播的延迟,常规线下测试是收集多次开播时间数据,经过数据处理得出一个线下测试的开播时间与历史值比较,是APP版本上线前都要测试的内容。
.需要一个稳定模拟指定的、持续动态变化的网络的工具
通过对网络环境建模,任意现实场景都可以划分成强网、弱网、无网状态,并量化成带宽、时延、丢包、抖动、误码等核心指标。一个理想的网络控制工具,就是根据量化指标数据的连续输入,持续模拟网络的动态变化(根据线上问题分析,大部分问题发生在网络变化的时机)。
.需要一个稳定的低干扰的自动化抓包解决方案
视频开播是集客户端逻辑、网络状况及服务端逻辑三方面共同作用的结果,除了时间数据,往往需要网络包来辅助分析。抓包在常用测试中是一个手动测试项,常常通过Wi-Fi、小米Wi-Fi等组网支持。这类热点组网简单,可以快速用于问题的定位和分析,但它的性能测试问题也比较突出,主要问题有三个:第一,app设备需要连入热点设备提供的网络,同一网络,存在干扰;第二,热点设备支持距离短,长时间运行不稳定;第三,手工方案效率低,无法用于批量数据采集。
如图给出的整体结构图,下面介绍解决方案是如何解决上面提到的问题。
QTC方案
根据需求来筛选关键特性,画出方案选型表格,并制定具体的测试活动来填充表格。如下表,很明显硬件方案能够满足测试需求,但基于ATC开源软件做二次定制开发,同样能构建一个低成本的工具并满足需求。
.产品形态
硬件要求:双网卡工作站 + 无线接入设备
软件要求:Linux系统 + python.
服务部署时间:< 分钟
适用场景:设备需要接入QTC服务搭建的LAN(QTC热点,或者QTC交换机)
不适用场景:带宽配置< bps,网络参数切换时间 < s
.使用方法
使用浏览器作为配置页面,跨平台使用,支持Android/IOS/windows多端设备使用。直接在测试设备上进行参数配置,无需其它测试设备协助,在无线热点覆盖区域内实现随时随地的移动测试。
.技术细节:动态场景配置(自研)
设计新的数据结构来存储动态场景(兼容静态场景数据结构),创建新进程来动态设置,使用进程间同步机制传递进程信息来刷新前端UI。
低损耗网络抓包方案
基于问题,解决方案由硬件解决方案和软件解决方案共同组成。
.硬件方案
主要解决稳定和抓包两个问题。测试团队经过实践,落地基于镜像交换机+无线AP的组网方案。该方案,核心在于镜像交换机,它将手机的网络流量镜像一份到图中PC机器的网口,PC网口后续用于抓包,这样就把应用的网络响应与抓包在物理层分离,应用和抓包机器互不干扰,下图比较了常用抓包方案和新方案的优缺点。
新方案通过使用无线路由器释放热点,无线网络较 Wi-Fi和笔记本无线网卡有一个质的提升,举个例子,实际测试实践, Wi-Fi网络连入的手机,连接距离超过米以后,网络经常变的不稳定,新方案在米左右都能提供一个视频秒播的体验,使用路由器提供网络更加的稳定。
.软件方案
主要解决自动化的问题。自动化的一个关键问题就是,手机如何自动化的开启和关闭抓包功能,这里使用网络请求的方式搭建这一通路。PC机本地实现一个HTTP 的监控服务,服务内部实现与抓包工具的交互;手机在执行自动化的场景中,如果需要抓包,通过HTTP请求的方式开启关闭PC机的抓包功能,实现自动化。
通过和IT团队合作,将QTC节点部署到公司办公核心网络,在指定办公区域放射公共wifi信号,只要能接收到QTC热点信号的地方,就可以自行设置接入设备的网络环境,模拟各种异常网络场景。不区分业务形态,不区分接入的设备类型,且不同设备之间互不干扰,实现“移动测试”,同时在后台服务器上,可以抓包追踪所有的网络流量,实现“精准运维”。目前QTC服务已经应用于播放SDK、基线APP、TV app和短视频业务等多个产品的线下弱网测试,赢得了技术团队的认可和好评,有力提升了产品质量和研发效率。以TV app为例,借助QTC工具,新增条弱网测试用例,已支持两个产品版本测试,平均每版本发现弱网功能bug约个。
基于新的抓包组网,爱奇艺基线APP性能测试接入后,开播等性能测试可以自动收集网络包数据。通过使用抓包工具定位到了APP点击转场慢、网络请求DNS慢导致的开播性能问题。
. 现实场景的模型化,寻找更精准的测量方法和测试工具来采集现实场景的网络参数,并拓展采集维度,构建网络场景数据库。
. 借助AI技术做对网络场景数据做智能挖掘,找到异常场景的特征值,提高测试的精准性。
. 不仅是开播,只要客户端功能是需要网络请求,都可以使用网络插件来自动化收集网络包用于后续分析,未来将会扩展到更多的自动化测试场景中。