关于自动化,您相识几多?(JDB电子原创文章)
?
?
?
?
对于网络设备的测试来说,想必以下情况您也遇到过。
· 公司新版软件即将颁布,上个版本刚刚测试完的N个测试用例又得再跑一次!
· 公司产品做出厂前测试,统一批次的N个产品,一样的指标来来回回反反复复沉复测试。
· 本想休息功夫追个剧,测试工作却还在忙,来回切屏苦不胜言。。
?
好,接下来咱们谈谈自动化测试。
?
自动化测试说话发展
要做自动化测试,最先就得思考以哪种剧本说话去开发。像Tcl说话,它是由John?Ousterhout创建,最早称为“工具号令说话(Tool?Command?Language)”。作为老牌的自动化测试说话,最初就是基于整合测试系统而开发出来的。Tcl易上手,便于进建,并且职能壮大,时时被用于急剧原型开发、剧本编程、?GUI和自动化测试等等方面。Tcl是一个诠释型说话,直接对每条语句挨次诠释执行,面向过程,必要由iTcl(incrTcl)扩大包及8.6版本提供面向对象支持,thread扩大包支持多线程。
还有青出于蓝的Python说话,也深受各人的追捧。在去年TOIBE颁布的编程说话排行榜上,Python说话已经排到第三,仅次于Java和C说话,C++紧随其后。
Python作为一侄喙释型说话,面向过程且面向对象,也支持多线程。各人追捧的原因就是由于Python说话代码简洁、语法单一,同样的职能,Python的代码量可能只是其他说话的1/10.。所以Python说话也被宽泛利用于系统编程、人为智能、Web开发、大数据和云推算,当然也是自动化测试的重要剧本说话之一。
除此之表,也有使用Perl、C++、Ruby、Java等作为自动化测试的编程说话。
自动化测试利益
自动化测试可能有效的解决软件产品反复迭代回归测试耗时的问题。
· 测试执行快率快
· 7*24幼时进行回归测试
传统测试以手工测试为主,手工测试齐全依赖于人的操作与判断,这给测试带来了报答风险,具体体此刻以下几点。
在较好的自动化框架下,能够更好的治理测试进度,执行完自动化测试剧本后,能够轻松获取代码覆盖率,进而凭据覆盖情况分析,进行测试用例补充。
?
作为国内专业的网络测试设备和解决规划供给商,JDB电子推出的新一代软件测试平台Renix,可以为您提供美满的自动化测试职能(5大类)。
1、Renix Tcl/Python API:便于编写剧本,进行自动化测试;
2、智能剧本工具(Smart Script):便于配置测试的号令;
3、GUI To Tcl/Python:便于将图像界面的操作,保留成可执行的测试剧本;
4、XAT自动化测试软件:便于集中治理测试剧本,衔接测试环境;
5、VIP服务:能够凭据您的需要,定造自动化服务。
?
交谊提醒:本文篇幅较长,可能会占用您一下子功夫阅读,但幼编强烈建议您抽功夫读完,由于纯属幼编醉生梦死之作,专治各类不用要的加班!
一、Renix Tcl/Python API
利用法式接口(API)作为自动化测试的基础,测试前提的预置、测试步骤的设计与开发、测试了局的判断和输出,都必要测试仪提供的API来支持。而目前 ,Tcl/Python作为热点的自动化测试开发说话,Renix也提供了相应的Tcl/Python API,便于测试人员进行自动化剧本的编写。
?
为了更好让各人相识Renix API的使用,下面以Python API为例,介绍Python说话若何基于Renix平台进行自动化测试。(若是您对Tcl说话也感兴致,能够联系阿信为您排忧解惑)。
l??????????????????????API职能介绍
Renix Python API的职能重要分为五个方面对测试仪进行治理:
1、设备治理。蕴含升级机箱、配置测试资源(衔接/断开机箱,占用/开释端口)、配置端口物理属性(快率、双工模式、流控)以及治理License等;
2、流量治理。蕴含配置流量负载、配置流量发送方式(Continue、Time、Burst)、节造流量启停等;
3、和谈治理。蕴含配置接口参数、配置和谈参数、节造和谈启停等
4、捕获治理。蕴含配置捕获端口、配置过滤捕获前提、配置捕获空间大幼、节造捕获启停等;
5、统计治理。蕴含订阅统计视图、查看统计了局、保留数据了局等。
?
l??????????????????????API整体架构
自动化测试的底子就是通过API去实现对测试仪的节造,API的设计也是选取面向对象的思想。像测试仪的治理IP、端标语、槽位号等属性,有相应的类去实现节造。端口作为测试最基础的资源,在端口类的基础上也衍生出各类各样子类,像成立流量、端口物理属性配置、报文捕获等类,两者之间属于继承关系。另表如起头发流、终场发流、成立和谈仿真等行为,Renix API也提供了相应的类对其进行节造。
?
当进行测试时,我们是依照树形结构去组织测试配置项。如下图,当我们必要成立和谈1、流量1和流量2时,我们是必要先界说好端口1这个对象,在端口1的基础上再去成立和谈1和流量1,必要界说好端口2这个对象,在端口2的基础上再去成立流量2。
?
?
?
?
?
当我们创建了一个对象之后,该对象就继承了根节点最根基的四个步骤:delete、edit、get、execute,通过这四种步骤来对成立的对象进行操作,从而实现对测试配置项的配置和编纂。通过delete,能够删除测试配置项以及跟其有关联的所有子配置项;通过edit,能够对测试配置项的内容进行编纂;通过get,能够获取到测试配置项的值;通过execute,能够执行测试配置项的操作。并且在此基础上,能够通过set_relatives方发将对象之间成立关联;能够通过get_relatives步骤获取关联的对象;能够通过get_parent步骤获取当前测试配置项的父节点对象;并且通过get_children步骤获取当前测试配置项的子节点对象列表。下面就从这几个方面为各人介绍下API的使用:
能够通过相应的类去创建测试配置项,在创建的同时能够给配置项的字段赋值,并且创建时必须指定upper,upper指向合法的父节点对象。
如下图,通过Port这个类去成立port_1这个对象,在成立port_1时,upper指向它的父节点对象root,同时给Location赋值‘//10.1.5.11/1/1’。这样port_1这个对象就成立实现了。
?

