SpirentiTestAnalysisRule高级使用技巧

上传人:痛*** 文档编号:192888536 上传时间:2023-03-07 格式:PDF 页数:18 大小:2.38MB
收藏 版权申诉 举报 下载
SpirentiTestAnalysisRule高级使用技巧_第1页
第1页 / 共18页
SpirentiTestAnalysisRule高级使用技巧_第2页
第2页 / 共18页
SpirentiTestAnalysisRule高级使用技巧_第3页
第3页 / 共18页
资源描述:

《SpirentiTestAnalysisRule高级使用技巧》由会员分享,可在线阅读,更多相关《SpirentiTestAnalysisRule高级使用技巧(18页珍藏版)》请在装配图网上搜索。

1、Spirent iTest Analysis Rule高级使用技巧 文档摘要:本文档主要介绍Spirent iTest Analysis Rule高级使用技巧,适用已经掌握iTest基本操作的人群。本文档会介绍如何使用Analysis Rule分析 Response。关键字:Spirent iTest、TCL、Response、Analysis Rule、Regex、Contains 1.Analysis Rule 在脚本编写过程中经常要分析某条命令Response中的内容,比如要判断ONU 能不能Ping 通,开启 CMD session,执行 ping 192.168.1.1,从返回的结果

2、中如何查看ONU 可以 Ping通?我们可以从能Ping 通和不能Ping 通返回的Response 中分析,如能Ping 通就会出现“Reply from”、“TTL”等,如果不能Ping 通则会出现“Request timed out”,所以我们要分析这些不同的地方来确认ONU 是否能够Ping 通。需要注意的是Windows XP 系统和 Win7系统在 cmd 下 Ping 返回的信息不一样,XP 系统能够 Ping 通返回的是“Reply from 192.168.1.1:bytes=32 time=1ms TTL=64”,而 Win7 系统返回的是“来自 192.168.1.1 的

3、回复:字节=32 时间=1ms TTL=64”,在 Ping 不通的时候XP 系统和 Win7 系统的回显也不相同,所以我们一定要找到在Win7 系统和 XP 系统下都可以判断的标准。这里我分析的是TTL,如果找到TTL则表明 ONU 可以 Ping 通,如果找不到TTL 就表明没有Ping 通,也可以分析丢包率,只要能够区分能Ping 和不能 Ping 就可以(在Win7 系统下分析丢包率有风险,在不能Ping 通的时候丢包率不一定为100%,可以自己尝试)。此时就要运用到Analysis Rule,在 Response中我们选中TTL,然后点击鼠标右键,单击“Add Analysis Ru

4、le”,如图 1 所示。图 1 单击“Add Analysis Rule”后会弹出一个Analysis Rule 配置向导,如图2所示图 2 1.1.Validate something in the response 这句话的直译为在回复中验证某些东西,对于如何判断ONU 是否能够Ping 通,只需要在 Response中能够找到TTL 就可以了,所以Validate something in the response 符合需求。点击“Next”进入下一步,如图3 所示图 3 1.1.1.The response contains a specified string(text)在图 3 中

5、有 3 个单选选项,第一个选项“The response contains a specified string(text)”指在 Response中包含某个指定的字符串,当选择这个选项后iTest 将不去关注你想要比较的字符串在Response中具体的位置,只要找到这个字符串就表明PASS,所以“The response contains a specified string(text)”符合我们在Response中查找 TTL 的需求。第二个选项“The response dose not contain a specified string(text)”指在 Response中不包含某个

6、指定的字符串,这个选项也不关注字符串在Response中具体位置,比如想要判断ONU 不能 Ping 通,可以判断在 Response中找不到TTL 就表明 ONU 不能 Ping 通,此时可以使用“The response dose not contain a specified string(text)”,但也可以使用“The response contains a specified string(text)”判断 ONU 不能 Ping 通,接下来会讲解到。第三个选项“Compare the extracted value to a specified value”指将从 Respon

