使用网络损伤仪正确地对应用程序进行开发测试

现代人们对无线技术的依赖程度随着服务器整合、虚拟化、云计算、远程工作的增加不断的加深。各种厂家通过云、广域网 (WAN)、(A)DSL、GPRS、3G/4G 、卫星网络部署的应用程序比以往任何时候都多。

然而,尽管互联网应用开发已经非常成熟,但在开发中仍然绕不开一个问题 — — 大多数的软件性能测试只在局域网上进行。

局域网与广域网之间存在着非常明显的差异。与局域网相比,广域网延迟高、可用带宽时常不足,还存在丢包、乱序、误码等损伤。这些差异导致了在局域网中通过测试的应用程序在广域网中的表现可能非常差。

如果我们想要开发一款稳健的,能够适应各种网络环境的应用程序,继续在局域网中进行性能测试显然是不合适的。我们需要寻找适合进行测试的网络环境。

接下来,我们来比较一下局域网与广域网的差异,找到影响应用程序性能的具体因素。进而了解,到底应用程序该如何正确地进行开发测试。

一、影响应用程序性能的主要因素

1、可用带宽

在局域网中,由于同时进行的程序较少,所以 可用带宽 是非常充足的。然而,在广域网中,汇聚着来自各个局域网的流量。这导致每个应用程序分得的可用带宽并不多。并且,随着广域网中应用程序的增加,特定应用程序可用的带宽量将迅速降低,这可能对应用程序的性能产生重大影响。

除了网络会影响应用程序的可用带宽之外,网络管理员也可以通过设置网络 QoS 来限制程序的可用带宽。例如 IP 语音 (VoIP) 的可用带宽一般会比其他的应用程序要高。其中的原理是通过 QoS 提升了 IP语音程序的优先级。因此,当我们开发的程序与这些优先级高的程序同时在广域网中竞争带宽时,我们的程序的可用带宽会变得比较低。

所以,我们的产品需要在低带宽的环境下正常运行,我们在测试过程中就需要考虑带宽限制。

2、延迟

除了有限的带宽之外,网络中还存在着 延迟丢包抖动误码等损伤。它们对应用程序的影响不像有限的带宽那样可以让我们直观的观测到。但是它们对产品性能有非常重要的影响。

大多数的广域网都使用基于 TCPUDP 的连接传输数据。这两种连接方式对损伤有着不一样的反应。在不考虑带宽限制的情况下,随着延迟和丢包的增加,基于 TCP 连接的应用程序的传输速率会放缓,确保所有数据可以成功传输。而基于 UDP 的报文因为无连接的特性,依旧会保持高速的发送速率,但是报文可能会丢失或者无法按顺序到达接收端。

基于 TCP 的应用程序在传输数据之前,会先确认是否建立了 TCP 连接。HTTP(www)流量、FTP、 microsoft网络和大多数通用流量以及一些自定义应用协议都是基于 TCP 连接传输。它们对延迟和损伤非常敏感。

假设,我们在北京和广州之间运行一个基于 TCP 的应用程序。在发送数据时,数据不会一次全部发送,而是会被分成一个个的小包分批次发送。它会在确认包(ACK)从接收端返回之前发送尽可能多的数据(在确认包(ACK)从接收端返回之前可以发送的最大数据量由TCP Windows Size参数控制)。并且,它同时会确认数据是否成功到达接收端。在所有数据发送完之前,每一次传输小包,TCP 都会建立连接。所以,数据的传输是呈锯齿状的。
请添加图片描述

TCP 建立连接的方式如上所示
 

这就导致了一旦延迟变高,ACK到达所需的时间就会变长。广域网的时延通常在 40ms 以上,相比之下,局域网内的时延则在 1ms 左右。假设带宽都是 100Mbps ,我们把一个 64 字节的文件从电脑的本级服务器上传到局域网大约需要10秒。但是将从广州传到北京,则需要大约200秒

3、丢包、抖动、误码、乱序

如今,许多公司都在使用VoIPvideo over IP等实时流媒体应用程序。这些应用程序基于UDP协议。就像上文介绍的,UDP 报文对延迟不敏感,但会受到抖动、丢包和误码的影响。这些损伤都会导致语音中断、图片传输受到阻塞等等。

这是因为,当数据包在网络上传输时,它们受到的时延不一样,这导致它们到达接收端的时间不一致,出现乱序。UDP 没有错误重传机制,即使数据包丢失或者乱序,它也不会重新传送。这就像上个世纪我们寄包裹。寄件人不知道它到达的时间,它能否顺利到达,也不知道它在途中有没有损坏。

在良好的局域网中,丢包、抖动、误码、乱序基本上是不存在的。然而,在无线网络、卫星网络和移动网络中,这些损伤则是时有发生。如果我们仅仅是在局域网上进行程序测试,毫无疑问是不够的。而且,随着人们对移动设备的依赖加深,大家会更多的使用WIFI4G无线网络来接收数据。这意味着应用程序需要应对这些潜在的丢包抖动乱序误码等损伤。

二、如何正确地测试应用程序

我们已经知道,应用程序只在局域网中测试是不够的。那么,程序直接在广域网中测试不就行了嘛?答案是否定的。在广域网中测试,有着明显的缺陷。

首先,广域网带宽并不便宜。测试并非一两次就足够,成千上万次的测试消耗的成本是巨大的。最好的解决办法是使用网络损伤仪进行测试。使用网络损伤仪HoloWAN ,可以无限次的模拟不同的网络环境并进行测试,大大节约了测试成本。

再有,我们测试必须是可控的。我们在广域网中测试时,时延、抖动、丢包、带宽限制、误码、乱序等数据我们都无法获取。并且这些损伤还是实时变化的,网络的环境几乎每一秒钟都不一样。所以,我们需要使用 HoloWAN 来进行测试。HoloWAN 上可以提供带宽限制、时延、抖动、丢包、误码率、乱序、报文重复等损伤参数的设置。让我们可以精确的控制每一种损伤的具体数值。只有可以控制的测试,才能够得到有价值的测试结果。

其中测试还有一个非常重要的就是我们需要不同的测试场景。像压力测试,我们必须构建一个极差的网络环境。这在真实的广域网中是无法实现的。我们必须借助网络仿真仪HoloWAN来模拟不同的网络环境。我们可以使用 HoloWAN 创建诸如 WIFI网络2G3G4G5G网络,甚至是卫星网络。并且测试时网损仪不会影响到应用程序。这确保了我们可以在产品或软件的开发阶段、测试阶段、部署阶段都能进行测试。

三、如果测试后发现程序性能不够理想,该怎么办?

假设我们发现限制程序性能的是带宽。那么我们只需要向运营商购买足够的带宽即可解决问题。

但是如果限制应用程序的是时延、丢包、抖动、误码等损伤。那么我们就只能改变应用程序使用网络的方式来应对这些问题。比如在网络变差时,视频软件提供了关闭弹幕、降低画质的选项以确保视频可以流畅播放。

如果我们不对应用程序做优化,那么在遇到这些问题时,只能通过加速软件来使程序正常运行。

为了更好的优化应用程序,我们还是应该拥有一台 HoloWAN 网损仪来对应用程序进行测试。因为应用程序不像其他的硬件产品,打补丁,版本升级是非常常见且快速的。也就是说,即使产品已经正式发布了,但是后续还是有大量的更新维护工作。这些环节都需要用到网络损伤仪进行测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值