打印

关于自动化测试,你了解多少?

[复制链接]
796|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
对于网络设备的测试来说,想必以下情况您也遇到过。
1.公司新版软件即将发布,上个版本刚刚测试完的N个测试用例又得再跑一次!
2.公司产品做出厂前测试,同一批次的N个产品,相同的指标来来回回反反复复重复测试!!
3.本想休息时间追个剧,测试任务却还在忙,来回切屏苦不堪言!!!
好,接下来就给大家介绍下自动化测试。
一、自动化测试语言发展
要做自动化测试,最先就得考虑以哪种脚本语言去开发。像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等作为自动化测试的编程语言。
二、自动化测试优点
1、缩短测试周期(自动化测试能够有效的解决软件产品反复迭代回归测试耗时的问题)
· 测试执行速度快
· 7*24小时进行回归测试
· 测试期间可无人执勤
2、避免人为错误(传统测试以手工测试为主,手工测试完全依赖于人的操作与判断,这给测试带来了人为风险,具体体现在以下几点)
· 输入数据错误
· 用例执行错误
· 测试报告数据错误
· 忽略执行某些用例
· 忽略设置预置条件
· 错误的理解被测系统的行为
3、轻松获取覆盖率(在较好的自动化框架下,可以更好的管理测试进度,执行完自动化测试脚本后,可以轻松获取代码覆盖率,进而根据覆盖情况分析,进行测试用例补充)
作为中国领先的网络测试设备和解决方案供应商,信而泰推出的新一代软件测试平台Renix,可以为您提供完善的自动化测试功能(5大类)。
· Renix Tcl/Python API:便于编写脚本,进行自动化测试;
· GUI To Tcl/Python:便于将图像界面的操作,保存成可执行的测试脚本;
· XAT自动化测试软件:便于集中管理测试脚本,连接测试环境;
· 智能脚本工具(Smart Script):便于配置测试的命令;
· VIP服务:可以根据您的需求,定制自动化服务。
友情提示:本文篇幅较长,可能会占用您一会儿时间阅读,但小编强烈建议您抽时间读完,因为纯属小编呕心沥血之作,专治各种不必要的加班!
接下来为大家详细介绍信而泰自动化测试5大类功能。
一、Renix Tcl/Python API
应用程序接口(API)作为自动化测试的基础,测试条件的预置、测试步骤的设计与开发、测试结果的判断和输出,都需要测试仪提供的API来支持。而目前 ,Tcl/Python作为热门的自动化测试开发语言,Renix也提供了相应的Tcl/Python API,便于测试人员进行自动化脚本的编写。
为了更好让大家了解Renix API的使用,下面以Python API为例,介绍Python语言如何基于Renix平台进行自动化测试。(如果您对Tcl语言也感兴趣,可以联系阿信为您排忧解惑)。
API功能介绍
Renix Python API的功能主要分为五个方面对测试仪进行管理:
1、设备管理。包括升级机箱、配置测试资源(连接/断开机箱,占用/释放端口)、配置端口物理属性(速率、双工模式、流控)以及管理License等;
2、流量管理。包括配置流量负载、配置流量发送方式(Continue、Time、Burst)、控制流量启停等;
3、协议管理。包括配置接口参数、配置协议参数、控制协议启停等
4、捕获管理。包括配置捕获端口、配置过滤捕获条件、配置捕获空间大小、控制捕获启停等;
5、统计管理。包括订阅统计视图、查看统计结果、保存数据结果等。
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的使用:
(1)创建测试配置项
可以通过相应的类去创建测试配置项,在创建的同时可以给配置项的字段赋值,而且创建时必须指定upper,upper指向合法的父节点对象。
如下图,通过Port这个类去建立port_1这个对象,在建立port_1时,upper指向它的父节点对象root,同时给Location赋值‘//10.1.5.11/1/1’。这样port_1这个对象就建立完成了。


(2)删除测试配置项
对于每个测试配置项对象都有一个delete的方法,可以删除测试配置项,不过需要注意点就是删除配置项会导致跟其有关联的所有子配置项都会被删除。
如下图,通过port_1.delete()将测试配置项port1删除,此时如果port_1下面存在子配置项stream_1,那么它也同样会被删除。
(3)修改测试配置项
如果需要对测试配置项进行修改,有两种方式可以实现。第一种,可以通过测试配置项自带的edit接口来修改配置项,这种方式可以同时修改多个字段的值,效率较高;第二种,可以通过测试配置项的成员直接修改配置项,这种方式优点在于简单快捷、语法清晰。
如下图,通过stream_1.edit使能EnableSignature,并将FixedLength的值改为64。通过stream_1.EnableSignature = True使能EnableSignature;通过stream_1.FixedLength = 64将FixedLength的值改为64。
(4)获取测试配置项
API本地值不会自动跟Renix后台同步,所以要获取测试配置的值需要通过get方法来获取。这样做的是因为一旦自动同步,API会缓存同步之后的值,而且也会带来大量不必要的性能消耗。同样,我们可以获取测试配置项所有字段的值,也可以指定要获取的一个或多个字段的值。
如下图,通过stream_1.get(‘EnableSignature’,’FixedLength’)获取EnableSignature和FixedLength的值。通过stream_1.get()获取所有字段EnableSignature、FixedLength和RepeatCount的值。
(5)执行测试配置项操作
在API中凡是命名以Command结尾的都是一个操作,我们可以通过构造函数来创建一个操作,并提供操作的输入参数。然后可以通过execute方法执行一个操作。在操作执行之后可能会得到一些输出参数。
如下图,通过CreateResultViewCommand(DataClassName=’StreamStats’)来创建一个创建流量统计视图的操作,然后通过cmd.execute()执行创建统计视图的操作。统计视图创建完成之后得到的cmd.ResultViewHandle可以作为输出参数赋值给view_handle,然后供其他对象调用。
说了这么多,接下来我们来看一个脚本实例测试吧。这个例子是用来测试仪表自环的两个端口的性能是否有丢包或者存在乱序包。
第一步:脚本设计思路
初始化API—>占用端口—>配置流量—>订阅统计—>启动测试—>停止测试—>分析统计—>判断结果。
第二步:编写脚本
导入需要用到的模块。
创建和占用测试端口Port1、Port2。
配置流量的收发端口,配置流量的源和目的MAC地址。
创建和订阅Stream Block的统计
开始测试,发送所有流量,10s之后,停止测试。
根据获取到的统计结果进行分析,检查两条流量收发的包数是否相等;检查两条流量是否有丢包;检查两条流量是否有乱序包
根据分析的结果,做出判断,测试是Pass还是Fail。
第三步:获取关联对象
我们可以通过set_relatives方法将对象之间建立关联,然后可以通过get_relatives方法获取关联的对象。可以通过get_parent方法获取当前测试配置项的父节点对象,并且通过get_children方法获取当前测试配置项的子节点对象列表。
如下图,通过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)是信而泰推出的自动化测试软件。
该软件旨在通过简单、快捷的方式实现对自动化脚本的集中测试和管理。可以通过该软件进行测试仪表和被测设备的连接,占用测试仪表的端口,将测试端口与测试脚本进行绑定,批量进行脚本测试。
软件界面会有测试结果的汇总,也会打印测试日志,便于测试失败时定位问题,更为重要的一点,通过该软件可以将测试记录一一保存在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表格测试报告。

四、智能脚本工具(Smart Script)
智能脚本是无代码的自动化测试用例编写和执行的解决方案。在一定程度上为代码小白省时省力,结构清晰明了,使用灵活,用户可以轻松上手。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

161

主题

168

帖子

0

粉丝