7、se中提取出来的值和一个指定的值比较,这个选项iTest会重点关注如何提取值,也就是iTest 需要用户指定提取哪一个值,此时就会关注这个值在Response中的位置了,如我想要比较Ping ONU 的平均时延是否小于1 ms,那么上面两个选项明显不能满足需求,后面会讲解“Compare the extracted value to a specified value”具体使用方法。了解完这三个选项的具体作用后,我们接着点击“Next”进入字符串选择界面,如图 4 所示,在最下面“Text that must appear”中填写你想要查找的字符串,然后点击“Next ”进入下一步,如图5 所

8、示。图 4 图 5 图 5 是操作阶段,上面方框指当Response中包含图4 中设定的指定值后会如何操作,默认操作是“Pass the test if it has not already failed”,另外还可以选择“Pass the test”和“Fail the test”。Modify test result 如果不勾选的话当匹配成功也不对case测试结果产生影响。“Pass the test”和“Fail the test”大家都能理解什么意思,“Pass the test if it has not already failed”指当在这个case中没有出现fail 的时候才会

9、Pass这个 case,一旦出现了Fail 那么这个case的最终结果将会fail。如果选择的是“Pass the test”,那么 iTest 将不去关注之前的步骤有没有出现 fail,直接将这个case PASS,如果没有啥特殊需求建议使用“Pass the test if it has not already failed”。Generate an execution message勾上后,iTest 将在执行过程中在Execution 视图中打印一个消息,消息包括OK、Error、Warning 和 Information,自己根据需求选择,默认如果选择了“Pass the test

10、if it has not already failed”和“Pass the test”,在 Severity 中选择OK,如果选择了“Fail the test”,Severity 选择 Error。如果勾选了“Use auto-generated message”iTest 将会默认输出一行消息,如Response contains“XXX”,如果你想自定义消息,可以将“Use auto-generated message”去勾选,如输入“ONU 可以 Ping 通”,那么在iTest 执行过程中就会打印“ONU 可以 Ping 通”的消息,便于测试人员分析故障发生的原因。当勾选Chan

11、ge execution flow 后,当匹配成功后可以改变case的去向,有Break(跳出 for 循环)、Continue(结束本次循环,执行下一次循环,就是Continue 下面的代码本次不会执行。)、Abort the test(case的结果不是PASS也不是 FAIL,而是 Abort,被中止了,很少用到)、Exit the procedure(退出当前procedure)、Repeat the step(重复当前步骤,可以设置重复次数和间隔),这些也可以在后面配置。点击“Next”然后点击“Finish”后创建了一个Analysis Rule了,如图6 所示。图 6 1.1.2

12、.Compare the extracted value to a specified value 如果在 case或者 procedure 中没有添加任何Analysis Rule,这个 case在运行结束的时候会输出,结果不确定的。讲到这里相信对Analysis Rule 有了初步了解,接下来继续讲解Validate something in the response下的“Compare the extracted value to a specified value”,上面提到过“Compare the extracted value to a specified value”是将 Re

13、sponse中某个特定位置的值和一个特定的值比较,这里以比较Ping ONU 的平均时延不能大于2 ms为例,如果大于2 ms 则 Fail,小于或者等于2 ms 则 PASS。这里就出现一个问题,iTest 怎么知道平均时延在哪?所以需要指定平均时延的位置,如果Response是一个表格,那么通过指定第几行第几列就可以找到了,但是Ping 回复的内容不是一个表格,所以就不能通过定位第几行第几列来确定。我们的做法是选中“Average=”后面的 0,右键添加 Analysis Rule,如图 7 所示图 7 在弹出来的Rule 配置对话框中选择Validate something in the

14、 response,下一步选择Compare the extracted value to a specified value,在 Extract 配置对话框中会指导我们如何提取一个指定的值。第一种“Auto-generated regular expression applied to the text of the response”就是通过自动生成的正则表达式来提取,不需要用户写正则表达式,iTest 会自动生成一个,如要提取平均时延,iTest 自动生成的正则表达式为“s+Minimum=s+d+ms,Maximum=s+d+ms,Average=s+(d+)ms$”,我们来分析下这个

