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

对于网络设备的测试来说,想必以下情况您也遇到过。

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)

智能脚本是无代码的自动化测试用例编写和执行的解决方案。在一定程度上为代码小白省时省力,结构清晰明了,使用灵活,用户可以轻松上手。
————————————————
版权声明:本文为CSDN博主「XINERTEL」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/XINERTEL/article/details/104521016

原文地址:https://www.cnblogs.com/xinertel/p/12368284.html

时间: 2024-08-12 19:28:05

关于自动化测试,你了解多少?的相关文章

自动化测试到底是什么

引子 偶然在群里有人问自动化测试到底是啥,搞不懂.qtp对象库好麻烦,jmeter怎么做测试....一堆一堆的问题.其实说实话真心不知道该咋解答了,我的内心是累的~ 突然想到自己的新书里不就解释过这些吗!看来还是很多童鞋对于自动化测试的认知存在巨大的问题啊! so,以下内容选择<小强软件测试疯狂讲义> 重新认识性能测试之后我们再来看看自动化测试到底是什么.其实这个话题我在不同的场合多次谈过,甚至在我创办的"挨踢脱口秀"中也专门做了一次节目来说明,但可惜的是仍然有很多朋友对自

自动化测试框架 selenium api的封装

接上一篇 http://tianxietaotao.blog.51cto.com/12002420/1951701 这篇我大概介绍下我这个工具的简单介绍 先上图: 制作背景: Web自动化测试在现在测试领域已经越来越普遍,但是写代码对于好多测试猿代码基础较弱,搭建系统也比较麻烦.所以我抽闲暇时间做了这个简单的工具:下面简单介绍下功能 工具简单介绍: 1.工具栏:Resume:调试阶段执行到下一个断点 next:单步执行 debug/run 模式切换 执行.停止 2.用例树:用例采用execl或者

Selenium+Java+Eclipse 自动化测试环境搭建

一.下载Java windows java下载链接 https://www.java.com/zh_CN/download/win10.jsp 二.安装Java 安装好后检查一下需不需要配置环境变量,现在java 8已经不用配置环境变量了,直接在命令行输入:java -version 三.下载和安装Eclipse windows Eclipse下载链接 https://www.eclipse.org/downloads/ 你也可以下载绿色版 四.下载selenium,然后解压 selenium

Android自动化测试工具实现简述

前言 自动化测试在产品开发和测试中都有着非常重要的作用.在产品开发阶段,可靠又重复性地运行以确保没有引进回归问题:在产品测试阶段,可以节省人力成本和时间成本,并能保证更大范围的覆盖.Android自动化测试工具同样可以节省不少人力和时间成本,对其研究和实现对于提高测试效率具有一定的意义.目前市面上也有不少Android自动化测试工具,本人在现有工具的基础上,加上自己的理解和实践向大家介绍自动化测试工具的原理和实现. 了解自动化测试的一定对Robotium并不陌生,Robotium是一款国外的An

Python+Selenium进行UI自动化测试项目中,常用的小技巧2:读取配置文件(configparser,.ini文件)

在自动化测试项目中,可能会碰到一些经常使用的但 很少变化的配置信息,下面就来介绍使用configparser来读取配置信息config.ini 读取的信息(config.ini)如下: [config]platformName=AndroidappPackage=com.sheinsideappActivity=.module.GuideActivitybaseUrl=http://0.0.0.0:4723/wd/hubfindElementTimes=10[cmd]openAppium=nod

自动化测试--登录页面验证码问题

对于web应 用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的,对于系统来 说使用验证码可以有效果的防止采用机器猜测方法对口令的刺探,在一定程度上增加了安全性.但对于测试人员来说,不管是进行性能测试还是自动化测试都是一个 棘手的问题. 下面来谈一下处理验证码的几种方法. 去掉验证码 这是最简单的方法,对于开发人员来说,只是把验证码的相关代码注释掉即可,如果是在测试环境,这样做可省去了测试人员不少麻烦,如果自动化脚

Robot Framework自动化测试(五)--- 开发系统关键字

最近一直在用robot framework 做自动化测试项目,老实说对于习惯直接使用python的情况下,被框在这个工具里各种不爽,当然,使用工具的好处也很多,降低了使用成本与难度:当然,在享受工具带来便利的同时也会受制于工具.对于特定的需求,工具没提供相关的Library和关键字的时候,就只能放弃了. 还好robot framework提供了 Evaluate 关键字,对于Evaluate 关键字的使用等有时间再讲.当robot framework 不能解决需求,我是直接写个.py 程序,通过

Android 自动化测试(3)&lt;monkeyrunner&gt; 根据ID查找对象&amp;touch&amp;type (python)

我在之前的两篇文章中用java来实现过 Android 自动化测试(1)如何安装和卸载一个应用(java).Android 自动化测试(2)根据ID查找对象(java). 但是本质上都是用monkeyrunner对应的java lib 来实现的,但是相关的文档非常少,如果真的要用monkeyrunner来做功能性的自动化测试,强烈还是推荐使用python语言 1.monkey runner The monkeyrunner tool provides an API for writing pro

一个小白对接口自动化测试的一些猜想

时维九月,序属三秋,深圳的天依旧辣么的燥热,但今天的感觉不太一样,这份燥热更像是内心的激动情绪按耐不住. 额,跑题了,但其实真的有蛮多感慨,很幸运能加入这样的一个学习团队,我会尽自己最大的努力提升自己.做最好的自己,和大家一起进步. 以下纯属个人的一些理解,不喜轻喷: 1.接口概念的阐述:举个栗子,牛教授喜欢看美女图片,以前的牛教授需要手动搜索网页,搜集图片,然后放到自己的博客收藏:后来牛教授通过关键字美女图片要爬虫在网上收集了更多的美女图片放到自己的博客收藏:期间同样喜欢看美女图片的道长发现了

WEB、接口、APP自动化测试的一些看法

当故事看即可,只是个人看法............... 目前在各个软件公司中基本上存在WEB和APP的对外系统,不管是电子商务.电信.新闻等基本上都有WEB和APP同时存在.对于APP个人感觉是新东西,但也觉得它就是个老东西,因为大家是否记得我们曾经装在电脑上的Application应用程序,当然一个管理软件当时就很NB了.不过现在手机上的Application和以前电脑上的Application当然不管技术上还是形态上都是不一样的,但使用上似乎是一样的,同样的下载---安装---使用.这些都