?
对于每个测试配置项对象都有一个delete的步骤,能够删除测试配置项,不外必要把稳点就是删除配置项会导致跟其有关联的所有子配置项城市被删除。
如下图,通过port_1.delete()将测试配置项port1删除,此时若是port_1下面存在子配置项stream_1,那么它也同样会被删除。

若是必要对测试配置项进行批改,有两种方式能够实现。第一种,能够通过测试配置项自带的edit接口来批改配置项,这种方式能够同时批改多个字段的值,效能较高;第二种,能够通过测试配置项的成员直接批改配置项,这种方式利益在于单一快捷、语法清澈。
如下图,通过stream_1.edit使能EnableSignature,并将FixedLength的值改为64。通过stream_1.EnableSignature = True使能EnableSignature;通过stream_1.FixedLength = 64将FixedLength的值改为64。
?


?
API本地值不会自动跟Renix后盾同步,所以要获取测试配置的值必要通过get步骤来获取。这样做的是由于一旦自动同步,API会缓存同步之后的值,并且也会带来大量不用要的机能亏损。同样,我们能够获取测试配置项所有字段的值,也能够指定要获取的一个或多个字段的值。
如下图,通过stream_1.get(‘EnableSignature’,’FixedLength’)获取EnableSignature和FixedLength的值。通过stream_1.get()获取所有字段EnableSignature、FixedLength和RepeatCount的值。

在API中凡是定名以Command结尾的都是一个操作,我们能够通过机关函数来创建一个操作,并提供操作的输入参数。而后能够通过execute步骤执行一个操作。在操作执行之后可能会得到一些输出参数。
如下图,通过CreateResultViewCommand(DataClassName=’StreamStats’)来创建一个创建流量统计视图的操作,而后通过cmd.execute()执行创建统计视图的操作。统计视图创建实现之后得到的cmd.ResultViewHandle能够作为输出参数赋值给view_handle,而后供其他对象挪用。
?

