1 概述
1.1 引言
自动化测试是软件程序走向持续集成和持续交付的必要方法。目前测试领域里常见的自动化测试方法,一般都是基于Web UI、App UI以及单元测试等,而应用于网络基础设施的网络自动化测试方法,是少之又少。各大网络设备厂商,如华为、华三、迪普等,都有自己的一套网络自动化测试体系,其中很多测试方法,即使是公布出来,普通用户也无法使用,因为这些体系,基本都是基于非公开的自研软件实现。本人从大厂出来后,经过长时间的调研和实践,找到一种不需要自主开发测试框架,而只是基于开源Robot Framework工具的SSHLibrary库,就可以实现网络自动化测试的方法,希望能给正在寻求网络自动化测试方法的团队一些启示。
1.2 Robot Framework简介
Robot Framework(官网:https://robotframework.org/ )是一款Python编写的、根据Apache License 2.0发布的开源的功能自动化测试框架,由Nokia Siemens Networks开发并提供支持,于2008年开源。
Robot Framework是开放且可扩展的,并且可以与几乎任何其他工具集成以创建强大而灵活的自动化解决方案(比如结合Selenium做Web自动化测试、结合Appium做APP自动化测试、结合Jenkins + Testlink + Bugzilla做持续集成)。开源也意味着Robot Framework可以免费使用,而无需支付许可费用。
Robot Framework使用易于理解的关键字,语法简单。它的功能可以通过使用Python或Java实现的库进行扩展。该框架有一个丰富的生态系统,由作为独立项目开发的库和工具组成。
Robot Framework项目托管在GitHub上(https://github.com/robotframework/robotframework ),可以在其中找到更多的文档,源代码和问题跟踪器。
Robot Framework是独立于操作系统和应用程序的。该核心框架使用Python实现,并且还可以在Jython(JVM)和IronPython(.NET)上运行。
1.3 SSHLibrary库介绍
SSHLibrary是一个Robot Framework测试库,用于测试SSH和SFTP。在Github上可以找到其开源信息(https://github.com/robotframework/SSHLibrary )。
SSHLibrary支持Python2.7和Python3.4+,同时也支持Jython2.7。
SSHLibrary的主要应用场景有:
- 以阻塞或非阻塞行为在远程计算机上执行命令,见Execute Command 和Start Command
- 在交互式Shell中进行书写和阅读,见Read和Write
- 通过SFTP传输文件和目录,见Get File和Put Directory
- 确保远程机器上存在文件或目录,见File Should Exist和Directory Should Not Exist
官网的SSHLibrary指导手册是全英文的,如果阅读困难,可以参考本人对SSHLibrary的理解性翻译,详细内容可以查看我的上一篇博客。
2 搭建自动化测试基础环境
2.1 Python安装与配置
基础安装:
自动化测试环境建议使用Windows系统搭建,在Python官方网站上下载Python 3.7.9的安装包。
鼠标右键点击“我的电脑”–>左键点击“属性”–>“高级系统设置”–>“高级”–>“环境变量”,在系统变量里面找到“Path”,鼠标左键双击进行编辑,添加Python的安装目录,主要涉及以下几个目录:
$PATH/Python37/
$PATH/Python37/Lib/Site-packages
$PATH/Python37/Scripts
环境变量编辑完成后,鼠标左键连续点击确定,保存编辑内容。
打开Windows的命令行,输入python -V
,可以查看Python的版本,并验证安装和配置是否成功。
执行python -m pip install --upgrade pip
更新pip为最新版本。
虚拟环境的安装: 测试环境建议使用Python的虚拟环境,方便以后因为其他项目而更新Python。具体安装过程如下:
pip install wheel
pip install virtualenv
pip install virtualenvwrapper-win
在D盘创建一个目录VirtualEnvs。
按照上面的提示打开环境变量的设置,在系统变量里面添加一个新的变量,变量名为“WORKON_HOME”,变量值为“D:/VirtualEnvs”。这样所有的虚拟环境都会保存在这个目录下。
虚拟环境的创建与配置: 执行mkvirtualenv py37_robot -p $PATH/Python37/python.exe
,创建一个指定Python版本的虚拟环境,其中$PATH为Python的安装目录。创建完成后,会直接进入到Python虚拟环境中。
退出虚拟环境用deactivate命令,再次进入使用“workon + 虚拟环境名”进入,比如workon py37_robot。单独执行workon也可以查看当前系统的虚拟环境名称列表。
2.2 Robot Framework的安装与启动
基础安装: 执行以下操作,安装Robot Framework框架和用于网络自动化测试的组件库:
pip install robotframework
pip install robotframework-sshlibrary
pip install robotframework-ride
经过验证python 3.7.9可以安装并运行Robot Framework框架的版本如下所示:
如果Robot Framework无法安装和运行,可以按照上图所示安装相应版本的框架和组件库。
命令行启动Robot Framework: 在Python虚拟环境下,首先输入“D:”,切换命令行目录为D盘。
然后执行workon py37_robot
,切换到虚拟环境下。
然后执行cd D:/VirtualEnvs/py37_robot/Scripts>
,进到Robot Framework的默认安装目录下。
最后执行python ride.py
,可以打开Robot Framework的UI界面。
创建快捷方式: 在桌面上,鼠标右键点击“新建”–>“快捷方式”:
在“目标”一栏填入D:/VirtualEnvs/py37_robot/Scripts/python.exe -c "from robotide import main; main()"
;
在“起始位置”一栏填入D:/VirtualEnvs/py37_robot/
;
3 网络自动化测试过程
3.1 创建测试计划
启动Robot Framework后,点击“File–>New Project”,编辑测试项目,类型选择“Directory”,Format选择“ROBOT”,如下所示:
创建测试计划,选中所创建的测试项目名称,鼠标右键点击“New Suite”,Type和Format使用默认值即可,如下所示:
导入SSHLibrary组件库,选中所创建的测试计划名称,在右侧的“Edit”标签下,点击右侧的“Add Import”下的“Library”按键,如下所示的位置:
在弹出的窗口中“Name”中,输入“SSHLibrary”,需要注意的是“字母大小写必须如图中所示”,然后点击确定,即可导入SSHLibrary组件库。
3.2 创建测试用例
选中所创建的测试计划名称,鼠标右键点击“New Test Case”,创建测试用例,名称可以根据所测试的内容任意指定,如下所示:
测试用例创建完成后,会在右侧的“Edit”标签下,显示一个带有如同Excel表格的空白界面,如下图所示:
其中的表格部分,是我们需要填入的内容,详细信息可以参考我的SSHLibrary理解性翻译 https://gitee.com/rustfree/fl-2-zh/blob/master/工具指导/202105-RobotFramework-SSHLibrary/SSHLibrary理解.md
3.3 编辑测试用例
根据所需要测试的内容编辑测试用例,如下图所示:
测试用例的1、2步骤,向目标服务器发起SSH连接,SSHNAME为用户名,SSHPASSWORD为密码。 3至5步骤,为所执行的具体测试步骤。第4步骤的delay时间可以设置为5秒,便于命令执行后读取全部的返回信息。第5步骤是判断版本信息中是否包含“20200”关键字。 第6步骤是关闭SSH连接。 测试用例中的“Tags”标签信息很重要,它用来给测试用例定义一个关键字标签。建议将这个标签定义为设备款型、执行轮次、特定功能等,以便于在执行测试的时候,根据标签来区分需要执行哪些测试用例。这样的好处是我们只需要维护一套测试用例库,不需要根据不同的设备或者不同的测试轮次创建多个测试用例库。这在执行测试用例的过程中,可以通过测试用例的标签,选择本次需要执行哪些用例,详细信息请见“3.4 执行测试用例”。支持给测试用例配置多个标签,如下图所示:
3.4 执行测试用例
工具栏中三个图标,依次是“执行测试”、“以Debug方式执行测试”和“停止测试”。在执行测试过程中,会在右侧的“Run”标签下打印所执行的日志信息,其中可以明确显示每一步执行的过程。
在执行的过程中,每个测试用例的图标颜色,可以判断执行状态。
- 黑色:表示测试用例未执行;
- 蓝色:表示测试用例正在执行;
- 绿色:表示测试用例执行通过;
- 红色:表示测试用例执行失败;
在“Only run tests with these tags”输入栏中,可以在其中填写一个测试用例的标签名称。比如填入“XXX_function_test”,这样在执行自动化测试的时候,Robot Framework只会执行带有“XXX_function_test”标签的测试用例,其他的测试用例会自动跳过,而不执行。
3.5 查看测试报告
测试结果可以在“Run”标签下查看到,在输出的日志信息中可以查看到输出三个缓存文件。“Run”标签下的文本信息,都可以直接被复制粘贴。
Output: C:/Users/test/AppData/Local/Temp/RIDEgfbvhiee.d/output.xml
Log: C:/Users/test/AppData/Local/Temp/RIDEgfbvhiee.d/log.html
Report: C:/Users/test/AppData/Local/Temp/RIDEgfbvhiee.d/report.html
打开浏览器,在地址栏中输入上述“Report”的存储路径,可以查看到当前测试所执行的结果和状态。
3.6 排查与定位
测试报告中的蓝色字体,都是页面链接,比如可以点击“All Tests”链接,以可以查看具体的执行步骤,如下图所示:
在Message中可以显示执行错误的功能信息,再点击左侧 “Name”标签中的测试用例链接,可以查看到执行失败的测试用例,具体到哪一步出错,如下图所示:
如图中所示,测试过程中在第一步发起SSH连接的时候就出错,错误信息显示SSH连接失败。此时需要检查测试机和被测设备之前的网络通路。 在执行完成之后,参考出错用例的下一个用例,进行配置的修改。在测试用例的规划上,建议采用一条配置和一条执行的方式,如下图所示。
{{m.name}}
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/199182.html