15、正则表达式,匹配字符串的开始,s匹配任意的空白符,在Minimum 前有几个空格,但是我们不确定到底有几个,所以用s+来匹配 1 个或者多个 s,“+”的意思就是匹配一次或者更多次,相应的“*”代表匹配0 次或者更多次,“?”代表匹配0 次或者一次。接下来Minimum就是完全匹配Minimum 了。d匹配数字,$匹配字符串结束。()中匹配的字符串将提取出来,所以这个正则表达式最后提取的是Average 后面的“0”。如果在Win7 系统下想比较平均时延就有问题,因为在Win7系统下显示的为“最短=1ms,最长=1ms,平均=1ms”,显然找不到Minimum和Maximum 或者 Avera

16、ge。稍微修改下正则表达式为“s+Minimum|最短=s+d+ms,Maximum|最长=s+d+ms,Average|平均=s+(d+)ms$”就可以在XP 系统和 Win7 系统下都能匹配成功了,所以使用正则表达式的前提是会看懂和会编写正则表达式,否则Response 中某个地方改变了就会导致匹配不成功,正则表达式几乎能够完成工作中90%的匹配,另外10%需要 Response_map 来完成,Response_map 在本文中不做讨论,详情参考本人另外一篇文档Spirent iTest Response Map 高级使用技巧。第一种正则表达式介绍完了,接下来介绍第二种“Auto-gen

17、erated query on the response”,这是 iTest 自动生成的一种方法,它的原理其实也是正则表达式,只不过封装了下,让用户看起来更直观。这种方法只能匹配含有数字的字符串,如果想匹配abc 这种不含数字的字符串用“Auto-generated query on the response”无法匹配出。如果想匹配Average后面的 0ms,直接选中Query 下的 Average()即可,如图8 所示。图 8 第三种方法为“XPath query applied to the response”,XPath 是 XML 路径语言,用于在 XML 文档中查找,适合格式为XM

18、L 的 Response,如果强行对非XML 格式的 Response查询也可以,不过需要对XPath 语法熟练掌握,这里不推荐大家使用,图 9 展示了如何通过XPath 语法找出Average。图 9 Extract 配置对话框设置好后,点击“Next ”进入 Comparsion 配置对话框,在这里可以配置在上一步提取的值与哪一个值进行比较,如何比较,是等于还是大于或者小于。Step 1 选择比较类型,如图10 所示。Numeric 是对数字比较,String 是对字符串比较,List 是对列表比较。Numeric 比较类型有“等于”、“不等于”、“大于”、“大于等于”、“小于”、“小于等

19、于”。String 比较类型有“在一个特定的范围内”inclusive 包含临界值,exclusive 不包含临界值,这里需要注意的是Lower bound value 和 Upper bound value 都不能填写字符类型的,必须填写纯数字。另外String 还可以和wildcarded 通配符以及regular 正则表达式匹配。List是列表匹配,只要想匹配的值在这个列表中就匹配成功。图 10 当想要比较字符串“OK”和“OK”是否相等的时候,在String 方法中无法满足需求,此时要用到Numeric:equal to 方法,需要注意的是必须要勾选上Comparsion type 下

20、的选项,此时 step 3 中 Expression 中”=”就会变成“eq”。在 Step 2 中设置提取出来的值和哪一个值进行比较,有五种类型,一是特定的值,二是局部变量,三是全局变量,四是procedure中的参数,五是参数列表中的参数。Comparsion 配置完成后点击“Next ”进入 Actions 配置,这个和图5 的 Actions 配置相同,然后一路点下去就创建了一个Analysis Rule 了,至此Validate something in the response 已经全部讲完,通过Validate something in the response 可以判断 Res

21、ponse中是否包含某个特定值,或者不包含某个特定值,也可以将Response中某个特定位置的值和指定的值或者变量进行比较。1.2.Create a message to display during test execution 本节讲解Create a message to display during test execution,主要作用是在case执行过程中显示某个消息,而且还可以显示你想要的值,比如我不需要对平均时延进行判断,只需要在 execution 中显示出来,那么就可以使用Create a message to display during test execution 了

22、。在 Rule 中选择 Create a message to display during test execution,然后点击“Next ”进入 Extract界面,如图 11 所示。这里的 Extract 只是提取内容,而不对内容进行任何方式的比较,Extract提取的值存放在局部变量value 中,需要用 value 格式打印value 的值。在 Execution Message可以设置告警等级为“OK”还是“Error”、“Warning”或者“Information”,“OK”和“Error”会影响 case 最终结果,“Warning”和“Information”不会影响ca

