基于模块编译工具MBS的软件测试方法、系统及介质技术方案

技术编号:37957260 阅读:10 留言:0更新日期:2023-06-30 09:30
本发明专利技术提供一种基于模块编译工具MBS的软件测试方法、系统及介质,包括:开发人员将需要执行的bash shell脚本保存至CaseDB,与测试项名字绑定,并为模块指定相应的测试项,将对应关系保存至CaseDB;监听MBS所在的fedmsg消息总线上的消息,通过ansibleconsumer对获取的消息筛选;根据从fedmsg消息中获取模块信息,在数据库中查找对应的测试项及bash脚本;将所获取的bash脚本转换为beakerlib脚本;根据获取到的测试项为模块构建ansible剧本,并调用ansible执行剧本以完成测试任务。开发人员可利用bash脚本轻易地写出满足要求的测试任务。利用bash脚本轻易地写出满足要求的测试任务。

【技术实现步骤摘要】
基于模块编译工具MBS的软件测试方法、系统及介质


[0001]本专利技术涉及服务器操作系统软件自动化测试
,具体为一种基于模块编译工具MBS的软件测试方法、系统及介质。

技术介绍

[0002]早期的linux发行版中,每一个发行版本只支持某个软件的一个特定版本。对于某些用户来说,如果系统版本发布太快,搭载了最新的软件版本,就可能导致应用程序兼容性脱节。用户若想要使用特定版本的软件,必须自己构建软件包。随着操作系统的发展,出现了模块化的概念,可以将软件包进行模块化,使得软件包构建者可以轻松构建软件的替代版本,并让用户可以更简单地安装使用这些软件流。Module Build Service(MBS)工具即是为模块化构建而生,它提供了一系列模块构建的接口,校验定义模块的modulemd文件,并为koji编译系统准备编译环境并向koji提交编译任务以完成模块编译任务。
[0003]现有的MBS工具在设计之初使用taskotron(一个自动执行任务的框架)进行软件测试,但taskotron的生命周期已于2020年5月终止,后续不再开发和维护。
[0004]现有的其他自动化测试方法在与MBS工具对接时有三点问题:一是现有的其他自动化测试方法为了兼容多数情况,往往体量大,达成满意效果所需的部署配置较复杂且开发人员的学习成本高;二是现有的自动化测试方法通常仅对某个软件包进行测试,不符合模块的概念;三是现有的其他自动化测试方法在通信方式和格式上与现有的模块编译技术存在不兼容问题,无法直接与MBS工具结合;给使用MBS的开发人员带来了较大不便。

技术实现思路

[0005]本专利技术的目的之一在于提供一种基于模块编译工具MBS的软件测试方法,以解决现有的使用MBS工具进行模块化编译软件时,存在的没有直接适配的模块测试工具,现有自动化测试工具需要较为复杂的配置甚至二次开发,且对于开发人员来说测试工具学习成本高的问题。
[0006]本专利技术的目的之二在于提供一种基于模块编译工具MBS的软件测试系统,以解决现有的使用MBS工具进行模块化编译软件时,存在的没有直接适配的模块测试工具,现有自动化测试工具需要较为复杂的配置甚至二次开发,且对于开发人员来说测试工具学习成本高的问题。
[0007]本专利技术的目的之三在于提供一种计算机可读存储介质,以解决现有的使用MBS工具进行模块化编译软件时,存在的没有直接适配的模块测试工具,现有自动化测试工具需要较为复杂的配置甚至二次开发,且对于开发人员来说测试工具学习成本高的问题。
[0008]本专利技术的目的之一是这样实现的:
[0009]本专利技术的一种基于模块编译工具MBS的软件测试方法,包括以下步骤:
[0010]步骤S1、开发人员将需要执行的bash shell脚本保存至CaseDB,并与测试项名字绑定,并为每个模块指定相应的测试项,将对应关系保存至CaseDB;
[0011]步骤S2、fedmsg

