《ATF脚本开发初级培训.ppt》由会员分享,可在线阅读,更多相关《ATF脚本开发初级培训.ppt(74页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ATF脚本开发培训Huawei-3com 测试平台开发部ATF脚本开发培训基本概念脚本运行环境ATF脚本开发基本概念vATF是自动测试框架(Automation Test FrameWork)的缩写。该框架提供了丰富的脚本运行和管理接口。vATF脚本是基于ATF开发的自动化测试脚本。其最大的特点是脚本开发环境独立于运行环境,具有良好的可移植性。基本概念功能层驱动层测试用例测试日志测试报告VTP扩展测试仪库其它库自动测试框架测试逻辑层ATF脚本开发培训基本概念脚本运行环境ATF脚本开发脚本运行环境脚本运行环境脚本编辑结果输出文件列表ATF脚本开发培训基本概念脚本运行环境ATF脚本开发ATF脚本开
2、发vATF脚本框架v测试床v逻辑拓扑v测试用例v运行脚本ATF脚本框架v测试床:描述实际的物理环境v逻辑拓扑:描述测试例需要的组网环境v测试脚本:实现设备配置和检查测试脚本逻辑拓扑测试床DUT1DUT2P1P2E0/0S1/0E0/0E0/1E0/1S1/0DUT1 Config“display current-configuration”DUT2 Config“display current-configuration”DUT1 Config“interface$intf(DUT1,P1)”DUT2 Config“interface$intf(DUT2,P1)”脚本中的描述都针对逻辑设备脚本
3、中的描述都针对逻辑设备DUT1,DUT2RT2RT3RT1拓扑映射拓扑映射使用使用ATF脚本开发ATF脚本框架测试床逻辑拓扑测试用例运行脚本测试床的基本格式测试床在扩展名为*.tbd的测试床文件中描述包括设备描述和连接描述LSW1 type=S3000 interface=Ethernet0/1,Ethernet0/2,Ethernet0/3 map-priority=3 access-name=3026-1 access-line=console access-channel=com1 initial-config=032 system sysname 3026-1 LiNK;Link De
4、scription link1,LSW1 Ethernet0/1,LSW2 Ethernet0/4设备名称设备名称设备类型设备类型物理端口物理端口访问名称访问名称访问方式访问方式访问通道访问通道初始配置初始配置连接描述连接描述设备描述设备描述连接描述连接描述映射优先级映射优先级测试床描述说明:设备名称n设备名称:设备名称:字符串表示的设备名称,可以任意取名字,但不同设备之间不能重复,最好只使用字母和数字建议:设备名称和access-name保持一致,也就是和VTP窗口名称保持一致,这样可以更方便脚本调试 测试床描述说明:设备名称n设备类型:指定设备的类型,最好是详细的类型信息,如S3026,不
5、能为LanSwitch等其他的设备类型还有PC,Smartbits,RouterTestern目前支持的设备类型:VrpDeviceVrpRouter804080428043VrpLanswitchS6500S8500S3000SmartbitsRouterTester测试床描述说明:物理端口n物理端口:实际参与组网的端口名称,要求引号内以逗号分隔,中间不能有空格出现.(e0/1,e0/2会出现错误).说明:物理端口和连接描述所用到的端口可以不一致,ATF没有进行强制检查,但会给出提示信息测试床描述说明:映射优先级n映射优先级:拓扑映射时,选择该物理设备做为DUT的优先级,取值范围为0-3,默
6、认值为0说明:该优先级和逻辑拓扑映射有关,如果逻辑拓扑描述中存在DUT1,DUT2或SUT1,SUT2这样的设备,则在满足拓扑条件的情况下,按照物理设备的优先级,优先级高的物理设备优先被映射到DUT1上;如果多个设备指定的优先级相同,则按设备名称的字典序排列测试床描述说明:访问名称v访问名称访问名称:对于测试设备,指在VTP中连接当前设备所使用的窗口名称;对于Smartbits可以设置成字符串smb;对于RouterTester,为RouterTestere控制连接的lablenamev访问方式访问方式:在VTP中连接当前设备采用的方式;如果是串口连接,用console表示;如果是Telnet
7、方式连接,用telnet表示;测试床描述说明:访问通道n访问通道访问通道:运行脚本的计算机与所描述设备之间建立连接的通道说明:1.对于被测设备,是VTP中连接设备的通道,可能为:串口连接:串口名称 Telnet连接:IP地址/掩码长度 或 IP地址:端口号2.对于Smartbits:IP地址3.对于RouterTester:LocalHost或Server端的IP地址测试床描述说明:初始配置n初始配置:初始配置:对设备进行初始化配置,在执行脚本之前会执行这里设置的命令说明:1.初始配置的目的是保证自动化环境在执行脚本之前设备之间可以互通由于ATF会根据连接描述来自动配置端口的IP地址,因此这里
8、只需要保证其他条件即可,比如在Serial口上配置link-protocol2.某些模块为了保证脚本执行也需要进行一些特殊配置,比如交换机上的Tunnel模块需要配置link-aggregation,而这样的配置在脚本中难以实现,也会通过测试床来配置,具体情况要仔细阅读这些模块的说明文件3.初始配置只在测试集初始化设备时执行一次,单个脚本执行时不执行初始配置.测试床描述说明:连接描述(I)n连接描述:连接描述:可以是多行,每一行的形式为如下,其中连接名称可以省略连接名称 设备1名称端口名称 IPv4地址 IPv6地址,设备2名称 端口名称 IPv4地址 IPv6地址n设备名称必须是前面设备描述
9、已经存在的设备;nIP地址的形式为:地址掩码长度;nATF会根据连接描述自动配置端口的IP地址;测试床描述说明:连接描述(II)n端口名称:端口名称:与实际的设备端口相对应,可以为物理接口或VLAN虚接口描述形式为:物理接口VLAN虚接口板卡类型例如:例如:link1,L3SW1 e1/0/1vlan10 1.1.1.1/16,L2SW1 e1/0 link2,L3SW2 vlan10 2.2.2.2/16,L3SW3 vlan20 2.2.2.3/16 link3,RTA s2/0/1:5#T1 2003:1/64,RTB s1/0/1 2003:2/64 link4,RTC e1/0 20
10、.1.1.1/16 2004:1/64,RTD e2/0 20.1.1.2/16 2004:2/64测试床描述说明:注释v注释:注释:在前面加分号可以注释掉测试床中一行v不使用或只使用某台设备:在设备名称前面加!表示不使用该设备,加*表示只使用这些设备测试床描述说明示例v路由器环境测试床:v交换机环境测试床:ATF脚本开发ATF脚本框架测试床逻辑拓扑测试用例运行脚本ATF脚本框架逻辑拓扑拓扑名称拓扑名称 name SINGLE_SWITCH graph +-+-+|DUT1 +-+SMB|+-+-+description DUT1 VrpLanSwitch SMB SmartBits p2p,
11、DUT1 PORT1,SMB toDUT1拓扑图拓扑图拓扑描述拓扑描述拓扑名称和拓扑图v拓扑名称:字符串表示的名称,可以是任意字符串,最好只使用字母,数字和下划线v拓扑图:以字符画出的拓扑结果,用双引号括起来注意:注意:拓扑名称和拓扑图不是逻辑拓扑描述所必须的,可以为空字符串,但一般要求具备这两项内容逻辑拓扑描述具体描述逻辑设备的类型和设备之间的连接:v每一行描述一个连接或设备v设备描述格式为:逻辑设备名称 设备类型v连接描述格式为:连接名称,连接设备1信息,连接设备2信息v连接设备信息描述格式为:逻辑设备名 端口名 接口地址v接口地址的描述为:IP地址/掩码长度逻辑拓扑描述示例v配置测试拓扑
12、描述:v三层模块功能测试:v交换机二层模块测试:v使用Smartbits:ATF脚本开发vATF脚本框架v测试床v逻辑拓扑v测试用例v运行脚本测试用例 “Step 1”configurationcheck 头部头部拓扑映射拓扑映射 用例体用例体开始开始结束结束 “Step 1”configurationcheck ATF测试脚本v用例信息v拓扑映射v配置检查ATF测试脚本用例信息 stp root-protection下发后显示正确 1.2.2.2.2.12 2 RSTP CONFIGURATION 杨小军 2003-12-29 无 1.1.1 在交换机上可以设置此命令 RSTP(IEEE-8
13、02.1W)_1.2.2.2_1.topo 说明:说明:这里使用引用逻辑拓扑文件ATF测试脚本拓扑映射v自动逻辑拓扑映射:v手工逻辑拓扑映射:手工指定逻辑设备端口与物理设备端口之间的对应关系v设置拓扑映射约束:限制设备类型,端口类型等逻辑拓扑映射得到的内容v设备对象:与逻辑设备名称同名设备对象:与逻辑设备名称同名(DUT1,SMB)v接口对象:主要是针对测试仪器的接口接口对象:主要是针对测试仪器的接口v相关变量:保存逻辑设备端口名称与物理端口相关变量:保存逻辑设备端口名称与物理端口信息之间的映射关系信息之间的映射关系注意:注意:在脚本中直接使用设备对象和设备相关变量进行配置和检查设备相关变量(
14、I)物理接口名称物理接口名称:intf(逻辑设备名称,逻辑接口名称)接口接口IP地址地址:addr(逻辑设备名称,逻辑接口名称)接口网段地址接口网段地址:net(逻辑设备名称,逻辑接口名称)接口网络掩码接口网络掩码:mask(逻辑设备名称,逻辑接口名称)接口网络掩码长度接口网络掩码长度:masklen(逻辑设备名称,逻辑接口名称)接口网络反掩码接口网络反掩码:wildcard(逻辑设备名称,逻辑接口名称)接口路由接口路由:rtEntry(逻辑设备名称,逻辑接口名称)接口有类路由接口有类路由:class_rtEntry(逻辑设备名称,逻辑接口名称)注意:注意:这里的设备相关变量实际上是以TCL的
15、数组形式存放,对其取值的方式是在前面加$比如:$intf(DUT1,PORT1)就取得逻辑设备DUT1的PORT1端口对应的物理端口名称设备相关变量(II)L2/L3L2/L3相关变量:相关变量:l2intfl2intf(逻辑设备名称,逻辑接口名称逻辑设备名称,逻辑接口名称)l3intfl3intf(逻辑设备名称,逻辑接口名称逻辑设备名称,逻辑接口名称)注意:注意:这两个变量在任何情况下都有效,但取值会有变化对于路由器设备,二者完全相同对于交换机设备,如果测试床描述为ethvlan的形式,则l2intf取值为Ethernet接口,l3intf取值为vlan虚接口;如果测试床描述只包含eth接口
16、,则l3intf值为空;反之,如果测试床描述只有vlan接口,则l2intf值为空在不同情况下,intf变量的取值和脚本运行时参数有关,而l2intf和l3intf只和测试床描述有关,和运行时参数设置无关设备相关变量(III)IPv6IPv6相关变量:相关变量:接口接口IPv6地址:地址:addr6(逻辑设备名称,逻辑接口名称逻辑设备名称,逻辑接口名称)接口网络前缀:接口网络前缀:net6(逻辑设备名称,逻辑接口名称逻辑设备名称,逻辑接口名称)接口网络掩码:接口网络掩码:mask6(逻辑设备名称,逻辑接口名称逻辑设备名称,逻辑接口名称)接口网络掩码长度:接口网络掩码长度:masklen6(逻辑
17、设备名称,逻辑接口名称逻辑设备名称,逻辑接口名称)接口网络反掩码:接口网络反掩码:wildcard6(逻辑设备名称,逻辑接口名称逻辑设备名称,逻辑接口名称)接口路由:接口路由:rtEntry6(逻辑设备名称,逻辑接口名称逻辑设备名称,逻辑接口名称)接口有类路由:接口有类路由:class_rtEntry6(逻辑设备名称,逻辑接口名称逻辑设备名称,逻辑接口名称)注意:注意:这里的class_rtEntry6没有实际意义,只是为了在处理时和IPv4保持一致masklen6和wildcard6一般也不会用到,但可以方便计算.设备相关变量(IV)10.1.1.1/162000:1/6410.1.1.2/
18、162000:2/64RT1RT2测试床描述:Link1,RT1 e1/0 10.1.1.1/16 2000:1/64,RT2 e1/0 10.1.1.2/16 2000:1/64逻辑拓扑描述:Link1,RTA PORT1,RTA PORT2RTARTB映射结果:映射结果:RTART1 PORT1e1/0RTB RT2 PORT2 e1/0设备相关变量(V)n$intf(RTA,PORT1)-e1/0n$l2intf(RTA,PORT1)-e1/0n$l3intf(RTA,PORT1)-e1/0n$addr(RTA,PORT1)-10.1.1.1n$net(RTA,PORT1)-10.1.0
19、.0n$mask(RTA,PORT1)-255.255.0.0n$masklen(RTA,PORT1)-16n$wildcard(RTA,PORT1)-0.0.255.255n$rtEntry(RTA,PORT1)-10.1.0.0/16n$classEntry(RTA,PORT1)-10.0.0.0/8n$addr6(RTA,PORT1)-2000:1n$net6(RTA,PORT1)-2000:n$masklen6(RTA,PORT1)-64n$rtEntry6(RTA,PORT1)-2000:/64设备相关变量(VI)10.1.1.1/1610.1.1.2/16LSW1LSW2测试床描述
20、:Link1,LSW1 e1/0/1vlan10 10.1.1.1/16,RT2 e2/0/1vlan20 10.1.1.2/16逻辑拓扑描述:Link1,DUT1 PORT1,DUT2 PORT2DUT1DUT2Level2映射结果:映射结果:DUT1LSW1 PORT1e1/0/1DUT2 LSW2 PORT2 e2/0/1设备相关变量(VII)n$intf(DUT1,PORT1)-Ethernet1/0/1n$l2intf(DUT1,PORT1)-Ethernet1/0/1n$l3intf(DUT1,PORT1)-Vlan-Interface10n$addr(DUT1,PORT1)-10
21、.1.1.1n$net(DUT1,PORT1)-10.1.0.0n$mask(DUT1,PORT1)-255.255.0.0n$masklen(DUT1,PORT1)-16n$wildcard(DUT1,PORT1)-0.0.255.255n$rtEntry(DUT1,PORT1)-10.1.0.0/16n$classEntry(DUT1,PORT1)-10.0.0.0/8设备相关变量(VI)10.1.1.1/1610.1.1.2/16LSW1LSW2测试床描述:Link1,LSW1 e1/0/1vlan10 10.1.1.1/16,RT2 e2/0/1vlan20 10.1.1.2/16逻辑
22、拓扑描述:Link1,DUT1 PORT1,DUT2 PORT2DUT1DUT2Level3映射结果:映射结果:DUT1LSW1 PORT1Vlan-Interface10DUT2 LSW2 PORT2 Vlan-Interface20设备相关变量(VII)n$intf(DUT1,PORT1)-Vlan-Interface10n$l2intf(DUT1,PORT1)-Ethernet1/0/1n$l3intf(DUT1,PORT1)-Vlan-Interface10n$addr(DUT1,PORT1)-10.1.1.1n$net(DUT1,PORT1)-10.1.0.0n$mask(DUT1,
23、PORT1)-255.255.0.0n$masklen(DUT1,PORT1)-16n$wildcard(DUT1,PORT1)-0.0.255.255n$rtEntry(DUT1,PORT1)-10.1.0.0/16n$classEntry(DUT1,PORT1)-10.0.0.0/8VRP设备对象的常用方法设备对象的使用:n调用方式:对象名称方法名称方法参数n常用方法:Send 发送配置命令Config发送配置命令ClearBuffer向控制台窗口发送清除标记GetBuffer得到控制台窗口屏幕的内容GetScreen得到控制台窗口屏幕的内容SetErrorCommandCheck设置错误
24、命令检查SaveConfig保存当前配置Restart重新启动设备ATF测试脚本v用例信息v拓扑映射v配置检查ATF测试脚本配置检查 测试指定封装情况下是否能正常互通测试指定封装情况下是否能正常互通 DUT1 Config“interface$intf(DUT1,PORT1)mtu 1200 description“检查检查DUT1端口端口PORT1的的MTU为为1500 type command object CE1 args“display interface$intf(DUT1,PORT1)”expect“Maximum Transmit Unit is 1200”向设备下发配置命令DU
25、T1 Config“interface$intf(DUT1,PORT1)shutdownquit“Quidway-ospf-100System-ViewQuidwayinterface Ethernet0/1Quidway-Ethernet0/1shutdownQuidway-Ethernet0/1quitQuidwayv格式:格式:ATF封装了两个发送命令的方法:逻辑设备名称 Send“命令字符串”逻辑设备名称 Config“命令字符串”v特点:特点:Send在命令返回信息中出现More的时候会自动发送空格,以得到完整的结果Config 是对Send的扩展,它每次都从系统视图发送命令举例:举
26、例:检查运行结果v类型:类型:command,route,ping,custom,textv结果:结果:pass,failedv一般格式:一般格式:description descr type type args args object obj expect?opt?exp repeat times?-interval seconds?whenfailed args 说明:检查的一般格式vargs和expect指定的参数与检查类型有关v对于任何类型的检查,expect参数可以带有-negative选项,表示取反vrepeat参数设置重复检查,ATF一般只有前一次检查失败时才进行重复vwhenf
27、ailed参数设置检查失败时的动作v最后一个单独的真正的执行检查,前面只是设置参数Command检查类型:类型:description STP默认状态为Disabled type command object DUT1 expect Spanning tree protocol is disabled args display stp说明说明:object后面的参数为逻辑设备的名称expect参数指定的字符串为执行命令时期望得到的字符串,默认为单词检查,带-exact参数时执行字符串检查。args参数指定要执行的命令Text检查类型:类型:description STP默认状态为Disable
28、d type text expect Spanning tree protocol is disabled args$target说明说明:text检查忽略object参数expect为期望得到的字符串,可以带有-exact选项args参数指定要检查的字符串Route检查类型:类型:description 在RTA上检查RTC的lo0口路由 type route object RTA args$rtEntry(RTC,lo0)-nexthop$addr(RTC,s0)-protocol ospf 说明说明:args参数指定期望存在的路由,可以是多行其完整格式为:route_entry?-vrf
29、 vrf_name?-nexthop nexthop?-protocol protocol?-metric metric?-interface intf?-preference pref?expect参数省略Route检查:Expect参数 expect?-negative?expect_resultexpect_result 为route的检查结果,可以为-5 1之间的整数。1-满足条件的路由存在 0-相应路由项对应的路由不存在-1-相应路由项对应的路由存在,但是下一跳不匹配-2-相应路由项对应的路由存在,但是路由类型不匹配-3-相应路由项对应的路由存在,但是metric不匹配-4-相应路由
30、项对应的路由存在,但是优先权不匹配-5-相应路由项对应的路由存在,但是出接口不匹配Ping检查类型:类型:description 检查RTB和RTC之间能否ping通 type ping object RTB args$addr(RTC,s1)-size 3000 expect 80说明说明:args 设置ping的参数,完整的语法格式为:dest_ip?-size size?-timeout milliseconds?vrf vrf_name?source source_ip?Expect参数指定期待的通过率如果检查不能ping通,该数值为0;支持Ping检查的设备类型:VRP设备,PCCu
31、stom检查类型:类型:description“检查DUT1转发包的数量小于100 type custom args“expr$packets 100说明说明:packet为一个已经存在的变量,前面加$对其取值args 设置执行的命令命令执行的结果不等于,则检查通过;否则检查失败custom类型的检查用eval执行args设置的参数,因此参数必须为合法TCL语句custom类型的检查忽略object和expect参数,一般也不设置repeat参数一个完整的脚本下面是一个完整脚本所包含的三个文件:脚本命名规范:脚本命名规范:模块名称模块名称_模块编号模块编号_脚本编号脚本编号_测试床编号测试床编
32、号_逻辑拓扑编号逻辑拓扑编号.tcl测试床命名规范:测试床命名规范:模块名称模块名称_模块编号模块编号_测试床编号测试床编号.tbd拓扑文件命名规范:拓扑文件命名规范:模块名称模块名称_模块编号模块编号_拓扑文件编号拓扑文件编号.topoATF脚本开发ATF脚本框架测试床逻辑拓扑测试用例运行脚本执行脚本v设置脚本路径v设置测试床文件v设置日志存放路径v设置Source路径v设置高级执行选项vRun设置脚本路径设置ATF常用选项设置Source路径设置执行参数vSET_RUNNING_PARAMSET_RUNNING_PARAM ParamParam value valuev该方法用于设置脚本执
33、行参数;vif_level2|3:-2表示测试例执行时使用测试床描述的二层接口;-3表示测试例执行时使用测试床描述的三层接口;对于vlaneth形式描述的测试床而言,if_level为2时,intf变量取值为eth端口名称,为3时取值为vlan虚接口Run:打开脚本执行Run:选择脚本执行脚本使用指南ATF脚本框架执行脚本执行测试集生成测试集文件测试集:就是测试脚本的集合,执行时依次执行包含的所有脚本文件Example:测试集文件 description level 3 1.2.4.03_SNMP-Agent/SNMP-Agent_1.2.4.3.1.1_1_1_1.tcl 1.2.4.03_
34、SNMP-Agent/SNMP-Agent_1.2.4.3.1.2_1_1_1.tcl 1.2.4.03_SNMP-Agent/SNMP-Agent_1.2.4.3.1.3_1_1_1.tcl 1.2.4.03_SNMP-Agent/SNMP-Agent_1.2.4.3.1.4_1_1_1.tcl 1.2.4.03_SNMP-Agent/SNMP-Agent_1.2.4.3.2.1.1.1_1_1_1.tcl 1.2.4.03_SNMP-Agent/SNMP-Agent_1.2.4.3.2.1.1.2_1_1_1.tcl 1.2.4.03_SNMP-Agent/SNMP-Agent_1.2.4
35、.3.2.1.2.1_1_1_1.tcl 1.2.4.03_SNMP-Agent/SNMP-Agent_1.2.4.3.2.1.2.2_1_1_1.tcl说明:说明:后面的文件名应该为一个相对路径的文件名,与所设置的脚本路径和测试集文件保存的路径有关测试集执行参数n description name value参数:level2|3:测试集运行时的测试床连接端口,对于ethvlan形式描述的交换机连接有效.为2时表示intf取值为ethernt端口,为3时表示intf取值为vlan虚接口.默认情况下为2;chkcfg0|1:测试集运行时是否需要进行配置清除检查.默认情况下为1,执行时会在每个脚
36、本开始和末尾处执行display current-configuration,并比较前后两次的结果是否相同,如果不同则在日志中记录增加或减少了哪些配置.查看脚本执行日志可以在全局TCL窗口打开日志文件,也可以直接到设置的Log目录下打开日志文件Example:日志文件的内容单个脚本执行日志测试集执行日志日志文件命名:文件名称执行时间.log总结大家需要掌握那些东西?nATF框架:测试床,逻辑拓扑,测试脚本n测试床描述:设备描述,连接描述n脚本框架:头部,逻辑拓扑,逻辑拓扑映射,用例体n测试步骤的一般规格:配置检查n发送命令的方法:Config,Sendn检查的类型:command,route,ping,custom,textn运行脚本谢 谢 !