总第10期
2017年9月刊
Test Theory    测论
Test Theory    测论
漫谈新网络测试
文/杨碧辉
分享

在没接触测试之前,很多人认为测试是一个简单并且没有太多技术含量的工作。这种想法其实是缺少对测试的深入了解,如同盲人摸象一般。

产品设计的复杂度是一个平稳提升的过程,而测试的复杂度是随着系统的复杂度以及质量要求呈指数级提高的。当一个系统的复杂度超过一定程度,测试的复杂度会提高到比设计还要高的层次。同样的复杂度下,质量要求每提高一点,测试复杂度同样要上升一个层次,可用、稳定、可靠、90%可靠、99%可靠、99.999%可靠,这些测试标准看似相差不大,但测试工程师付出的努力远非数字所呈现的差别。从99.99%到99.999%,提高万分之一的可靠性,背后的工作量远不止十倍。因此通常在大型的软件研发过程中,开发设计的周期往往短于测试验证的周期,设计的投入也小于测试的投入。

1.SDN测试不简单

在云计算的浪潮下,在应用的高速发展和业务层面的灵活性需求下诞生了SDN。SDN是一个承上启下的一个产品。对上SDN需要对接云平台、虚拟化、运维工具等,对下SDN需要纳管包括交换机、路由器、防火墙、负载均衡、NFV等网络设备。在同层级的,SDN可能还需要对接各种集群技术、开源软件、不同厂商的SDN控制器、不同的操作系统和版本。

因此与以往的网络测试不同,即便是一个简单的特性,也需要在复杂的组网环境下进行验证。需要考虑的情况更加复杂多样,甚至常常超出网络的领域。例如:假使SDN控制器运行在Linux系统上,那么需要考虑不同的Linux系统本身软件的差异;如果控制器依赖其他开源软件,则需要考虑不同的开源软件版本之间可能存在的接口差异、性能差异、稳定性或者开源软件自身的漏洞等因素;如果控制器对接开源OpenStack云平台,那么需要考虑OpenStack I/J/K/L/M/N/O等不同的版本或者相同版本安装在不同操作系统时的差异;上述诸多因素都比以往交换机或者路由器作为一个封闭的嵌入系统所要考虑的外部因素更加多样,更加不可控。

2.新挑战需要使用新思路

1、在方案中测试

在交换机或者路由器产品中,一款产品有几十种特性。一般情况下每个特性会独立进行测试,对于特性本身可能使用所有场景都会进行遍历。在特性之外,还会有专项的组网测试。

而对于SDN,产品本身的特性就决定了SDN不可能孤立测试,必然放在特定的组网环境下测试。考虑到外部因素众多,组合无穷无尽,因此也不可能像交换机那样进行所有的可能组合遍历。这就要求了SDN的测试必须改变策略,目前 SDN的产品测试是固化方案进行测试。以新华三产品为例,目前SDN目前支持在分布式弱控硬件Overlay方案、集中式强控硬件Overlay方案以及集中式强控混合Overlay方案环境下进行特性功能验证测试。

这样的测试思路在西方国家一直比较推崇,但在目前国内的网络环境使用存在弊端。究其原因是在西方国家,销售方案比较固定,用户的使用方式倾向于成熟方案。而在国内的情况比较复杂,网络管理也比较随意,有很多五花八门的使用场景,随之也带来了不少网上问题。因此SDN产品需要市场、研发、用服甚至是用户能够更加深入的去了解方案,多采用主流方案,这样才能有更好的质量保障。

2、敢于“吃螃蟹”

很多人关注谷歌的CEO、小米的雷军是否使用的是自家的手机。如果自家产品都不敢用或者不想用的话,那这款产品肯定不是好产品。新华三在SDN产品测试初期就建立了内部实验局。整个SDN的实验室网络完全是搭建在SDN Overlay网络上。产品进入测试阶段后必须在内部实验局稳定运行一段时间,在实际使用环境中测试新产品,这个大胆的尝试给产品开发带来了极大好处。

● 内部实验局环境比外面的环境还要复杂,比测试人员的独立环境复杂得多,更容易发现复杂环境可能产生的问题。

● 实验局环境更接近现网环境,业务多种多样,而且都是实际业务而不是模拟业务,更容易发现业务差异带来的问题。

● 内部实验局的规模不小,性能压力相当于一个中型的数据中心,能够及时发现性能问题导致的功能影响;目前已有的规模已经达到了几百台服务器、上百台交换机、上千台虚拟机或者主机,这个规模还在逐渐增加。

● 培养了测试团队的运维思维,这是很多产品开发和测试容易忽略的一个重要思维,也是很难培养的一种测试思维;

● 对稳定性的要求大大提高,一旦出现问题,所有人的工作必然受到影响;

● 对问题的定位要求较高,实验局环境相当于客户的现场环境,影响巨大,因此定位要求要快并且不能在上面做实验,对定位问题的技能要求也相应提高。

后续随着SDN产品在多个不同研发中心展开,还将启动跨地区的SDN内部实验局。

3、自动化验证

在现有的互联网、云计算和大数据浪潮的推动下,要求软硬件产品的交付周期越来越短,特性开发的周期从以往的半年一年缩短到三个月、一个月甚至是一周时间。这种情况下,纯手工的测试已经很难满足如此短并且高频度的版本交付计划。因此近几年来,持续集成和持续交付的情况也越来越多。SDN产品测试也同样在这个浪潮下做出相应的改变,加大了自动化的投入,组建专门的自动化小组,专职开发自动化脚本。版本验证周期大大缩短,版本验证遗留基本功能问题的可能性也大大降低。SDN产品测试的自动化目标是特性验收通过合入后,之后该特性不再通过人力手工进行版本验证,版本验证全部由自动化完成。

4、利用好工具,必要时开发工具

由于SDN方案复杂,涉及整套云计算方案的方方面面,涉及的技术也多种多样。很多技术在网上有很成熟的测试工具,并且开源免费。要做好测试需要研究活用这些成熟的工具,并推动测试人员掌握。例如使用iPerf进行虚拟机之间的转发性能测试;使用PingInfo进行虚机联通状态的长时间监控;使用Zabbix监控SDN控制器、服务器、交换机、业务虚机的CPU利用率、内存使用情况、服务状态、业务中断时间等等,非常强大的一个运维工具;使用SikuliX进行图形化界面的识别和自动化操作;使用Paramiko进行远程登录、自动化执行和批量操作;使用LoadRunner测试并发性能;使用Autoit进行GUI的性能压力测试等等。各种开源工具不一而足,满足特定场景下的特定测试,真正做到又快又好。

不过SDN毕竟还是非常新的东西,技术也是日新月异。传统的仪器厂商很难跟上设备商的步伐,而且SDN难以标准化,定制化的现象非常明显。这就会出现很多功能或者性能测试没有现成的测试工具可以使用。针对这种情况,SDN产品也是投入了大量的人力开发配套的测试工具,满足产品内部的性能压力测试需求。这也对测试提出了更高的要求,必须有一批同时精于编码也精于测试的测试人员。比如新华三SDN产品开发了的OVSSimulator测试工具,模拟OVS性能测试,同时也帮助了SDN产品在性能压力上持续优化改进。

3.小结

“开发”和“测试”是产品研发的两个阶段,前者希望产品没有问题,后者希望在“测试”阶段尽可能的发现问题,两者持续不断的博弈,是确保产品稳定的关键。随着产品开发复杂程度的增加,测试的难度也在不断加大。如何在新网络中运用新思维,发现更多新问题,值得产品测试人员深思。

分享到
关闭