如何正确的采购到性价比最高的网络损伤仪?我们需要在购买前对网络损伤仪的7个方面进行考量。
多年来,人们一直对广域网模拟器保有高度关注。广域网模拟器是一种设备,可让您在局域网中模拟出广域网环境,我们也称它为网络损伤仪。
局域网又快又好,广域网又慢又迟钝。在局域网中表现良好的应用程序一旦运行在广域网上,可能就会出现各种各样的问题,给用户带来糟糕的体验。
现如今,这些问题随着广域网越来越复杂而变得更加突出。与传统 WAN 不太一样的是,现在各种各样的网络共同构成了广域网,如:2G、3G、4G、5G、卫星、云、MPLS、专用电路、互联网、LoRaWAN 等。因此,“ WAN 模拟器”已演变为更通用的“网络模拟器”。
虽然广域网的组成变复杂了,但是在 LAN 中运行良好的应用程序在非 LAN 网络(例如 4G 网络)中可能会很糟糕,这仍然是绝对正确的。
因此,网络损伤仪的工作重点是经过一系列的测试,让您能够确定您的应用程序是否已经可以完美地适应真实多变的广域网。无论广域网环境有多糟糕,您的应用程序依然能保持正常运作。与在真实的广域网中测试,使用网损伤仪进行测试,节省了大量时间和成本。
网络损伤仪是一件神器,但是如何挑选适合自己产品的网络损伤仪呢?我们需要从以下7个方面来考虑。
1、网络损伤仪接入网络的方式
这个问题乍一看很奇怪,但实际上非常重要。在产品发售之前,您的应用程序可能已经在实时网络、测试或开发环境中运行测试过了。在测试实验室环境下,您可以给应用程序建立一条专属的网络线路,给它安排许多测试用例。但是当我们通过网络损伤仪来对应用程序进行测试时,我们不应该再为应用程序建立单独的链路。相反,我们要将网络损伤仪串接在测试网络中。网络损伤仪应该可以适应和桥接不同的路由;支持NAT,可以识别静态和动态路由;可以串接在各种不同网络类型之间。只有这样,我们才能将网络损伤仪轻松的插入我们现行的网络中,并且做到对现有的环境干扰最小甚至做到无干扰。
2、易用性
我使用过很多产品,有些经常在用,有些则用得比较少。但是,坦率地说它们都很难使用。这导致我每次使用这些产品都非常痛苦。特别是一些不经常用到的产品,每次使用都要重新回想一下使用方式,这使得产品变得更加难用。
一款简单好用的网络损伤仪首先应该做到的是简单易用。我们可以从以下几方面来评估网络损伤仪是否易用:
- 它应该拥有许多预先准备好的网络模型。例如 2G、3G、4G 、城市到城市(如芝加哥到纽约)等,通过选择这些现成的网络模型,能够节约许多的测试时间。
- 如果我们需要创建更复杂的网络结构,例如多链路、网状、中心和辐条等,也应该选择拥有开箱即用的配置和向导的网络损伤仪。这些配置可以帮助我们简单地组建复杂的网络。
- 当我们在测试我们的应用程序时,想要改变网络环境参数时,例如良好的 4G 更改为有损 4G(信号变差),那么一款好用的网络损伤仪应该可以实现实时的、无缝的网络场景切换。而不是改变一个参数,需要暂停测试,编写一堆脚本。
3、有价值的损伤类型
在与一些用户交谈时,我发现一款网络损伤仪能提供的损伤数量往往会是客户最先考虑而且起到决定性作用的因素,例如产品 X 有 200 个损伤类型,产品 Y 有 300 个损伤类型,所以Y一定比X好,对吧?其实不然!
这就像数码相机的好坏一样——12兆像素的相机一定比8兆像素的相机好,对吧?也没有!稍微了解一些相机的人就知道镜头的质量同样很重要(拥有 1200 万个模糊像素有什么意义?)。而且对于相同尺寸的内部屏幕 (CCD),单个像素上的光线较少,因此像素越多,低光性能可能越弱。
从相机这个例子可以看出,对于网络损伤仪来说:比较损伤种类的多少是没有意义的——重要的是你需要那些损伤类型,并且这些损伤类型对模拟真实的广域网环境起到了决定性的作用。
4、快速分析
您要如何知道您的应用程序受到您“拨入”的特定网络条件的影响有多大?有些影响是我们可以用肉眼观察到的,比如:应用程序在极差的网络条件下崩溃或超时,手动和自动测试都将失败。
如果数据受到了额外的时延,那么问题就会出现。这个时延是多大?它导致数据慢了多少?对于用户来说是可以接受还是不可以接受?
一款优秀的网络损伤仪应该对每一项损伤数据都进行统计,将生成的最终数据报告显示给测试人员。这么一来,才能解放人力,使测试人员不必时时刻刻待在损伤仪旁边记录数据。
好的测试报告还能为您提供一些建议。例如,通过测试报告,您可以分析出当您将应用程序服务器从本地迁移到云时会发生什么,从而为您节省更多时间。
5、自动化测试
在大多数测试中,都不会邀请真实的用户来进行测试。即使是在 UAT(用户验收测试)中,在测试刚刚开始时,都不会优先选择真实的用户来做测试。
因为,对于大多数测试而言,人员是非常昂贵的资源。所以,如果网络损伤仪可以提供自动化测试可以大大节约人力资源。
对于不同的产品,使用的测试工具也会有差别:
- 测试自动化产品——测试应用程序功能,如 Selenium
- 测试负载生成器——加载时测试应用程序性能
- 你自己的脚本——通常用 Python 编写
- Shell 脚本
- 持续集成软件——比如 Jenkins
根据您的自动化需求,控制网络损伤仪的方式也有许多:
- REST API(有时称为 RESTful API——使用 http(s) 方法 GET、PUT 等来控制产品
- 命令行界面 (CLI)
- IP 套接字接口
现在国内大多的网络损伤仪都只提供 Python API 和 RESTful API。
但是,无论你选择哪个 API,都要小心一些语言陷阱。例如,你咨询网络损伤仪厂家:“你有API吗?” 他们回答:“是!”。但是要确保这些产品具有自动化所需的所有功能,而不是只能提供其中一部分功能的接口。
6、并发操作
一些网络损伤仪只支持单用户使用。意味着只有当第一个用户使用完损伤仪之后,另一个用户才可以开始使用。这就造成了对网络损伤仪的争用,大大增加了测试周期的长度。此时,为了完成测试任务,您不得不购买多个这样的网络损伤仪。
如果一个网络损伤仪可供多个用户(或团队)同时使用,这就可以节约测试时间与经费。
对于可以同时并发操作的网络损伤仪有一些要求:
- 用户应该能够在不影响其他用户的情况下启动、停止和修改他们的网络损伤,就像是每个用户单独操作了一台网络损伤仪;
- 需要有一种可以将一对物理端口(或 vNIC)拆分为多个子接口、虚拟端口或软端口的方法,就是网络损伤仪应该可以创建多条虚拟链路;
- 网络损伤仪应该存在一个保护机制,将不同用户分隔开来,防止他们对有限资源的争抢。
7、支持
我们都喜欢开源的或者免费的软件。 但是,这些免费的软件一旦出现了我们看不懂的问题,那只能在网上寻找答案。对于常见的产品来说,问题的解决方案会很多。但对于一些少见的或者专业性很强的产品,如网络损伤仪,网上关于这方面的信息很少,导致问题很有可能无法得到及时的解决。
第二个问题是谁负责产品的安全?假如我们只在一个没有网络的测试实验室来使用它,那可能没问题。但对于 DevOps、持续测试、开发来这些需要连接广域网的测试来说,产品的安全保障非常重要。而且,就算把它部署到孤立的实验室中,也难免会遇到安全问题。
第三,免费开源的产品通常不会有专业的团队为它维护和升级。例如,许多新的技术与网络模型都是免费的网络损伤仪没有的。
因此,拥有来自成熟供应商的适当支持的产品,应该是会定期安全更新、错误修复和推出新功能,以解决上述的问题。
了解更多关于网络损伤仪WANsim的信息:http://www.wansim.top