23、se 最终结果,这里不推荐大家使用“OK”或者“Error”,毕竟对提取出来的值没有经过任何比较就设置为“OK”或者“Error”是不符合常理的。如果想要在case执行过程中打印平均时延,那么在Execution Message 配置如图12 所示。图 11 图 12 除了通过上述方法可以在case执行过程中“Execution”视图打印消息外,还可以通过comment 来实现,首先在case 中添加一个comment 注释语句,注释语句的内容可以为“平均时延为$value”,然后在 Step properties 中把“For the Command filed,perform comman

24、d,variable,and backslach substitutions”勾上,commnet 内容中的$value 就可以进行变量替换了,如图 13 所示,另外在General 选项卡中还需要勾选“Generate an execution message for each comment step that is executed”图 13 图 14 1.3.Store data from the response in a variable 通过前两章的学习了解了如何在Response中比较一个值以及如何在execution 中打印一串消息,接下来会讲解如何从Response 中提取

25、一个值然后存储为变量。在Rule 中选择“Store data from the response in a variable”,然后下一步进入Extract 配置对话框,这里的Extract 配置对话框和1.1.2 中的 Extract 配置对话框配置一模一样,配置好后进入Variable 配置对话框,在这里可以配置变量的名称,当勾选上Global 后该变量就自动配置为全局变量。如果在 Response中有多个符合条件的值,可以勾上“Always store single match in a list”,这样当匹配到多个值后就只有一个值被存入变量了,如图15 所示。图 15 1.4.Cus

26、tom 介绍完前面三种Rule 模式后,相信应该可以满足80%的需求了,如果上面三种Rule还不能满足你的需求,可以尝试下Custom 自定义方法和Response Map。当 Rule 规则选择Custom 后,点击Next 进入 Custom Extractor 配置界面,在Extract using 下拉框中看到三种Extract 方法,第一种是“Contains(1 if text is found,0 otherwise)”,是指在 Response中查看是否包含某个指定字符串,如果找到了则结果设置为1,没有找到结果就为0。接着在Extractor Properties 中可以看到C

27、ontains 的具体内容,如果想要和一个变量比较,必须要点击 Contains 下面的 F,如果 Contains 下面的灰色按钮没有F 标志,则不会进行变量替换。下面的Match type 有四种,CaseSensitive 指大小写敏感,CaseInSensitive指大小写不敏感,Wildcard 指通配符匹配方式,通配符主要是*,如想要匹配TTLA 和 TTLB,可以用通配符TTL*来匹配。Regex 指正则表达式匹配,不过这里的iTest 正则表达式有点问题,不建议使用(只是这里正则表达式有点问题,和上面提到的用正则表达式抓值不矛盾),比如 TTLAB 本来可以匹配TTLA和 TT

28、LB,但是在iTest 中不能匹配。第二种是“Query against the structured response data”,是 iTest 自动生成的query,如果不能匹配到就会报错,但如果想要在不能匹配到任何结果的时候也不报错,就要不勾选“Declare issue if no matches found”,第三种是正则表达式匹配,如果在添加Analysis Rule 之前选择了某个字符串,那么iTest 就会自动生成正则表达式,下面以提取平均时延为例讲解正则表达式一些参数。图 16 图 16 为正则表达式的一些相关配置选项,第一行“Regular expression”是正则表

29、达式,如果想要在正则表达式中插入变量,必须点击“Regular expression”右边的灰色方框,出现了 F 标志后就表明可以进行变量替换了。正则表达式默认是使用行匹配的,所以需要勾选“Use line mode”,如果不勾选“Use line mode”就会匹配不成功,此时如果稍微修改下正则表达式就可以了,记得在上文说过“”代表匹配行的开始,“$”代表匹配行的结束,如果不想基于行匹配,那把“”和“$”删除就可以了。“Portion of match(es)to extract”指部分匹配模式,有两种,一是numbered_group,基于group number 匹配,还有一种是full

