TISec协议实现一致性测试是验证协议程序是否实现协议规范所描述的功能,是保证协议实现质量的一个必需而且十分重要的手段。TISec协议实现一致性测试根据TISec协议标准提炼出测试条件和要求,由此来确定测试目的,如协议必备的行为、测试框架与被测协议交互、发送和接收数据单元格式等,而协议一致性测试是无法应用常规的系统测试方法开展的,测试难度不言而喻。为实现TISec协议实现一致性自动化测试,通过建立针对TISec协议的测试框架来承载协议,并提供有效的用例集合注入协议运行,分析协议执行的结果来判定协议实现的质量。
TISec协议实现一致性测试的目的是保证一个标准化协议的不同实现之间能够成功地进行通信。一般说来,协议标准是使用自然语言描述,开发人员对于协议的语言描述理解不同,可能会导致不同的协议实现,甚至出现错误的实现。即便协议实现正确,也不能保证不同的实现彼此之间能够准确无误地通信,而且同一协议的不同实现其性能也有差别。协议一致性测试的过程是利用测试序列集,在一定的网络环境下,对被测实现(Implementation Under Test,IUT)进行的黑盒测试,通过比较IUT的实际输出与预期输出的异同,判定IUT是否实现了协议标准。
测试集编辑器:测试人员在对协议文本描述充分理解的基础上,按照测试要求,利用编辑器来设计适合于程序处理的形式化描述的协议测试集;测试集生成器:依据PICS表来选择测试集,产生出对该实现进行测试所需要的可执行测试集;测试执行:用可执行测试集对TISec协议进行测试,TISec协议返回的协议数据单元(Protocol Data Unit,PDU)由接收模块处理;测试结果生成:将测试产出的结果和协议文本描述的规格生成进行比对,通过对比结果来判断是否符合要求,并反馈给人机界面。
从TISec协议文本中提取支持协议运行的关键因素,即安全关联参数(Security Association Param,SAP),除去一些基本固定参数外,协议运行时的可变安全关联参数多达9个,每个可变参数有2~8个可变值,为保证测试的全面和完整,将每个参数的取值排列组合后的SAP集合数量非常巨大,所以为方便测试框架对输入信息和输出结果的集中处理,建立用例集合模型CASE[i]:
EVENT[i]:{event1 | event2 |…| eventM}表示通信事件的全部可能集合,该集合值则根据IUT成功解析SAP[i]后,可执行的动作设定;
OUTPUT[i]:{output1 | output2 |…| outputN}表示输出结果的全部可能集合,该集合值由IUT根据输入条件SAP[i]或SAP[i]&EVENT[i]运行后产生;
EXPECT[i]:{expect1 | expect2 |…| expectP}表示期望结果的全部可能集合,该集合值从协议文本中提取。
测试框架抽取CASE[i]中某一用例注入到TISec协议实现,TISec协议实现对该用例的SAP[i]或SAP[i] & EVENT [i]作为条件进行执行,这些用例集的预期结果包含四方面:TISec协议实现对合法SAP的响应、TISec协议实现对不合法SAP的响应、TISec协议实现对合法事件(SAP合法)的响应、TISec协议实现对不合法事件(SAP合法)的响应,并将响应结果填写到OUTPUT[i]中,此时的OUTPUT[i]回传给测试框架,测试框架将该结果与EXPECT[i]中指定的结果进行比较,得出该用例是否通过。如通过测试框架启动TISec协议,注入合法SAP[i]参数,TISec协议实现先进行身份鉴别和平台鉴别,然后进行SAP参数的协商,按照参数指定动作进行状态检测和控制服务,建立数据通道进行通信,在数据通信过程中要对数据进行校验,加解密等处理,TISec协议的整个处理过程关键点均有输出到OUTPUT[i]中。
由于用例数量巨大,如果采用手工测试,难免出现漏测,为避免漏测和手工测试修改参数出现错误的情况,基于上述模型利用计算机程序来完成十分方便。在开发框架中利用Python语言(一种面向对象的解释型计算机程序设计语言)编写程序,容易将上述用例集合模型转换成计算机程序,利用程序对用例进行筛选和调用,很大程度上方便了测试,达到了利用测试框架进行自动化测试的目的。
通过上述TISec协议测试方法可以看出,一致性测试作为协议实现测试的一个重要环节,其目标就是证明协议描述是否得到正确实现。同时,TISec协议本身的特殊性和复杂性无疑会给手工测试带来大量重复工作,不过当在一致性测试中采用正确的自动化测试方法,测试的有效性和真实性显著提高,最终使得TISec协议的实现更可靠,更完整。