《ipv6协议一致性测试的研究与实现》由会员分享,可在线阅读,更多相关《ipv6协议一致性测试的研究与实现(63页珍藏版)》请在金锄头文库上搜索。
1、 分类号 TP393.0 学号 09061121 密级 公 开 工学硕士学位论文 IPv6 协议一致性测试的研究与实现协议一致性测试的研究与实现 硕士生姓名 林 洪 学 科 专 业 计算机科学与技术 研 究 方 向 计算机网络 指 导 教 师 陈晓梅 副研究员 国防科学技术大学研究生院国防科学技术大学研究生院 二一一年十一月二一一年十一月 IPv6 协 议 一 致 性 测 试 的 研 究 与 实 现 国 防 科 学 技 术 大 学 研 究 生 院 Research and Implementation of IPv6 Conformance Testing Candidate:Hong Lin
2、 Advisor:Xiaomei Chen A thesis Submitted in partial fulfillment of the requirements for the degree of Master of Engineering in Computer Science Test(S2 to S3) = a/x,a/y,a/z,ri/null; Test(S3 to S1) = a/x,a/y,a/z,a/x,ri/null; Test(S1 to S4) = f/t,b/x,ri/null; Test(S4 to S5) = f/t,b/x,b/y,ri/null; Test
3、(S5 to S6) = f/t,b/x,b/y,b/z,ri/null; Test(S6 to S4) = f/t,b/x,b/y,b/z,b/x,ri/null; Test(S4 to S7) = f/t,f/p,c/x,ri/null; Test(S7 to S8) = f/t,f/p,c/x,c/y,ri/null; Test(S8 to S9) = f/t,f/p,c/x,c/y,c/z,ri/null; Test(S9 to S7) = f/t,f/p,c/x,c/y,c/z,c/x,ri/null; Test(S7 to S1) = f/t,f/p,f/w,a/x,ri/null
4、. 此序列是基于构造后的 FSM 状态图产生的, 其中含有因为构造新的 FSM 状态图 添加了状态转移而造成的冗余,是不能作为最终的测试序列用来实现生成测试例 的。因此,需要对这样生成的测试序列进行修改和精简,使其成为满足图 3.5 的测 试序列。 精简过程我们可以采用下面这个算法来进行。 国防科学技术大学研究生院工学硕士学位论文 第 18 页 1 32 a/x a/y a/z 7 9 8 c/x c/y c/z 4 6 5 b/x b/y b/z f/t f/p f/w 图 3.4 构造后的 FSM 状态图 Modify_UIO( R,T,E)/*R 为基于构造后的 FSM 状态图所生成的所
5、有状态转 移的测试例的集合,T 为原 FSM 图中三个孤立状态图各自的起始点组成的集合, E 为构造的有向边的集合*/ while( 从 R 集合中取出一条生成的测试序列 ) if(测试序列的前后两个状态节点都是属于集合 T) delete 该测试序列; elseif(测试序列中包含 E 集合中的元素) 删掉测试序列中所有 E 中的元素, 保持剩余元素在该序列中的 顺序不变。 return; 通过用该算法对构造后 FSM 状态图生成序列的修改,我们可以得到新的测试 序列如下: Test(S1 to S2) = a/x,a/y,ri/null; Test(S2 to S3) = a/x,a/y,
6、a/z,ri/null; Test(S3 to S1) = a/x,a/y,a/z,a/x,ri/null; Test(S4 to S5) = b/x,b/y,ri/null; Test(S5 to S6) = b/x,b/y,b/z,ri/null; Test(S6 to S4) = b/x,b/y,b/z,b/x,ri/null; Test(S7 to S8) = c/x,c/y,ri/null; 国防科学技术大学研究生院工学硕士学位论文 第 19 页 Test(S8 to S9) = c/x,c/y,c/z,ri/null; Test(S9 to S7) = c/x,c/y,c/z,c/
7、x,ri/null。 3.3 算法验证和比较算法验证和比较 下面我们来验证这个新生成测试序列的正确性。 验证方法为, 分别对原始 FSM 状态图(图 3.3)采用 UIO 方法生成测试序列,因为 FSM 状态图没有经过修改, 所以可以保证生成的 UIO 序列是正确可用的。 基于原始 FSM 状态图生成的测试序列为: Test(S1 to S2) = a/x,a/y,ri/null; Test(S2 to S3) = a/x,a/y,a/z,ri/null; Test(S3 to S1) = a/x,a/y,a/z,a/x,ri/null; Test(S4 to S5) = b/x,b/y,ri
8、/null; Test(S5 to S6) = b/x,b/y,b/z,ri/null; Test(S6 to S4) = b/x,b/y,b/z,b/x,ri/null; Test(S7 to S8) = c/x,c/y,ri/null; Test(S8 to S9) = c/x,c/y,c/z,ri/null; Test(S9 to S7) = c/x,c/y,c/z,c/x,ri/null。 通过对比,我们可以看到,基于原始 FSM 状态图生成的测试序列与基于构造 后的 FSM 状态图生成然后再经过算法修改的测试序列是一致的。由此我们可以看 出,B- U 法是有效和可信任的。 在有多个孤
9、立 FSM 状态图的情况下, 按照传统的 UIO 方法生成测试例需要对 每个状态图分别进行一次完整的生成过程,由于算法本身的复杂性导致多次生成 过程的不可控性增大,错误发生概率增大。B- U 法由于使得多个孤立 FSM 图能够 在一次就全部生成测试序列,提高了生成测试序列的效率,简化了生成的过程, 使得生成测试序列的过程更易于理解和操作,比较传统的 UIO 方法更加优越。 在这里,我们定义一个单位叫做操作系数。生成测试例过程中对每个状态节 点的一次访问的操作系数为 1。如图 3.5 所示,对于一个包含 m 个状态转移的完整 状态图而言,生成测试序列的操作系数为 m,但是,如果状态图不完整,例如
10、如 果有 n 个独立的状态图, 那么对整个状态图生成测试序列的操作系数就应该为 nm, 独立状态图越多,那么操作系数越大,就意味着生成过程越复杂,越容易出错。 如果采用 B- U 法,那么生成测试序列的操作系数就为 m,大大降低了生成测试序 列的操作复杂性。 国防科学技术大学研究生院工学硕士学位论文 第 20 页 0 1 2 3 4 5 6 7 123456 n m 现有方法 B-U法 图 3.5 B- U 法和现有方法操作系数比较 3.4 本章小结本章小结 本章介绍了现有的基于有限状态机的测试序列生成算法,这些算法在协议一 致性测试的历史上都曾经扮演过重要的角色或正在扮演重要角色。其中 UI
11、O 方法 是当前主流的测试生成方法, 但是 UIO 方法在 IPv6 测试序列生成过程中由于状态 图的特殊性存在一定的障碍。作者根据 IPv6 有限状态机的特点提出了基于桥接的 优化测试生成方法 B- U 法,很好的解决了问题。本章详细介绍了 B- U 法的算法思 想和算法过程,并对算法进行了验证和比较,最后以邻居发现协议实际生成过程 为例子陈述了 B- U 法在 IPv6 一致性测试中的应用。 国防科学技术大学研究生院工学硕士学位论文 第 21 页 第四章 IPv6 协议一致性测试系统设计 4.1 测试系统标准化平台设计思想测试系统标准化平台设计思想 90 年代后期和 20 世纪初期,由于对
12、测试过程的通用性和可复用性缺乏重视, 导致测试过程成为了缩短新产品上市时间的主要阻力。当今,许多公司面对的是 一个更加复杂的具有混合架构的自动化测试系统,而不是使用不同厂商的测试设 备来进行测试那么简单。许多大公司都希望有一种技术能够对测试系统的开发、 部署、调试各个环节所涉及到的人员、工艺、技术等进行优化,从而最大程度降 低测试成本。实践证明,开发一套通用的测试平台可以有效降低测试成本,同时 具有可复用、减少额外开支等优势48。 为了本系统能够具备除了 IPv6 一致性测试以外还能对其他协议进行一致性测 试的功能,本系统在设计之初也采用了标准化平台的设计思想,力求系统具备良 好的可扩展功能,
13、能够在系统上简便的添加别的协议的测试集。 一个通用的软件架构是实现标准化测试的基石。一个通用的软件架构要能够 提供完善的测试设备接口。而一个模块化的通用软件架构能够非常方便的实现函 数模块、数据库、报告记录、硬件驱动、操作界面接口等共享。这种模块化保证 了可以方便的植入已有测试脚本和代码,从而避免了重复的代码编写。随着通用 测试平台及标准化测试的不断发展,使得开发者能够集中精力关注于开发测试序 列及 I/O 编程,而不需要花费精力开发整个测试管理部分和各种接口。 因此,本系统在设计以及在实现过程中,都严格按照模块化设计思想,系统 按功能划分模块,模块之间采用标准化的接口调用。这样的的设计使得系
14、统能够 有很好的可扩展性,模块有很好的可重用性,系统的性能也非常稳定。 4.2 IPv6 协议测试系统的体系结构协议测试系统的体系结构 4.2.1 系统总体结构 该系统是本人所在团队设计完成的一个使用方便,功能全面且可扩展支持多 协议的 IPv6 协议一致性测试系统。图 4.1 是该系统的总体结构图,我们用该结构 实现对被测设备的远程测试(关于远程测试的内容已在第二章中阐述)。该系统 按照功能划分采用模块化设计,各个功能模块各司其职,最大程度的实现模块功 能的独立性。这样的设计好处就在于软件结构清晰,模块代码可重用性强,功能 可扩展性强。如图 4.1 所示,系统依据功能分为四个模块,分别是用户
15、层、测试集、 公共函数及数据结构、协议栈。 国防科学技术大学研究生院工学硕士学位论文 第 22 页 底层网络支持 被 测 实 现 用户层 测试集 公共 函数 及数 据结 构 协议栈 图 4.1 系统总体结构 4.2.2 用户层子模块 用户层子模块是测试系统与用户交换信息的窗口,便于用户在协议一致性测 试的各个阶段与测试系统保持交互联系,如图 4.2 所示。用户层子模块的主要功能 包括两个: (1) 执行命令行选项和辅助文件; (2) 为测试系统与用户之间提供交互信息。 在该系统中,用户对软件的操作主要包括两个方面,用户输入命令行和执行 辅助文件。用户输入的命令行主要用于选择执行测试集和测试例,并且选择需要 的辅助文件。辅助文件是用户事先编辑好的,用于提供用户所选择的测试集所需 的相关参数和配置信息。 参数和配置信息包括: 测试机和被测设备的网络地址, 被测设备 MAC 地址等。 选择执行测试例过程中的反馈信息包括:1、对辅助文件中提取出的信息的正 确性验证结果;2、测试机和被测机前期交互的细节;3、所选择执行的测试例调 用执行是