- 文章名称:OFART: OpenFlow-Switch Adaptive Random Testing
- 发表时间:2017
- 期刊来源:---
摘要
- 问题:
如果转发设备的正确性没有验证,这将影响这个网络。然而,手工进行每个测试将耗费大量时间,这意味着需要一个自动化工具。 - 解决:
本文提出ART(Adaptive Random Testing)技术,它从控制器角度把OpenFlow交换机看做黑盒,进行自动化测试。
1 介绍
软件让我们更好的控制管理网络,但是副作用是导致更多的缺陷,根据缺陷的严重车鞥度,会造成丢包到整个网络瘫痪的后果。故测试网络功能的正确性是非常重要的一项任务。
本文提出在控制器的视角对OpenFlow Switch看做黑盒进行功能性的测试方法。控制器为功能性的测试产生测试数据包,并且将数据包放到交换机,获取从交换机出来的结果,与理想结果进行对比。产生数据包的技术成为ART技术。我们使用一个框架集成自动测试执行、测试生成、测试选择以及测试结果对比功能,以减小时间耗费等。
2 背景
2.1 Black-Box Testing
黑盒测试不需要知道内部的构造知识,本文从控制器角度,将交换机看做黑盒。
2.2 Adaptive Random Testing
RT可以用于测试生成,因为它有最简单、流行的优势。缺点是,由于随机测试和选择,在错误检测和测试生成两者之间有平衡性能的问题。故提出ART,可以更高效地产生测试数据并且基于输入域的失败模式,同时有大量的方法。本文用FSCS-ART,在固定大小的测试候选集和执行测试之间以距离选择下一个测试。
2.3 Testing SDN-OpenFlow Switch
OFTEN被视为黑盒子,因此它通过状态空间探索技术进行集成网络测试并检测未发现的不一致性[13]。通过简单处理,我们提出对集成网络测试的方法。ModelCheck技术存在预先配置的开销,SOFT检查不同OpenFlow代理的功能等效性,以测试互操作性。各个不同的OpenFlow代理的功能等同性是检查它们是否通过符号执行返回相同的结果。
ATPG基于拓扑组织的信息产生测试数据包并且建议产生最小数据包的方法。FlowTest使用AI Planning Tool[15],InSP使用数据包模板表和流表产生数据包。J.Yao 提出一种黑盒测试方法及工具[4],基于OpenFlow switch配置,形式化模拟交换机为配置语言,基于此模型后建立Data Graph和Data Paths,再通过这两者创建测试样例,缺陷是交换机的状态经常改变,不能够立马用于交换机模型。
3 OFART: OpenFlow Switch Adaptive Random Testing
- OFART包含三个部分:
- Test Packet Generation
- Test Selection
- Test Execution
3.1 Overall
图1为OFART架构的整体描述。
首先test generators 创建数量为N的测试数据(Test Data),存于Test DB。Test Selector随机选择N个数据中的一个数据。然后依据选择的数据,建立Test Pattern(JSON格式写的测试脚本),发送给Tester,Test依据Test Pattern创建数据包,发给对应交换机,得到交换机处理的输出包,Test Executor将输出包与期望的数据包对比判定pass或者Fail。判定的结果将发送到Test Selector,Test Selector从Test DB选择10个候选test data,组成候选集(Candidate Set),并且与最近执行的数据具有距离值。如果结果为Pass,Test Selector选择最远距离的Test Data,如果结果为Fail,它将其存入Fail DB,再选择最近距离的Test Data。选择到的Test Data 将发送到Generator,并且制作为一个test pattern。如上图所示。
3.2 Adaptive Random Test Packet Generation
Test Pattern是JSON格式,用来测试RYU中的OpenFlow交换机。Test Pattern包含Prerequisite,Ingress Packet,Egress Packet。Test Generator通过ART技术,产生JSON格式的Test Paterr。接着Test Pattern发送给Tester,然后Tester将其翻译,并产生Test Packet给交换机。所有的过程称之为ARTPG(Adaptive Random Test Packet Generate ).
3.3 Similarity-Based Test Selection
FSCS-ART基于候选集和已经执行的测试之间的距离选择测试的数据。下一个数据将选择与上次执行测试数据最远距离的数据。Numerical Input Domain可以通过Euclidian distance测量距离,但是对于OFART,Test Data的每个因素有大量的范围和形态。。为了解决这个问题,我们基于测试相似性,在Tests之间定义了距离(distance)[为了解决这些问题,我们根据测试的相似性定义了测试之间的距离]。换言之,测试的子集之间有高度相似性,并且其他的功能有很低相似性,因此,测试高度相似性有短的权重:short distance,低相似性有短的权重:long distance。
Selector通过TestDB随机选择的测试数据发送给Generator。然后,在计算完选择的测试数据和随机选择10个候选测试数据集合的距离后,将当前首次的随机测试数据(刚开始没执行过的数据)暂时记为最远的测试,最近的测试。通过Generator和Test接收到一个测试结果(Pass/Fail)后,如果结果为Pass,将发送最远的测试数据给Generator,否则,发送最近的。
4 Evaluation
为了评估所提出的方法,我们使用F测量来测量有效性,F测量是检测第一缺陷所需的测试用例的数量。 在Open vSwitch的'SET_DL_DST'函数中注入缺陷以进行F测量。看OFART和随机测试检测出缺陷需要的测试样例以及时间。
OFART的性能比随机测试高。
5 Conclusion
本文使用ART技术,为了让SDN交换机进行功能测试,提出了一个框架自动化这个测试。。在开发函数中系统地验证回归测试和测试程序时,可以使用OFART。测试员使用框架进行测试将简单很多。运用ART技术,特使是基于Failure Pattern进行处理的,因此这要比随机选择的方式要高效,并且通过自动化,在重复动作功能的测试耗费时间将降低。
存在的疑问
- 初始的测试数据包怎么得到? 文中提到是由test generator创建N个Test Data,具体的话还是不知道怎么创建的。
- 可以对带状态功能进行测试吗? 个人觉得如果可以,那与控制器交互频率也太高了,每个状态的变化都是一次发包接收包检验包的操作,开销大。另外做的随机选择好像就没有必要了,而且不能够做到完全覆盖测试。根据数据包的产生和随机选择数据包来看,不是针对带状态功能的测试,而是普通交换机的功能测试。