项目介绍:
本篇文章是Python + RobotFramework测试框架分享的第二篇文章,介绍的是基于RobotFframework+python构建的一个射频自动化测试工具。包含WIFI的射频测试,BT的射频测试以及校准功能的一个工具。
项目背景:
RF: 也就是常说的射频,英文:Radio Ffrequency
WIFI:就是常说的无线网,英文:Wireless Fidelity
先交代一下项目背景,我司是做车载通信模块的(指甲大小的模块),该模块是一个射频通信模块;所以需要对研发出的模块进行WIFI的射频指标进行测试。
手动测试的方法:
1.需要手动给SOC(芯片)发指令,让SOC发射各种制式(IEEE.802.11a/11b/11n/11g/11ac)的射频信号
2.打开仪表的网页,设置测试信道,测试频率
3. 记录仪表网页上的Power值,EVM值,Freq Error值等等
4.将记录的RF各个测试指标写入DVT报告的模板
每测试一个Channel都需要重复上述的步骤;由于手动测试既耗时又费力,所以需要开发一款自动化测试工具来提升测试效率,节省人力!
测试环境架构:

DUT : Device Under Test 指被测设备
IQxel:指的是Lite Point公司的IQxel-MW,一台测试WIFI和BT射频指标的设备
Tool通过Socket通信来控制IQxel-MW测试仪表来实现各种设置和测试数据的抓取。
Tool通过串口通信来给SOC发送各种指令控制芯片的射频信号输出。
关于Python控制Litepoint 的测试设备可以参考我之前写过的文章:
Python控制LitePoint IQxel-MW 无线网络测试仪_python控制仪表_不过如此1951的博客-CSDN博客
工具设计:
工具的目录
Setup: 该文件夹是存放Tool的安装脚本,里面是一个bat文件,双击后会新建.venv文件夹,所有安装的python第三方包均安装在此文件夹。
目录介绍:
.venv :是一个虚拟环境的文件夹,该文件夹是双击setup中的安装脚本后才会出现
3rdParty:是Python.exe, 也就是python的安装包
3rdParty-PythonLibs: 是一个工具开发用到的第三方安装包的离线文件,如pyvisa,pyserial等等
Documentation: 是Tool的使用手册和ReleaseNote
Environment: 里面是TestPlan
Library: 里面是工具底层的库,也就是所有的代码
StartRide.bat :是进入工具的入口
本工具的设计主要是基于RobotFramework + Python
python负责编写底层的库,主要包括芯片的指令发送,IQxel-MW测试仪表的远程控制,测试结果写入Excel等等工作
RobotFramework主要负责上层的测试用例的构建,测试计划的构建,测试的执行以及报告的输出等等工作
具体可以参考我写的本专栏的另外一篇文章:python + robotframework 测试框架分享(精华-纯干货)_robotframework自动化框架-CSDN博客
代码层实现:
代码目录结构:
目录介绍:
enums文件夹下主要放的是一些设置会用到的枚举类
关于IQxel-MW仪表控制的代码主要放在litepoint.py文件中
关于DUT(被测设备)的控制的代码主要放在wlan.py文件中
关于测试结果的操作主要放在measurement.py文件中
每个py文件中都有一个主题类,类方法就是一个个要实现的具体功能(在python中叫函数, 在Robotframework中叫做关键字)
最后,在库中的__init__.py中引入所有的类名,这样在robotframework中就可以调用你所写的函数作为关键字使用了
UI层设计:
所谓的UI层设计就是使用RIDE作为一个GUI,在RIDE里面使用自己搭建的Library中的关键字来实现测试功能
Tool界面:
构建方法:
第一步:
在外部资源中使用封装好的函数(关键字)来创建一个用户关键字“Run IEEE 802.11b Tx Test”
内容如下:主要包括测试11b制式下的参数设置以及TX信号的输出
第二步:
新建名为“IEEE_802.11b_Test”的TestSuit,在suit下面新建各个信道作为测试用例(测试的最小单元)。在该TestSuit中使用刚才构建的“Run IEEE 802.11b Tx Test”作为Template(关于模板功能的使用可参看本专栏关于模板的那篇文章)。这样一来该suit下面的每一条Testcase都会执行Template中的测试内容
第三步:
在Testcase中可以输入一些具体的测试用的参数,然后在Template中可以调用这些参数进行测试。比如我这里开放的Power(功率)参数,因为测试人员可能每次测试想要SOC输出的功率不同,这样一来便可以将这个参数开放出来。
若要开放其他参数也是同样的道理!
后记:
本篇文章主要就是讲Robot framework + python构建自动化测试框架的文章用于实际工作中,也算是对上一篇文章的丰富了吧。
这里贴一张手动与工具测试时长的对比:
由上图可知工具对研发的测试来说效率提升有多明显了。
本篇博客主要是抛砖引玉,主要提供利用Ride + python开发自动化测试框架的一个思路,具体的细节方面可以随时私聊我!!