为什么要关心网络损伤测试?为什么要使用网络损伤仪?
互联网是不完善和充满意外的地方.
这个世界是一个不完美的地方。互联网也不例外。互联网有它好的时候,也有坏的时候。或者更准确地说,互联网是时好时坏的。
互联网性能的缺陷来自多种来源:
总会有自然的随机事件破坏互联网数据包传输。这些事件包括闪电,太阳耀斑,电噪声,风(把树枝吹到电线上或穿过无线电线路),甚至是老鼠咬坏电缆一样平凡的事情。
网络的性能会受到网络拥塞的严重影响。在将互联网带入家庭和小企业的相对薄弱的链接上,网络拥塞是很常见的。在互联网中更为工业化的部分,大容量的“管道”在运营商间交换点和大数据中心汇集在一起,拥塞现象十分普遍。拥塞不仅仅意味着数据流变得缓慢。拥塞还可能导致数据包丢失,或者可能导致数据包的重复传输或重新排序(通常是由于拥塞引起的包路由变化的副作用)。
网络设备通常性能不足。他们的软件经常有缺陷。而且它们的配置设置经常不适合它们现时要处理的负载。这些缺陷可能会导致设备在处理互联网流量时出现故障,或导致网络不正确地抖动,甚至不连贯地瞬断。
有一些故意的恶意攻击会通过诱导不良行为或简单地诱导大量流量过载来扰乱互联网。
最后,互联网上有很多旧设备。虽然我们很多人认为互联网是现代的东西,但我们应该认识到,今天的互联网已经经历了许多代的协议和实现。这些设备有点像石器时代的工具,落入了我们的现代世界:它们可能能够与其他设备兼容,但效果并不好。
许多网络应用程序在编写的时候就忽略了这些问题。这种对风险的有意忽视使得开发人员很容易快速、廉价地生产出新产品。但这也意味着,一旦产品到了客户和消费者手中,这些产品可能会以奇怪的方式出现各种问题,或者在遇到未经考虑或预期的网络条件时发送崩溃。
什么是网络损伤测试?
网络损伤测试是一种方法,通过这种方法,开发人员可以在各种恶劣网络条件下运行他们的网络代码(包括在该代码上分层的应用程序)和他们的网络产品,而不必花费时间和金钱在互联网上到处寻找异常或不良状况。
网络损伤测试使用特殊的网络工具(网络损伤仪)来创建不寻常、奇怪、糟糕或有问题的网络条件。“网络损伤仪”通常扮演“中间环节”的角色。这意味着网络损伤仪位于被测设备(DUT)和网络其他部分之间。因此,往返于被测设备的每个数据包都必须通过网络损伤仪。
在最基本的层面上,网络损伤仪需要能够构造以下的“标准损伤”:
1、丢包
2、数据包重复
3、包延迟(固定或可变,后者称为“抖动”)。
4、包错误
5、速率限制
6、改变传递数据包的顺序
更复杂的“网络损伤仪”可以通过增加自定义的触发器或者通过API创建突发效应或编排随时间变化的损伤模式的能力来丰富这些标准损伤。一些网络损伤工具还可以更改数据包的内容或创建新的数据包。
可控的损伤
一般来说大多数软件中最薄弱、测试得最少的部分是处理错误和不平常情况的部分,这部分未经测试的代码通常是Bug和安全漏洞潜伏的地方。
网络损伤工具的目的是强制被测设备(DUT)中的软件执行那些在常规条件下不遵循的代码路径。
但是,简单地向DUT发送包噪声很可能会让开发人员感到茫然和困惑。开发人员需要使用能够以可重复的方式定性定量地产生网络损伤的工具进行测试,以便隔离、诊断、修复问题,然后重新测试以确保确实修复了问题。
网络损伤仪有什么用例?
刚好现在外面正在刮起一场大风暴。雨和风正在造成可怕的网络状况。许多数据包丢失,并且数据包延迟范围从几毫秒到几秒。由于这些情况,我的许多应用程序暂时无法使用。暴风雨这种网络状况并不罕见。在这些条件下工作不好的应用程序也很常见。一些应用程序可以很好地、优雅地降级;但许多其他应用程序的失败方式很糟糕,损坏了其开发人员或供应商的声誉。开发网络产品的人如果关心其应用程序或产品在不完美条件下的行为,可以使用网络损伤仪在其开发实验室中重现这些条件。并非所有数据包和数据流都需要以相同的方式被损伤
在如今的家庭或公司网络中,或者随着“物联网”的普及,所有数据包都可能被损伤的可能性越来越小。在典型的家庭或企业网络上,许多流量可能会以高质量,高带宽的路径在本地处理,这些路径不会离开家庭或企业,因此不太可能遇到恶劣的情况。因此,如果损伤设备可以区分“本地”流量和“非本地”流量并在每个流量上施加不同的损伤机制,则很有用。
有时,开发人员可能希望专注于某些类型的流量。例如,IP语音(VoIP)通常比典型的Web浏览对网络条件更为敏感。由于这些原因,如果损伤工具可以区分不同类型的流量,这将非常有用。
人们能期待什么样的结果?
有时糟糕的网络状况会导致应用程序或操作系统代码完全失败;崩溃。从开发人员的角度来看,这些通常是最容易诊断和修复的。从用户的角度来看,它们无疑是不可接受的。但是,应用程序或网络堆栈的降级速度往往比它应该降级的速度更快,或者开始出现奇怪的副作用。我们都经历过语音对话,这些对话变得难以理解,或者听起来像是在回声室中,即使网页浏览没有明显的退化。如果没有网络损伤仪,开发人员很难测试和调整他们的代码,以便让用户获得最好的体验。
由于网络损伤对应用程序的影响通常是微妙的,而不是灾难性的,因此开发人员需要了解被测设备(DUT)的期望行为,并对偏差敏感。例如,如果一个人正在使流式视频应用程序受到损伤,那么影响可能会作为接收屏幕上的视觉斑点而被反映,相当明显。或者,这种影响可能会因为接收到的帧速率的断断续续而不那么明显地反映出来,这会导致一段分散注意力的视频抖动和断断续续。
未使用网络损伤仪进行损伤测试的风险是什么?
对产品供应商来说,最糟糕的事情是发现产品在被客户使用时出现故障或行为不正常,这时候问题诊断和修复成本很高,而且会损害供应商的声誉。网络损伤测试可以帮助您在产品到达客户之前发现并修复缺陷。网络损伤测试不是万能的,但是在产品测试套件中,网络损伤测试是一个谨慎的工具。如果您正在寻找一种可靠、安全的方法,通过模拟各种网络条件来测试您业务的关键应用程序和功能,请访问www.msytest.cn获取HoloWAN网络损伤仪的更多资料,或者联系我们的售前人员获得更多相关的知识。