30、_match。如果勾选了Full_match 匹配的结果不是平均时延,而是整行了,如“Minimum=0ms,Maximum=0ms,Average=0ms”,如果选择numbered_group 就会根据填写的group number 匹配,如果group number 选择 0 也表示匹配整行,如果group number 选择 1 就匹配到 了 平 均 时 延,为 什 么?可 能 读 者 有 点 疑 惑,接 下 来 通 过 一 个 例 子 来 详 细 讲 解numbered_group。我们把正则表达式修改为“s+Minimum=s+(d)+ms,Maximum=s+(d)+ms,Ave

31、rage=s+(d+)ms”,众所周知正则表达式()括号中内容为提取出来的内容,如果一个正则表达式有三个(),又没有指定匹配哪一个括号中的内容,此时就会匹配到4 个值,一个是整行,还有三个是最小时延、最大时延、平均时延,显然达不到我们预期想要的结果,group number 就指定了匹配哪一个括号中的内容,如果group number 写为 1,就匹配到了最小时延,如果 group number 写为 2,就匹配到了最大时延,如果 group number 写为 3 就匹配到了平均时延,只要group number 填写的不是1,2,3 中任意一个数字就会匹配到整行。如果想要在不能匹配到任何结

32、果的时候也不报错,就不要勾选“Declare issue if no matches found”。在 Custom Extractor 界面配置好提取模式后,进入Custom Processor。回顾下Custom Extractor 界面的三种匹配模式,第一种“Contains(1 if text is found,0 otherwise)”匹配到的值如果匹配成功就为1,匹配不成功就为0。第二种“Query against the structured response data”和第三种“Regular expression”保存的值为匹配到的值。三种模式下的结果都暂时存放在变量 val

33、ue 中。在 Custom Processor中 Perform 决定了下一步要干什么。“Compare and take action accordingly”指先比较然后做判断该干嘛。“Store the extracted data in a variable”指把提取出来的数值存储到一个变量中。“Display an execution message”指在执行过程中打印一串消息。“Write extracted data to a file”指把保存的结果写入到某个文件中,要注意的是File location 不要写 Windows 系统路径,比如 D 盘下的一个文件1.txt,这里

34、的路径要写出D:/1.txt,而不能写成D:1.txt。“Chart data on X-Y plot”指把存储的数据保存到一个X-Y 坐标图上,该图是一个线性图,可以自定义X 轴和 Y 轴的数据。“Chart data using bar chart”指把存储到的数据保存为一个柱状图。“Chart data using pie chart”指把存储到的数据保存为一个饼状图。iTest 可以画一些简单的图但是画出来的图形无法导出是一个问题,所以很少用到iTest的画图功能。2.RebootAnalysis 至此 iTest Analysis Rule 所有功能讲解完了,接下来以分析重启ONU

35、后,如何判断 ONU有没有重启以及是否重启成功为例运用Analysis Rule。首先创建Procedure,Procedure 的 name 就命名为RebootAnalysis。第一步需要打开一个CMD Session,如果没有创建还得提前创建一个CMD Session,创建完成后Ping 192.168.1.1,对 Ping 192.168.1.1 的 Response添加 Analysis Rule,如果找不到TTL 就表明正在重启,如果找到TTL 则没有重启。这种设计思想还是有瑕疵的,比如通过WEB 页面或者平台重启ONU 后,ONU 不会立刻Ping 不通,可能会在几秒后Ping

36、不通,此时就不能说找到了TTL就表示没有重启,我们需要给ONU 一个缓冲时间,如果找到了TTL 我们把FailTest 删除,而是添加一个RepeatStep 命令,重复10 次,每次间隔10 秒,如果重复10次后还是找到了TTL就表明ONU没有重启了。这里有一个设计思想适合所有这种需要RepeatStep 或者重复执行命令的操作,在Procedure 的第一行通过eval set flag 0,在 Ping 192.168.1.1 下面的 Analysis Rule 中如果没有找到TTL 就添加一个Eval set flag 1。这样等到 Ping 192.168.1.1 命令执行完成后就可以通过flag 的值来判断ONU 有没有重启过,如果flag=1 表明 ONU 正在重启,如果flag=0 表明 ONU 没有重启,详细步骤如图17 所示。如何判断 ONU 有没有重启成功也可以通过上述方法来实现。图 17

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!