一种ubus命令行自动化测试方法及系统与流程

文档序号:25607350发布日期:2021-06-25 14:07阅读:545来源:国知局
一种ubus命令行自动化测试方法及系统与流程

1.本发明涉及一种测试工具,尤其涉及一种ubus命令行自动化测试方法及系统。


背景技术:

2.电信出台了最新的e

os智能路由器规范,后续厂家应将基础能力封装成ubus接口能力模块ctcapd,提供对ap(无线接入点)管理配置能力的开放。ubus为openwrt平台开发中进程间通信提供了一个通用的框架,它让进程间通信变得非常简单,并且ubus具有很强的可移植性。
3.依照电信官方给出技术白皮书以及智慧家庭验收方案,对能力模块ctcapd的ubus命令开发一套自动化测试工具,可以用户后续所有支持e

os规范下的ubus命令测试。
4.现有技术采用手工测试的方法,对ubus命令进行测试,有以下缺点:
5.1、需要对每个版本均需要对ctcapd的ubus命令进行回归测试,手工测试需要一天时间,效率低;
6.2.漏测率高,多个版本的迭代测试对ubus接口相关命令,难免在重复的过程中不会存在遗漏;
7.3.复测率低,手工操作耗时太久,这就导致复测率不能达到100%,不能保证没有遗漏。


技术实现要素:

8.为解决现有技术中的问题,本发明提供一种ubus命令行自动化测试方法及系统。
9.本发明测试方法包括如下步骤:
10.s1:初始化,配置测试用环境和变量信息;
11.s2:获取测试命令,执行指定项目下的测试用例;
12.s3:调用函数,从指定项目目录下读取需要下发的ubus命令;
13.s4:远程登录待测试设备,然后下发ubus命令;
14.s5:在测试用例中进行相关数据项的校验,根据测试结果是否与预期一致判断该条测试用例执行结果,并记录该测试用例执行结果;
15.s6:判断是否有下一条测试用例,如果是,返回执行步骤s3,测试下一条测试用例,如果否,生成测试报告,结束。
16.本发明作进一步改进,步骤s5中,判断步骤包括如下子步骤:
17.s51:判断校验命令返回值是否与预期保持一致,如果是,执行步骤s52,如果否,执行步骤s54;
18.s52:设置命令使用对应查询命令查看返回值是否下发成功,如果是,执行步骤s53,否则,执行步骤s54;
19.s53:调用函数校验配置是否实际生效,如果是,标记测试用例执行成功,然后执行步骤s6,如果否,执行步骤s54;
20.s54:标记该条测试用例执行失败,并记录错误日志,然后执行步骤s6。
21.本发明作进一步改进,步骤s1中,安装requirements.txt文件中的环境依赖包配置,完成python环境配置,然后在config目录下的config.ini文件中完成项目需要的变量配置,包括telnet账号密码、默认wifi账号密码配置、默认wan联网配置、电脑mac地址配置。
22.本发明作进一步改进,步骤s6中,所述测试用例执行完成之后会将报告以json的格式保存在指定目录下,然后使用自动化报告生成工具将json格式转换成html格式输出。
23.本发明作进一步改进,步骤s2中,所述测试用例通过定义filename文件名区分不同模块的excel文档,再调用实现实例化的getexceldata方法生成excel测试用例集exceldata,用于后续测试用例中参数的调用。
24.本发明作进一步改进,步骤s4中,调用基于telnetlib库的handle_telnet_excute.py函数使用telnet远程登录待测设备并下发返回的ubus命令参数,具体处理过程为:
25.s41:从配置文件中读取变量配置信息;
26.s42:调用telnetlib库的open方法函数;
27.s43:输入用户名密码后输入相关指令进入命令模式;
28.s44:下方从excel中读取的ubus命令。
29.本发明还提供一种包括所述测试方法的系统,包括:
30.配置模块:用于配置测试用环境和变量信息;
31.执行模块:用于当获取测试命令后,执行指定项目下的测试用例;
32.读取模块:用于从指定项目目录下读取需要下发的ubus命令;
33.下方命令模块:用于远程登录待测试设备,然后下发ubus命令;
34.校验模块:用于在测试用例中进行相关数据项的校验,根据测试结果是否与预期一致判断该条测试用例执行结果,并记录该测试用例执行结果;
35.判断模块:用于判断是否还有下一条测试用例;
36.报告生成模块:用于生成测试报告。
37.与现有技术相比,本发明的有益效果是:降低ubus测试项的门槛,无需深入了解ubus命令行的详细实现,简单学习工具使用就可以完成ubus模块执行;使用本工具可以提升效率,节省人力;能够稳定输出测试结果,降低漏测率及复测率;不仅会输出完整的测试报告,还有具体测试的日志文件,方便后续问题回溯跟踪。
附图说明
38.图1为本发明方法流程图;
39.图2为测试报告界面示意图。
具体实施方式
40.下面结合附图和实施例对本发明做进一步详细说明。
41.本发明设计一自动化测试工具,可以ubus命令自动化测试,无需人工干预,测试完成后,自动输出测试结果,本例用于符合电信e

link组网3.0规范e

os智能路由器规范的家用路由器,对路由器的ubus命令行进行测试,设备需支持开放telnet协议通信模块,以下对
分模块对本发明进行说明。
42.1、测试环境
43.系统支持:本例在电脑上运行,该电脑采用windows7或者linux均可;
44.测试框架:python+selenium+pytest+allure
45.其中,pytest是一个非常成熟的全功能的python测试框架,适合从简单的单元到复杂的功能测试,主要特点有以下几点:1.简单灵活,容易上手;2.支持参数化;3.能够支持简单的单元测试;4.标记测试功能与属性5.复杂的功能测试,比如可以做selenium等自动化测试、接口自动化测试(pytest+requests);6.pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest

