CPU主要用于接收来自控制机的网络、协议、算法参数并生成实现网络协议的测试套集,它可以直接对被测设备发送或者接收测试流,或者通过自定义总线将测试套集存储在SRAM中,以实现快速的测试;它还实现对外围配套器件的控制,包括DDR、Flash、噪声、日历时钟以及译码等。CPU的PCI总线转换出一个网络,作为测试机的控制口,与控制机进行通信。CPU的串口总线接出一个RS232串口。
CPLD主要用于CPU启动、数据总线的译码、FPGA逻辑配置等处理。
FPGA主要用于网络接口处理和测试流发送、接收。首先,它提供两个软MAC核与PHY芯片相连实现DUT的发送和接收网口;其次,它提供另外两个软MAC核可以允许CPU直接与DUT进行发送接收测试流;也可以调用外部SRAM实现测试流发送接收等操作。FPGA和CPU之间有两种不同的通讯接口,一种是数据总线接口,用于传输基本配置信息、状态信息和SRAM数据;一种是RGMII网口接口,用于传输测试流数据。
2.2.2 软件组成
CPU软件使用裁剪的定制LINUX操作系统,内核版本2.6以上,配IPv4协议栈等。CPU要实现的软件功能比较多,软件模块有以下几个:
(1)与控制机的通信模块:负责接收来自控制机的网络、协议、算法参数以及其他命令,并回送测试结果。
(2)算法实现模块:实现协议中需要的算法。
(3)套集生成模块:这是实现一个协议所需要的IP包的集合,包括发送的IP包和接收的IP包。每个不同的协议将产生定制的套集。每个套集的主要流程就是生成指定的某个协议所需IP包的过程。但是在协议的实现上,会按照协议的要求对相应的字段进行边界测试、正确性和错误测试。并体现在不同的测试流里。
(4)测试流发送模块:将存储在SRAM里的测试流发送至DUT。
(5)测试流接收模块:接收DUT发出的响应流,存储在SRAM里。
(6)结果的协议分析模块:CPU接收到测试流后,将其按照协议要求拆分成各个字段,并与协议进行比对分析。并将结果发送到与控制机的通信模块。
在发送IP包和接收IP包有关联的情况下,比如IV向量由接收包传递过来后才能确定下一包发送的内容,必须由CPU直接进行测试。
在协议比较简单,发送IP包和接收IP包没有关联的情况下,可以将测试套集装载在SRAM里,由FPGA进行测试。这种情况下,也可以测试DUT的性能。
3 工作流程与测试内容
协议一致性测试的主要过程包括:标准测试套集生成、测试执行、结果分析三个部分。标准测试套集是通过分析协议来确定要测试的各个方面,从而产生测试用例的集合;测试执行为测试用例的运行过程;接收数据分析是对测试结果进行分析,从而得到协议实现与协议说明是否一致的判决。如图3所示。
协议一致性测试的内容包括三个方面:一是协议格式、完整性的一致性测试,能够正确识别收到的协议,并且按照协议做出正确的响应,响应的格式要与协议一致。二是测试协议中包含的算法的正确性。要能够正确地加密和解密相应的信息。三是要对协议的实现过程包括握手、协商等进行一致性测试。
4 测试套集的生成方法
测试套集的生成方法理论上有可达性分析与测试序列两种。可达性分析是从一个初始状态出发,生成并检查系统能够到达的所有状态。测试序列方法是针对FSM中的单个转移生成的测试子序列,再将这些测试子序列连接起来作为完整的测试序列。
通用平台对测试套集的生成方法不作限定。因为网络协议千差万别,套用某一个方法是不现实的。因此不论什么方法,即使是手工方法,只要能够正确地诠释协议,生成的测试套集符合套集接口要求都可以直接输入到平台上实施测试。套集可以是完整的协议测试,也可以是某个协议测试套集的一部分。这样大大方便了协议测试套集的调试与测试。
通用平台也提供了一种测试套集的生成方法。就是将协议的分析过程体现在控制机的界面上,在界面上对协议进行分割,确定转移点和子序列,并给出子序列的数据范围。然后CPU的套集生成软件将这些转移点和子序列通过组合连接起来,形成测试套集。
5 结束语
在协议一致性测试的需求越来越迫切的同时,协议的功能越来越强,复杂性也越来越高,使得测试难度越来越大。通用平台的硬件设计为以后协议的发展做好了可持续发展的基础,而软件设计也将提供开源和稳定的接口以供协议的发展,增加对协议的支持。