# kl3-autotest-tool
## 概述
kl3dtest自动化测试工具(以下简称“软件”)的前身是为了测试kl3计量功能而设计的一个python脚本,后来为了方便对kl3的各个功能进行自动化测试,将该脚本拓展为python+qt的一个软件。
该软件主要包含如下亮点:
* xml文件的读取、解析、保存
* 界面可勾选dtest和dtest对应的case
* xmodem下载固件
* 串口数据显示,可对关键字进行统计和设置颜色
* 可拓展串口数据处理模块
* 调试日志、串口日志文件记录
程序启动后的界面如下图所示
![image](https://user-images.githubusercontent.com/36351182/118810121-1638be00-b8de-11eb-86c0-33db8a67a4a2.png)
## 程序逻辑
程序为交互式执行,因此当程序在初始化完成后,会一直等到交互动作产生特定信号,来触发指定的流程。其大体的程序框架如下图所示:
![image](https://user-images.githubusercontent.com/36351182/118810661-b68ee280-b8de-11eb-9bea-ae309a148120.png)
### xml加载
存在一个默认的xml文件,其路径在与软件(或python脚本)同级目录下,名称固定为”dtest.xml”,件在启动后会尝试读取默认的xml文件,并将xml的内容显示到界面。xml内容和界面的对应关系如下:
#### 调试界面使能
在xml中对应<debug_interface>节点,包含“true”或者“false”文本节点,如下图所示:
![image](https://user-images.githubusercontent.com/36351182/118810871-f1911600-b8de-11eb-86f9-600e01175d2e.png)
在界面中对应调试日志区域,当文本节点为“false”时,隐藏调试日志区域,当文本节点为“true”时,显示调试区域。
当隐藏调试区域时,调试区域上方的界面自动填充,如下图所示:
![image](https://user-images.githubusercontent.com/36351182/118810900-f81f8d80-b8de-11eb-88c0-1a0fba181961.png)
___【注】:隐藏界面时,调试日志仍然记录在界面中。___
#### 串口配置
在xml中对应\<port id="x">节点,该节点包含id属性,用于标识是第几个串口(从0开始计数,最多定义4个串口);该节点包含5个子节点,其解释如下:
* \<com>子节点,用于标识PC上的串口对应的com号,使用一个文本子节点记录;
* \<buad>子节点,用于标识串口对应的波特率,使用一个文本子节点记录;
* \<data>子节点,用于标识串口对应的数据位,使用一个文本子节点记录;
* \<parity>子节点,用于标识串口对应的校验位,使用一个文本子节点记录;
* \<stop>子节点,用于标识串口对应的停止位,使用一个文本子节点记录;
完整的节点定义如下图所示:
![image](https://user-images.githubusercontent.com/36351182/118811055-2309e180-b8df-11eb-9ba9-d6594eaceba9.png)
在界面中对应配置界面COM口区域,配置界面需要在主界面点击“配置”按钮打开,配置界面如下如所示:
![image](https://user-images.githubusercontent.com/36351182/118811092-2d2be000-b8df-11eb-8b6c-7beb1ccf0597.png)
从上到下,com口编号为0~3,对应xml文件中的id0~id3,界面中的波特率等参数均来自xml文件中定义的参数值。
#### 固件路径
在xml文件中对应\<dir>节点,该节点包含id属性,当id为0时表示是主模式固件路径,id为1时表示是从模式固件路径。固件路径的文本储存在该节点下的文本子节点中。
![image](https://user-images.githubusercontent.com/36351182/118811533-b3e0bd00-b8df-11eb-8581-d7891a4af5d1.png)
在界面中对应配置界面固件路径区域,“主固件路径1”对应id为0的文本节点,“从固件路径2”对应id为1的文本节点。如下图所示:
![image](https://user-images.githubusercontent.com/36351182/118811573-bc38f800-b8df-11eb-8a7c-8ad92d56d7b9.png)
#### dtest信息
在xml中表现为\<dtest>节点,该节点包含id属性,用于标识是第几个dtest。\<dtest>节点包含5个子节点,其解释如下:
* \<name>子节点,用于标识dtest名称,使用文本子节点记录内容;
* \<note>子节点,用于标识dtest说明信息,使用文本子节点记录内容;
* \<enable>子节点,用于标识dtest是否使能,使用文本子节点记录内容(true或者false);
* \<slave_mode>子节点,用于标识dtest是否支持从模式,使用文本子节点记录内容;
* \<case>子节点,用于标识dtest具有的case信息,包含id属性,用于标识当前case编号。\<case>子节点下存在3个子节点。
* \<name>子节点,用于标识case名称,使用文本子节点记录内容;
* \<note>子节点,用于标识case说明信息,使用文本子节点记录内容;
* \<enable>子节点,用于标识case是否使能,使用文本子节点记录内容;
![image](https://user-images.githubusercontent.com/36351182/118812172-6ca6fc00-b8e0-11eb-86cd-078150ca3735.png)
在界面中对应测试用例配置区域,该区域分为两部分,分别为dtest列表和case列表,以dtest id+dtest名称形成一行,分别加入2个列表中(但是选择动作不同步),case id+case名称形成一行,加入到case列表中当前case所属dtest下。如下图所示:
![image](https://user-images.githubusercontent.com/36351182/118812233-7af51800-b8e0-11eb-8470-cf8327610fe4.png)
#### 关键字规则
在xml中对应\<rule>节点,该节点包含id属性,用于标识当前规则的编号,\<rule>节点包含3个子节点,其解释如下:
* \<keyword>子节点,用于标识关键字信息,使用文本子节点记录内容;
* \<color>子节点,用于标识关键字颜色,使用文本子节点记录内容,其格式为#RRGGBB
* \<enable>子节点,用于标识关键字是否使能,使用文本子节点记录内容
![image](https://user-images.githubusercontent.com/36351182/118812411-a972f300-b8e0-11eb-9f56-98e66f72bf6c.png)
在界面中对应关键字规则区域,\<enable>节点转换为复选框,节点内容为“true”时选中,为“false”时取消选中,\<color>节点转换为颜色框,\<keyword>节点内容显示到关键字列,从上到下,每一行分别对应\<rule>节点id0~idx(目前限定x最大为20)
![image](https://user-images.githubusercontent.com/36351182/118812469-babbff80-b8e0-11eb-8ce8-dbfece92e329.png)
## 状态机
在最初的设计中,dtest测试流程、串口数据的接收由子线程完成,并且在子线程中处理关键字以及将数据更新到界面,主线程负责界面的交互。然而在调试过程中发现以下几个问题:
* 由于python的GIL限制,多线程无法做到真正的并行。
* 负责更新界面的进程不能被阻塞,也不能休眠,否则会导致界面出现卡死的现象。
* pyqt使用的时候如果非界面线程直接访问控件元素会有问题
因此,设计方案改为仅采用一个线程,配合定时器+状态机完成界面更新和dtest测试。
dtest的测试可以简化为以下4个步骤:
* 连接模块
* xmodem方式下载固件
* 发送case组合
* 接收串口数据,并等待dtest测试完毕(收到RESULT关键字)
步骤相对简单,且几乎没有额外的分支,因此状态机的设计也相对简单,如下图所示
![image](https://user-images.githubusercontent.com/36351182/118812732-fce54100-b8e0-11eb-9caa-d550f289aa77.png)
## 交互动作
### xml导入、保存、另存
xml文件的导入,保存和另存动作,触发方式为选中菜单栏中“文件”菜单下对应的动作选项,如下图所示:
![image](https://user-images.githubusercontent.com/36351182/118812774-0cfd2080-b8e1-11eb-8e96-4d00cccb473d.png)
导入和另存动作均会触发文件选择对话框,在弹出的选择框中,默认为当前软件(或python脚本)所在目录。
![image](https://user-images.githubus
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
使用python+qt编写的自动化测试工具,具有xml读写,xmodem下载,串口收发,文件写入,界面交互功能.zip 1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学、电子信息等)正在做课程设计、期末大作业和毕设项目的学生、或者相关技术学习者作为学习资料参考使用。 3、该资源包括全部源码,需要具备一定基础才能看懂并调试代码。 使用python+qt编写的自动化测试工具,具有xml读写,xmodem下载,串口收发,文件写入,界面交互功能.zip 1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学、电子信息等)正在做课程设计、期末大作业和毕设项目的学生、或者相关技术学习者作为学习资料参考使用。 3、该资源包括全部源码,需要具备一定基础才能看懂并调试代码。 使用python+qt编写的自动化测试工具,具有xml读写,xmodem下载,串口收发,文件写入,界面交互功能.zip 1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合..
资源推荐
资源详情
资源评论
收起资源包目录
使用python+qt编写的自动化测试工具,具有xml读写,xmodem下载,串口收发,文件写入,界面交互功能.zip (8个子文件)
kl3-autotest-tool-master
xmb.ui 12KB
ssh_linux.py 5KB
config.ui 28KB
kl3-test-tool.py 56KB
test.py 464B
README.md 11KB
xmb.py 13KB
config.py 35KB
共 8 条
- 1
资源评论
辣椒种子
- 粉丝: 4137
- 资源: 5738
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- YOLOv8完整网络结构图详细visio
- LCD1602电子时钟程序
- 西北太平洋热带气旋【灾害风险统计】及【登陆我国次数评估】数据集-1980-2023
- 全球干旱数据集【自校准帕尔默干旱程度指数scPDSI】-190101-202312-0.5x0.5
- 基于Python实现的VAE(变分自编码器)训练算法源代码+使用说明
- 全球干旱数据集【标准化降水蒸发指数SPEI-12】-190101-202312-0.5x0.5
- C语言小游戏-五子棋-详细代码可运行
- 全球干旱数据集【标准化降水蒸发指数SPEI-03】-190101-202312-0.5x0.5
- spring boot aop记录修改前后的值demo
- 全球干旱数据集【标准化降水蒸发指数SPEI-01】-190101-202312-0.5x0.5
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功