selenium(集成selenium)、pytest

html(完美html测试报告生成)、pytest

rerunfailures(失败case重复执行)等;7.可以很好的和jenkins集成;
46.telnetlib是python中专门提供,用来完成基于telnet协议的通信功能。可用于所有支持telnet协议的设备进行telnet远程登录和下发指令。
47.allure是一款轻量级并且非常灵活的开源测试报告框架。它支持绝大多数测试框架,例如testng、pytest、juint等。它简单易用,易于集成。
48.2、测试工具使用流程
49.如图1所示,本测试方法包括如下步骤:
50.(1)安装requirements.txt文件中的环境依赖包配置,完成python环境配置;
51.(2)在config目录下的config.ini文件中完成项目需要的变量配置,包括telnet账号密码、默认wifi账号密码配置、默认wan联网配置、电脑mac地址配置;
52.(3)运行run_main.py脚本进行指定项目目录下的所有符合pytest规范的测试用例;
53.(4)测试用例执行完成之后会将报告以json的格式保存在report目录下;
54.(5)使用自动化报告生成工具allure将json转换成html格式输出。
55.3、模块封装
56.本例采用handle_getdevdata.py模块用于获取dut实际配置;handle_telnet_base.py和handle_telnet_excute.py提供了基于telnet协议的各类通信方法;handle_excelconfig.py、handle_exceldata.py和handle_getexceldata.py提供excle相关数据驱动的操作方法;handle_wifi.py提供pc端无线网卡的扫描、连接、断开等基础操作,handle_verification提供了一部分ping、访问外网、域名解析等验证手段,一起对命令下发后设备状态进行校验。
57.以下对本发明的实现方法进行详细说明。
58.如图1所示,本发明实现测试方法包括如下步骤:
59.(1)初始化过程中handle_init.py会先从config.ini中读取工具相关的默认配置,对测试工具进行配置;
60.(2)主程序run_main.py函数执行pytest命令,执行指定项目的测试用例;
61.(3)调用基于xlrd和xlutils.copy库的handle_getexceldata.py读取用例数据参数;
62.(4)调用基于telnetlib库的handle_telnet_excute.py使用telnet远程登录待测设备dut并下发上一步返回的ubus命令参数;
63.(5)在测试用例中进行相关数据项的校验,根据测试结果是否与预期一致判断该条测试用例执行结果,并记录该测试用例执行结果;
64.(6)判断是否有下一条测试用例,如果是,返回执行步骤(3),测试下一条测试用例,如果否,调用allure工具生成测试报告,结束。
65.其中,步骤(1)中,安装requirements.txt文件中的环境依赖包配置,完成python环境配置,然后在config目录下的config.ini文件中完成项目需要的变量配置,包括telnet账号密码、默认wifi账号密码配置、默认wan联网配置、电脑mac地址配置。
66.步骤(2)中,数据驱动excel操作,所述测试用例通过定义filename文件名区分不同模块的excel文档,再调用实现实例化的getexceldata方法生成excel测试用例集exceldata,用于后续测试用例中参数的调用。
67.步骤(4)中,调用基于telnetlib库的handle_telnet_excute.py函数使用telnet远程登录待测设备并下发返回的ubus命令参数,具体处理过程为:
68.s41:从配置文件中读取变量配置信息;
69.s42:调用telnetlib库的open方法函数;
70.s43:输入用户名密码后输入相关指令进入命令模式;
71.s44:下方从excel中读取的ubus命令。
72.步骤(5)中,在测试用例中进行相关数据项的校验,校验步骤包括如下子步骤:
73.s51:判断校验命令返回值是否与预期保持一致,如果是,执行步骤s52,如果否,执行步骤s54;
74.s52:设置命令使用对应查询命令查看返回值是否下发成功,如果是,执行步骤s53,否则,执行步骤s54;
75.s53:调用函数校验配置是否实际生效,如果是,标记测试用例执行成功,然后执行步骤s6,如果否,执行步骤s54;
76.s54:标记该条测试用例执行失败,并记录错误日志,然后执行步骤s6。
77.步骤s6中,所述测试用例执行完成之后会将报告以json的格式保存在指定目录下,然后使用自动化报告生成工具将json格式转换成html格式输出。本地通过浏览器打开测试报告如图2所示。
78.本发明与目前的常规测试相比,有以下的优点:
79.(1)降低ubus测试项的门槛,无需深入了解ubus命令行的详细实现,简单学习工具使用就可以完成ubus测试;
80.(2)常规测试需要机械式的重复操作,耗时长且枯燥,使用本工具可以提升效率,节省人力;
81.(3)常规手工测试复次数较多,有时手动会出现误操作导致测试结果不准确,自动化脚本在模块之间进行环境清理,稳定输出测试结果,降低漏测率和复测率;
82.(4)常规测试执行完之后没有记录存档,工具执行完不仅会输出完整的测试报告,还有具体测试的日志文件,方便后续问题回溯跟踪。
83.以上所述之具体实施方式为本发明的较佳实施方式,并非以此限定本发明的具体实施范围,本发明的范围包括并不限于本具体实施方式,凡依照本发明所作的等效变化均在本发明的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1