hub监听MBS所在的fedmsg消息总线上的消息,并传递给ansibleconsumer模块,ansibleconsumer模块对获取到的消息做筛选,若消息代表某模块编译完成则进行下一步,否则忽略;
[0012]步骤S3、ansibleconsumer模块从fedmsg消息中获取模块信息,在数据库CaseDB中查找对应的测试项及bash shell脚本;
[0013]步骤S4、ansibleconsumer模块将所获取的bash shell脚本转换为beakerlib脚本;
[0014]步骤S5、ansibleconsumer模块根据获取到的测试项为模块构建ansible剧本,并调用ansible执行剧本以完成测试任务。
[0015]后续依照定制的docker镜像创建一个容器,并在容器中执行测试任务,然后将测试结果上传至resultsDB。
[0016]依照定制的docker镜像创建一个容器,并在容器中执行测试任务,然后将测试结果上传至resultsDB的具体步骤为:
[0017]步骤S6、ansible通过定制的docker镜像运行出一个容器环境,向所述容器传入beakerlib脚本并执行,完成测试任务,并将测试结果存储至容器外的指定临时目录,最终销毁容器;
[0018]步骤S7、ansibleconsumer模块收集ansible输出的测试结果,保存到指定目录。
[0019]步骤S8、ansibleconsumer模块将各测试项对应的测试结果通过resultsDB提供的API上传至resultsDB。
[0020]其中,所述CaseDB,用于存储模块测试项和对应的bash shell脚本内容。
[0021]其中,在步骤S1中,CaseDB前端通过python flask提供web服务,后端采用postgresql作为数据存储;CaseDB存在测试用例表case_table、以及模块名称与案例的对应关系表mapping_table,其中测试用例表中测试项名称case_name及其对应脚本case_shell为一对一关系,模块名称与案例的对应关系表中模块名称module_name和测试项名称case_name为多对多关系。
[0022]其中,由AnsibleConsumer类继承fedmsg.consumers.FedmsgConsumer类的全部内容,并对AnsibleConsumer类进行下列变更:
[0023]设置成员变量topic为“*”,用于监听所有话题;设置成员变量config_key为“ansibleconsumer”,用于在fedmsg

hub中激活;
[0024]增加process和que成员,用于保存子进程和任务队列;
[0025]重载__init__函数,在构造函数中初始化多个运行tester函数的子进程用于执行测试任务,并将该子进程保存至子进程数组process,初始化一个进程安全的队列que存放任务信息;
[0026]重载__del__函数,在销毁前等待子进程退出。
[0027]重载consumer函数,检查消息类型和模块状态,若符合条件则将消息放入任务队列que中。
[0028]其中,步骤S6中的所述docker镜像的具体定制过程为:
[0029]以fedora镜像为基础,替换yum源为局域网yum源以解决网络受限问题;
[0030]安装beakerlib,rsync,make,beakerlib

libraries软件包作为beakerlib的运行
环境;
[0031]安装modulemd

tools及其依赖包作为模块构建环境。
[0032]本专利技术的目的之二是这样实现的:
[0033]本专利技术的一种基于模块编译工具MBS的软件测试系统,用于实现上述任一项所述的基于模块编译工具MBS的软件测本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于模块编译工具MBS的软件测试方法,其特征在于,包括以下步骤:步骤S1、开发人员将需要执行的bash shell脚本保存至CaseDB,并与测试项名字绑定,并为每个模块指定相应的测试项,将对应关系保存至CaseDB;步骤S2、fedmsg

hub监听MBS所在的fedmsg消息总线上的消息,并传递给ansibleconsumer模块,ansibleconsumer模块对获取到的消息做筛选,若消息代表某模块编译完成则进行下一步,否则忽略;步骤S3、ansibleconsumer模块从fedmsg消息中获取模块信息,在数据库CaseDB中查找对应的测试项及bash shell脚本;步骤S4、ansibleconsumer模块将所获取的bash shell脚本转换为beakerlib脚本;步骤S5、ansibleconsumer模块根据获取到的测试项为模块构建ansible剧本,并调用ansible执行剧本以完成测试任务;后续依照定制的docker镜像创建一个容器,并在容器中执行测试任务,然后将测试结果上传至resultsDB。2.根据权利要求1所述的基于模块编译工具MBS的软件测试方法,其特征在于,依照定制的docker镜像创建一个容器,并在容器中执行测试任务,然后将测试结果上传至resultsDB的具体步骤为:步骤S6、ansible通过定制的docker镜像运行出一个容器环境,向所述容器传入beakerlib脚本并执行,完成测试任务,并将测试结果存储至容器外的指定临时目录,最终销毁容器;步骤S7、ansibleconsumer模块收集ansible输出的测试结果,保存到指定目录。步骤S8、ansibleconsumer模块将各测试项对应的测试结果通过resultsDB提供的API上传至resultsDB。3.根据权利要求1所述的基于模块编译工具MBS的软件测试方法,其特征在于,所述CaseDB,用于存储模块测试项和对应的bash shell脚本内容。4.根据权利要求1所述的基于模块编译工具MBS的软件测试方法,其特征在于,在步骤S1中,CaseDB前端通过python flask提供web服务,后端采用postgresql作为数据存储;CaseDB存在测试用例表case_table、以及模块名称与案例的对应关系表mapping_table,其中测试用例表中测试项名称case_name及其对应脚本case_shell为一对一关系,模块名称与案例的对应关系表中模块名称module_name和测试项名称case_name为多对多关系。5.根据权利要求1所述的基于模块编译工具MBS的软件测试方法,其特征在于,由AnsibleConsumer类继承fedmsg.consumers.FedmsgConsumer类的全部内容,并对AnsibleConsumer类进行下列变更:设置成员变量topic为“*”,用于监听所有话题;设置成员变量config_key为“ans...

【专利技术属性】
技术研发人员:金芝光邹华超
申请(专利权)人:麒麟软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1