?
说了这么多,我们就来看一个剧本事俘测试吧。这个例子是用来测试仪表自环的两个端口的机能是否有丢包或者存在乱序包。
?
剧本设计思路
初始化API—>占用端口—>配置流量—>订阅统计—>启动测试—>终场测试—>分析统计—>判断了局。
?
第二步:编写剧本
导入必要用到的?。

创建和占用测试端口Port1、Port2。
?

?
配置流量的收发端口,配置流量的源和主张MAC地址。

创建和订阅Stream Block的统计
?


起头测试,发送所有流量,10s之后,终场测试。
?

凭据获取到的统计了局进行分析,查抄两条流量收发的包数是否相称;查抄两条流量是否有丢包;查抄两条流量是否有乱序包
?



凭据分析的了局,做出判断,测试是Pass还是Fail。
?

第三步:获取关联对象
?
如下图,通过s1.set_relatives(‘RxPort’,Port_1,EnumrelationDirection.TARGET)将RxPort、Port_1、EnumrelationDirection.TARGET这几个对象关联起来。
通过port_1.get_children()步骤获取当前测试配置项的所有子节点对象;通过port_1.get_children(relative_name=’StreamTemplate’)获取port1下类型为StreamTemplate的所有对象
![]()
![]()
![]()
通过Win+R,输入cmd,打开cmd.exe(Windows系统合用);输入“cd ‘剧本地点蹊径’” ,进入剧本地点目录;输入“python ‘剧本名称’”,回车,执行剧本。

如下图,通过测试了局能够看到Stream_1发送了7492964个包,对端也接管到7492964个包,Stream_2发送了7492960个包,对端也接管到7492960个包,两条流量的收发相称;两条流量的丢包数都为0;两条流量传输过程中都没有产生乱序包。最后判断这次测试了局:Pass。

?
智能剧本是无代码的自动化测试用例编写和执行的解决规划。在肯定水平上为代码幼白省时省力,结构清澈了然,使用矫捷,用户能够轻松上手。在上一篇的文章已经具体介绍过了,感兴致的幼同伴能够点击文章最上方蓝色字关注我们,而后在往期精选中能够找到喔。
三、GUI To Tcl/Python
GUI(Graphical User Interface)就是指图形用户界面,又称图形用户接口是指选取图形方式显示的推算机操作用户界面,在这儿特指Renix客户端界面。GUI To Tcl/Python主张在于将客户在GUI界面的配置和操作转化为可执行的自动化测试剧本。测试的思想在于:客户在GUI界面衔接机箱、占用端口、配置流量、配置负载等操作会保留为.xfcg文件,在Smart Script配置的起头发送所有流、终场所有流、订阅端口统计和2544/2889/3918套件测试等操作号令也会保留为.xfcg文件,而后对于这些操作和号令的挪用代码就通过自动编写保留为test.py文件,最后当客户必要进行测试时,直接执行test.py文件即可。另表,当你必要批改配置和操作时,能够通过Renix打开.xcfg文件批改配置和操作,而后再使用GUI To Python;或者就在test.py的文件中编写相应的代码实现对配置和操作的批改
这样大大削减了客户编写代码的功夫,不仅提高了测试效能,对于代码不是出格精通的用户也都能够进行测试。毋庸置疑,这是代码量最幼的自动化测试。
如下图,先在Renix界面上占用两个测试端口,每个端口各配置一条流量,帧长128字节,port1负载配置为50%(线快是1000M),port2的负载配置为100%;
?

而后结合Smart Script,配置发送所有流、打流时长10s、终场发送所有流、期待3s、保留了局为1.db文件等号令;

最后通过GUI To Python保留为可执行的自动化测试剧本。

如下图,GUI To Python 天生的文件中,用户在GUI 界面占用的端口、配置的流量和在Smart Script配置的操作均被保留在.xcfg的配置文件,挪用和执行配置文件的代码也被存为test.py。这样用户就能够直接通过执行test.py来实现自动化测试。

