Page 99 - 《软件学报》2020年第9期
P. 99

2720                                 Journal of Software  软件学报 Vol.31, No.9,  September 2020


                         //测试用例实例:

                         CF_table_add〈table name〉〈action name〉〈match fields〉⇒〈action parameters〉[priority]
                         PC_The entity to be added should not be duplicate

                         TC_table_add ipv4_lpm myTunnel_ingress 0xffffffff/32⇒0x0 0x0
                         EO_Entry has been added with handle N
                                       Fig.14    Test case example diagram
                                           图 14   测试用例实例图
             •   测试用例集示例(如图 15 所示)




























                                             Fig.15   Test case set
                                             图 15   测试用例集
         4.4   测试用例自动生成工具测试
             本节对我们已经实现的 SDN 数据平面软件一致性测试用例自动生成工具进行一致性测试用例生成测试
         实验,该实验选取了 3 个 P4 程序作为测试工具的输入,通过分析生成测试用例覆盖程度验证其有效性.
             •   demo1 含有 1 张表,名为 ipv4_lpm,表中有 3 个动作:ipv4_forward,drop,NoAction,因此,预期生成 3 条表
                项的插入命令、1 条表项的查询命令、1 条表项的删除命令、3 条表项的修改命令;
             •   demo2  含有 3 张表,分别是 ipv4_da_lpm,mac_da,send_frame.其中,表 ipv4_da_lpm 中有 2 个动
                作:set_l2ptr, my_drop,表 mac_da 中有 2 个动作:set_bd_dmac,my_drop,表 send_frame 中有 2 个动
                作:rewrite_mac, mydrop.预期生成 6 条表项的插入命令、3 条表项的查询命令、3 条表项的删除命令、
                6 条表项的修改命令;
             •   demo3 含有 2 张表,分别是 ipv4_lpm,myTunnel_exact.其中,ipv4_lpm 表中有 4 个动作:ipv4_forward,
                myTunnel_ingress,drop,NoAction, 表 myTunnel_exact 中有 3 个动 作 :myTunnel_forward,myTunnel_
                egress,drop.预期生成 7 条表项的插入命令、2 条表项的查询命令、2 条表项的删除命令、7 条表项的
                修改命令.
             如表 2 所示,3 个 P4 程序共 12 条被测控制命令通过一致性测试用例自动生成工具进行一致性测试用例生
         成测试.我们发现:生成测试用例的实际结果与预期结果完全一致,每条被测命令生成的测试用例集都覆盖了该
         控制命令字段所有可能出现的情况,实现了全覆盖.则以上实验验证了面向 P4 编程语言的 SDN 数据平面软件
         一致性测试用例自动生成工具具有有效性.
   94   95   96   97   98   99   100   101   102   103   104