我们运行test.py之后,能够看到,剧本已经测试成功,数据了局01.db的文件也已经在相应目录下保留,通过ResultAnalyzer能够打开文件查看了局
?


?
四、XAT自动化测试软件
XAT(Xinertel Automated Testing)是JDB电子推出的自动化测试软件。该软件旨在通过单一、快捷的方式实现对自动化剧本的集中测试和治理D芄煌ü萌砑进行测试仪表和被测设备的衔接,占用测试仪表的端口,将测试端口与测试剧本进行绑定,批量进行剧本测试。软件界面会有测试了局的汇总,也会打印测试日志,便于测试失败时定位问题,更为沉要的一点,通过该软件能够将测试纪录逐一保留在Excel文件中,蕴含之前的占用端口、测试配置、测试日志、测试了局等信息。节俭了人为纪录的功夫,同时削减了报答纪录可能带来的不用要的误差。操作方便、使用矫捷,测试信息纪录正确,可谓是自动化测试的好副手。

如下图,我们先通过XAT配置和占用IP地址为192.168.1.180测试仪的port1~8,而后在左下角的列表框当选中必要进行测试的一个或多个端口,选中192.168.0.180/1/4、192.168.0.180/1/6和192.168.0.180/1/8,鼠标右键,通过Combine To Group将选中端口组绑定成一个端口组,点击后在右下列表“端口组合”出现绑定的端口组


实现配置端口后就能够点击“设置剧本”来选中必要执行的剧本。先打开剧本地点蹊径,在“搜索剧本”窗口会出现剧本文件,选中必要测试的剧本文件,鼠标右键,通过Add Script将选中的剧本增长到右下角的设置剧本列表;

再次选中测试剧本,鼠标右键,通过Bind PortGroup将选中的剧本和“配置端口”设置好的端口组绑定,点击后,选中剧本和端口组绑定,并在右上角的测试套件中显示增长的剧本端口组合简称为“测试套件;

默认测试套件都是勾选中的,套件左边显示绿色勾,若是不必要执行该套件能够选中测试剧本之后,鼠标右键,通过Unselect执行剧本时不执行选中测试套件.(选择Unbind Port Group,会在测试套件列表中删除选中的测试套件;选择Select,则执行剧本时执行选中测试套件);
?

在工具栏中点击“
?”开启所有测试执杏装设置端口”-“测试套件”当选中的测试套件
起头测试后,出现 “执行端口组(1)” 页面,如下图,测试了局:显示每个测试剧本执行实现之后的了局信息;测试步骤:实时显示每个剧本的测试执行步骤;下方的“执行端口组(1)”:实时显示执行的log日志信息;在状态栏显示总体执行的情况
?
?

所有测试执行实现之后,工具栏显示“导出所有测试汇报按钮”, 在导出汇报前,能够再菜单栏-测试汇报-设置汇报导前路子中设置测试汇报导出到执行的蹊径下,设置好导出目录后点击“
”导出所有测试汇报按钮,汇报导出结束之后,查看汇报文件。在Log文件夹里有每个剧本测试的具体log信息,在Report.doc里是word板的测试汇报,在TestResult.xlsx则为Excel表格测试汇报

如下图是Excel表格测试汇报。

?
五、VIP服务
这里VIP服务并不是必要各人交200块钱,办JDB电子会员卡什么的,而是指JDB电子可以为你量身定造自动化服务。不论是提供Renix Tcl/Python API、基于API的二次开发、自动化测试软件的定造、自动化剧本的开发、自动化测试服务等,只有您有必要,我们都全力去实现。
?
以上就是自动化测试的介绍,最后要说的就是在这个信息化高快发展的时期,越来越大的数据量,越来越高快的带宽,对网络设备的要求也是越来越高,JDB电子措施只有越来越快,能力跟上时期的发展。不要再为沉复的产品测试感应蹩脚,不要再为软件无休止的迭代测试感触苦恼,不要再为了不会编程而不安。自动化测试即将成为测试工作里不成短缺的部门。
?
