Redfish自动化测试方法、系统、设备和存储介质与流程
未命名
09-13
阅读:252
评论:0
redfish自动化测试方法、系统、设备和存储介质
技术领域
1.本发明涉及自动化测试技术领域,特别是涉及一种redfish自动化测试方法、系统、设备和存储介质。
背景技术:
2.redfish是一种基于https服务的管理标准,利用restful接口实现设备管理。每个https操作都以utf-8编码的json格式提交或返回一个资源或结果,并通过统一的管理界面,提供更加简单化、现代化的管理功能,能够对服务器硬件进行全方位的接口管理、监控、适配,便于进行下一步的开发以及测试工作。openbmc是一种开源版本的bmc,用于更好的访问和控制bmc。
3.目前,现有的openbmc redfish测试手法,多半是通过产品/项目所提供的openbmc redfish接口说明文档,通过postman等软件工具来进行测试,即通过填写测试信息,并由postman返回相应的返回值消息体,测试人员根据这些返回值来判断是否正确,最后撰写测试报告等操作,现有的测试方法不仅操作十分复杂,而且耗费时间较多,有着较多的重复性工作,十分的繁琐。因此,亟需一种能够对redfish进行自动化测试的方法,以减少自动化测试人员对openbmc redfish手动测试的困难性以及繁琐性。
技术实现要素:
4.为了解决上述技术问题,本发明提供了一种redfish自动化测试方法、系统、设备和存储介质,以能够解决手工测试的复杂繁琐,达到简单高效的实现redfish自动化测试的目的。
5.为了达到上述目的,第一方面,本发明提供了一种redfish自动化测试方法,所述方法包括:
6.根据选择的若干个待测试项创建redfish会话,并根据所述待测试项的会话号,获取所述待测试项的返回值;
7.根据所述待测试项的功能类型,选择相应的标准值获取方式,以得到所述待测试项对应的标准值;
8.根据所述待测试项的操作类型,对所述返回值和所述标准值进行匹配,并根据匹配结果生成所述待测试项的测试结果。
9.进一步地,所述根据选择的若干个待测试项创建redfish会话的步骤包括:
10.判断所述待测试项的数量是否大于阈值,若是,则按照阈值对所述待测试项进行组别划分,并依次对每组所述待测试项创建一次redfish会话,若否,则对全部所述待测试项创建一次redfish会话。
11.进一步地,所述根据所述待测试项的功能类型,选择相应的标准值获取方式,以得到所述待测试项对应的标准值的步骤包括:
12.若所述待测试项的功能类型是硬件信息获取功能,则通过bmc web获取所述待测
试项对应的标准值,若否,则通过ipmitool指令获取所述待测试项对应的标准值。
13.进一步地,所述对所述返回值和所述标准值进行匹配的步骤包括:
14.根据所述返回值和所述标准值的数据类型,对所述返回值和所述标准值进行数据转换;
15.对转换后的所述返回值和转换后的所述标准值进行匹配。
16.第二方面,本发明提供了一种redfish自动化测试系统,所述系统包括:
17.返回值获取模块,用于根据选择的若干个待测试项创建redfish会话,并根据所述待测试项的会话号,获取所述待测试项的返回值;
18.标准值获取模块,用于根据所述待测试项的功能类型,选择相应的标准值获取方式,以得到所述待测试项对应的标准值;
19.测试结果生成模块,用于根据所述待测试项的操作类型,对所述返回值和所述标准值进行匹配,并根据匹配结果生成所述待测试项的测试结果。
20.进一步地,所述标准值获取模块,还用于若所述待测试项的功能类型是硬件信息获取功能,则通过bmc web获取所述待测试项对应的标准值,若否,则通过ipmitool指令获取所述待测试项对应的标准值。
21.进一步地,所述测试结果生成模块包括第一匹配模块;
22.所述第一匹配模块,用于若所述待测试项的操作类型仅为get操作,则将所述返回值与所述标准值进行匹配,得到所述待测试项的匹配结果。
23.进一步地,所述测试结果生成模块包括第二匹配模块;
24.所述第二匹配模块,用于若所述待测试项的操作类型包括post操作,将所述返回值与所述标准值进行匹配,得到第一匹配结果;
25.若所述第一匹配结果为匹配成功,则使用post操作执行相应的新增功能;获取所述新增功能相对应的第一返回值和第一标准值,将所述第一返回值与所述第一标准值进行匹配,得到第二匹配结果,并将所述第二匹配结果作为所述待测试项的匹配结果;
26.若所述第一匹配结果为匹配不成功,则将所述第一匹配结果作为所述待测试项的匹配结果。
27.进一步地,所述测试结果生成模块包括第三匹配模块;
28.所述第三匹配模块,用于若所述待测试项的操作类型包括patch操作,将所述返回值与所述标准值进行匹配,得到第三匹配结果;
29.若所述第三匹配结果为匹配成功,则使用patch操作执行相应的更新功能;获取所述更新功能相对应的第二返回值和第二标准值,将所述第二返回值和所述第二标准值进行匹配,得到第四匹配结果,并将所述第四匹配结果作为所述待测试项的匹配结果;
30.若所述第三匹配结果为匹配不成功,则将所述第三匹配结果作为所述待测试项的匹配结果。
31.第三方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
32.第四方面,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
33.本发明提供了一种redfish自动化测试方法、系统、计算机设备和存储介质,通过所述方法,能够减少自动化测试人员对openbmc redfish进行手动测试的困难性以及繁琐性,从而提高了openbmc redfish的url测试的覆盖率和效率,进一步提高了自动化测试的测试效果。
附图说明
34.图1是基于postman软件对openbmc redfish进行测试的流程示意图;
35.图2是本发明实施例中redfish自动化测试方法的流程示意图;
36.图3是本发明实施例中redfish自动化测试方法的另一种流程示意图;
37.图4是图2中步骤s20的流程示意图;
38.图5是图2中步骤s30的流程示意图;
39.图6是图2中步骤s30的另一种流程示意图;
40.图7是本发明实施例中redfish自动化测试方法的第三种流程示意图;
41.图8是本发明实施例中redfish自动化测试方法的测试结果展示示意图;
42.图9是本发明实施例中redfish自动化测试方法的生成的测试文档示意图;
43.图10是本发明实施例中redfish自动化测试系统的结构示意图;
44.图11是本发明实施例中redfish自动化测试系统的另一种结构示意图;
45.图12是本发明实施例中redfish自动化测试系统的实现过程示意图;
46.图13是本发明实施例中redfish自动化测试系统选择待测试项的示意图;
47.图14是本发明实施例中计算机设备的内部结构图。
具体实施方式
48.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
49.在对本发明的技术方案进行说明之前,先对本发明涉及到的技术关键词进行解释:bmc:基板管理控制器(baseboard management controller),独立于机器的微型系统,监控机器的温度、风扇、健康状态、电压等,以使机器处于健康状态;openbmc:一种开放/开源版本的bmc;redfish:一种基于https服务的管理标准,利用restful接口实现设备管理;ipmitool:一种可用在linux系统下的命令行方式的ipmi平台管理工具,支持ipmi1.5规范,可以实现获取传感器的信息、显示系统日志内容、网络远程开关机等功能;python:一种跨平台的计算机程序设计语言;python requests库:python里的requests库,是使用apache2 licensed许可证的基于python开发的http库,有get、post、patch等常用操作;postman:一种网页调试与发送网页http请求的chrome插件;bmc web:一种基于bmc之上的web页面,用户可以通过在浏览器输入bmc ip来登录,并在上面查看到服务器相关的硬件设备信息以及告警日志等。
50.请参阅图1,目前对于openbmc redfish的测试方法,多半是通过产品/项目所提供的openbmc redfish接口说明文档,通过postman等软件工具来进行测试,具体为通过
postman提供的网页填写相应的测试需求,来获取对应的返回值,测试时填写的信息包括:
①
测试url、
②
请求头信息、
③
请求体信息、
④
请求方式,在将上述信息点击发送之后,在postman中会得到相应的
⑤
返回值的消息体,测试人员会根据这些返回值来判断是否正确,最后进行撰写测试报告等操作,现有的测试方法不仅操作十分复杂,而且耗费时间较多,有着较多的重复性工作,十分的繁琐。为了减少自动化测试人员对openbmc redfish手动测试的困难性以及繁琐性,本发明提供了一种基于linux平台的openbmc redfish的自动化测试方法。
51.请参阅图2,本发明第一实施例提出的一种redfish自动化测试方法,包括步骤s10~s30:
52.步骤s10,根据选择的若干个待测试项创建redfish会话,并根据所述待测试项的会话号,获取所述待测试项的返回值。
53.本发明是对openbmc redfish进行的自动化测试,在测试之前需要先对测试环境进行配置,配置步骤包括:在linux系统上安装python和ipmitool工具,并在linux命令行下进入到测试主路径,然后填写相应的配置参数,包括bmcip、bmcwebip、systemip以及账号密码等信息,比如可以填写如下配置信息:
54.bmcip=
‘
10.100.100.1’55.bmcwebip=
‘
10.100.100.2’56.systemip=
‘
10.100.100.3’57.username=
‘
admin’58.password=
‘
admin’59.sysusername=
‘
root’60.syspassword=
‘
1234567’61.在环境配置完成之后,就可以选择待测试项即需要进行测试的测试用例(test case),本发明可以对openbmc redfish的各个接口进行自动化测试,比如sessionservice、managers、public、systems、chassis、accountservice、updateservice、eventservice等,由于redfish是一种基于https服务的管理标准,因此可以认为一个待测试项就是对一个redfish url的返回值进行测试,就比如图1中填写的
①
即为一个待测试的redfish url,通过执行图1所示的测试用例来获取该url对应的返回值,实际上,一次redfish会话可以基于多个待测试项进行建立,因此,如果选择了多个case进行测试,可以针对所选择的多个case建立一次redfish会话,这种会话建立方式虽然减少了建立redfish会话的次数,但是会存在一个问题,就是当case的数量过多时,会导致测试的总时间过长,在一次redfish会话中会出现bmc session超时现象,为了避免这种情况,本发明提供了一个优选的实施例,在该实施例中:
62.判断所述待测试项的数量是否大于阈值,若是,则按照阈值对所述待测试项进行组别划分,并依次对每组所述待测试项创建一次redfish会话,若否,则对全部所述待测试项创建一次redfish会话。
63.请参阅图3,本实施例先对待测试项的数量设置了一个阈值,比如设置阈值为20,在测试开始之后,先判断测试用例的总数量是否超过了阈值,如果没有超过,则通过createsession创建redfish会话,通过getsessionid获取redfish的id号,并按照选择的顺
序执行测试,直到所有测试用例均测试完成,最后通过deletesessionid来删除redfish的id号,结束本次测试。
64.如果超过了阈值,则按照阈值将测试用例划分成多个测试组,一个测试组创建一次redfish会话,对于每个测试组进行的测试与上述未超过阈值的步骤在前半部分是一致的,其区别在于,在一组测试用例被顺序执行测试之后,会通过deletesessionid来删除redfish的id号,然后针对下一组测试用例重新创建一次redfish会话,直到所有的测试用例都执行完成,也就是说,本实施例通过执行多次创建/删除会话动作来避免超时情况的发生。
65.在一次redfish会话的测试过程中,可以通过createsession创建redfish会话,并通过getsessionid获取redfish的id号,然后基于id号来获取该测试用例即url返回的信息,需要说明的是,本发明提供的自动化测试方法可以采用python语言利用python requests库来构建脚本实现自动化测试,当然也可以采用其他语言来构建脚本,在此不做具体的限制,下面仅以python语言为例,对本发明提供的测试方法进行说明。
66.在得到redfish的id号之后,就可以使用python的python requests库中的requests.get来获取openbmc redfish的url的返回信息,当然,为了验证该接口是否正常运行,还需要获取该url对应的标准信息来进行校验。
67.步骤s20,根据所述待测试项的功能类型,选择相应的标准值获取方式,以得到所述待测试项对应的标准值。
68.对于openbmc redfish的url的标准值的获取,常规采用的方法可以采用ipmitool工具执行相关的ipmitool指令来获取比如传感器信息、系统日志内容等标准信息,但是ipmitool获取的bmc参数值大多数是一个指令一个返回结果,因此在标准值的获取时会十分的繁琐,影响标准值的获取效率,为了解决这一问题,本发明提供了一个优选的实施例对标准值的获取方式进行了优化,在该实施例中:
69.若所述待测试项的功能类型是硬件信息获取功能,则通过bmc web获取所述待测试项对应的标准值,若否,则通过ipmitool指令获取所述待测试项对应的标准值。
70.请参阅图4,在本实施例的标准获取过程中,会先判断该测试用例的功能类型,如果该测试用例是用于获取硬件信息,比如用于获取cpu、内存、硬盘、pcie卡、网卡等设备的型号、数量、产品序列号、固件版本号等信息,对于该测试用例的标准值就可以通过bmc web来直接获取,bmc web是服务器bmc的一个web界面,用户通过bmc web页面可以获取相应的硬件信息,例如cpu、内存、硬盘、pcie卡、网卡设置等的型号、数量、产品序列号等参数信息,并能查看相应的sel log告警信息。本实施例利用bmc web的这一功能,通过执行一条指令就可以获得上述的这部分信息,同时也可以通过测试人员直接登录bmc web来查看这部分标准信息值,而不必利用ipmitool工具进行繁琐标准值获取操作;如果该测试用例是其他的功能,那么仍需要通过ipmitool指令来获取对应的标准值。本实施例通过对不同功能的测试用例采用不同的标准值获取方式,提高了标准值的获取效率,进一步提高了自动化测试的测试效率。
71.步骤s30,根据所述待测试项的操作类型,对所述返回值和所述标准值进行匹配,并根据匹配结果生成所述待测试项的测试结果。
72.在常规的自动化测试中,对于redfish的接口功能,基本都是通过get函数来获取
测试的url的返回信息,但是实际上对于redfish中的url,其对应的操作类型不仅仅包括get操作,还有可能包括其他的操作类型。通过上述介绍可知,redfish的数据传输是基于超文本传输协议http,其request格式包括method、request-url和http-version,其中,method即为url对应的操作类型,包括get、post、patch和delete。下面进行举例说明:
73.其中,10.100.100.1为bmc ip地址;
74.get为获取操作,比如获取系统账户信息:
75.get操作:url:10.100.100.1/redfish/v1/accountservice;
76.post为新增操作和执行操作,比如新增一个账户:
77.post操作:url:10.100.100.1/redfish/v1/accountservice/accounts,请求体为{“username”:“test01”,“password”:“123456”};
78.patch为更新操作,比如更新账户密码:
79.patch操作:url:10.100.100.1/redfish/v1/accountservice/accounts/test01,
80.{“password”:“654321”};
81.detele为删除操作,比如删除一个账户:
82.detele操作:url:10.100.100.1/redfish/v1/accountservice/accounts/01;
83.也就是说,openbmc redfish包含了多种url,每种url对应的操作类型可以有一种或者多种,比如对于账户信息,可以通过get操作来获取账户信息,也可以通过post操作来新增账户,对于新增的账户信息还可以使用delete操作进行删除。
84.对于常规的redfish进行的自动化测试时,只是通过get操作来获取该url的返回值,然后通过将返回值与标准值进行比较来判断该case是否运行正常,但是对于其他的比如更新或者新增等操作,并没有给出具体的测试过程,即测试并没有覆盖到修改或者新增等功能。为了提高redfish自动化测试的测试覆盖率,本发明提供了一个优选的实施例,在该实施例中对于不同的url采用了不同的测试流程。
85.请参阅图5,在本实施例中,在得到redfish的id号,并使用python的python requests库中的requests.get来获取openbmc redfish的url的返回信息之后,会对url的操作类型进行判断,如果该url的操作类型仅有get操作,那么按照返回值与标准值的匹配结果来判定其测试是否通过,如果该url的操作类型还包括post操作或者patch操作,那么就根据操作类型对redfish url执行相应的requests.post操作或requests.patch操作之后,再进行标准值与返回值的比较,根据比较结果生成该测试项的测试结果,同时将测试过程和测试结果输出到log里,并整理成文档比如pdf、txt等格式的文档,以便于查看测试的具体情况,最后删除redfish会话结束本次测试。
86.具体的,对不同操作类型的url的匹配过程包括:
87.若所述待测试项的操作类型仅为get操作,则将所述返回值与所述标准值进行匹配,得到所述待测试项的匹配结果。
88.其中,如果该url仅支持get操作,那么只需要通过将返回值与标准值进行匹配,就可以判定其测试结果,即实现了对该url功能的覆盖测试。
89.进一步地,若所述待测试项的操作类型包括post操作,将所述返回值与所述标准值进行匹配,得到第一匹配结果;
90.若所述第一匹配结果为匹配成功,则使用post操作执行相应的新增功能,获取所
述新增功能相对应的第一返回值和第一标准值,将所述第一返回值与所述第一标准值进行匹配,得到第二匹配结果,并将所述第二匹配结果作为所述待测试项的匹配结果;
91.若所述第一匹配结果为匹配不成功,则将所述第一匹配结果作为所述待测试项的匹配结果。
92.其中,对于url还支持post操作的情况,先通过get函数获取的返回值与标准值进行第一次匹配,如果匹配不成功,则认为该url的测试结果异常,如果匹配成功,则需要进行第二次匹配,在第二次匹配过程中,会对url执行相应的post新增操作,比如该url为查询用户信息,在第一次匹配成功后,会通过post函数增加一个用户,然后通过上述返回值和标准值的获取步骤,重新获取该新增功能对应的返回值和标准值,进行第二次匹配,只有第二次匹配成功的情况下,才判定该url的测试结果正常,否则,就认为该url的测试结果异常。通过本实施例的这种二次匹配方式,能够提高对于具有post功能的url的测试覆盖率,使测试结果更精准,从而提高了自动化测试的测试效率和测试效果。
93.进一步地,若所述待测试项的操作类型包括patch操作,将所述返回值与所述标准值进行匹配,得到第三匹配结果;
94.若所述第三匹配结果为匹配成功,则使用patch操作执行相应的更新功能,获取所述更新功能相对应的第二返回值和第二标准值,将所述第二返回值和所述第二标准值进行匹配,得到第四匹配结果,并将所述第四匹配结果作为所述待测试项的匹配结果;
95.若所述第三匹配结果为匹配不成功,则将所述第三匹配结果作为所述待测试项的匹配结果。
96.其中,对于url还支持patch操作的情况,先通过get函数获取的返回值与标准值进行第一次匹配,如果匹配不成功,则认为该url的测试结果异常,如果匹配成功,则需要进行第二次匹配,在第二次匹配过程中,会对url执行相应的patch更新操作,比如该url为查询服务器id灯的状态,若返回状态为关闭状态,在第一次匹配成功后,会通过patch函数更新服务器id灯为开启状态,然后通过上述返回值和标准值的获取步骤,重新获取该更新功能对应的返回值和标准值,进行第二次匹配,只有第二次匹配成功的情况下,才判定该url的测试结果正常,否则,就认为该url的测试结果异常。通过本实施例的这种二次匹配方式,能够提高对于具有patch功能的url的测试覆盖率,使测试结果更精准,从而提高了自动化测试的测试效率和测试效果。
97.当然对于url还支持delete操作的情况,同理,也可以通过二次匹配来对该url进行测试,比如对于用户信息,在第一次匹配成功后,可以通过delete函数删除该用户信息,然后再通过get函数查询剩余的用户信息,就可以测试出该delete操作是否成功,从而对该url的测试结果做出更准确的判断。基于本发明提供的测试方法,可以对openbmc redfish的大部分通用接口进行测试,具有较高的测试覆盖率,从而能够对redfish的测试结果做出更准确的判断,并且本发明提供的测试方法不仅仅可以对openbmc redfish通用的url部分进行测试,还可以对开发或者定值的url进行测试,通过该url返回值来生成测试用例,同时利用ipmitool或者bmc web获取的值进行比对,根据比对结果作出判断即可,也就是说,本发明可以通过自主添加case来适应更多redfish的功能测试,具有极高的可拓展性。
98.进一步地,对于返回值与标准值的匹配过程,常规的做法是直接拿来进行比较,但是在实际情况中,有部分值是无法直接用来比较的,比如字母的大小写、字符串带有空格、
以及数据的单位格式等等,为了解决这一问题,本发明还提供了一个优选的实施例来避免有部分值无法进行比较的情况出现。
99.在本实施例中,会先对返回值和标准值的数据进行统一的数据转换,然后再对转换后的返回值和标准值进行匹配,其转换的类型包括数字类型、字符串类型、以及布尔类型,其中,对于数字类型,会将返回值和标准值统一转换为float类型数据,并保留相同的小数位;对于字符串类型,则将二者统一转换为str类型数据,并统一调整空格和大小写,比如统一调整为大写并删除空格;对于布尔类型,则将二者统一转换为bool类型数据。下面以具体数据为例,对本实施例的数据转换过程进行说明。
100.请参阅图6,比对信息即为返回值和标准值,若比对信息为数字类型,比如5v电压值,返回值为5.10000,而标准值则为5.1,因此,将二者统一转换为float类型,并保留相同的小数位,比如小数点后两位,因此,返回值和标准值都转换为5.10。若比对信息为字符串类型,比如内存型号,返回值为m393a2k40d,而标准值为m393a2k40d,因此将二者的大小写进行统一,即都转换为了m393a2k40d。若比对信息为布尔类型,比如散热策略是能够开启,返回值为true,而标准值为“true”,此时将二者统一转换为true,当然标准值也可能是“false”,此时标准值会被转换成false,对于统一转换后的返回值和标准值,就可以直接进行匹配,通过本实施例提供的数据转换方法,能够避免返回值和标准值无法进行匹配或者匹配结果不准确的情况发生,确保了本发明的测试方法实施测试用例的完整性,进一步提高了测试结果的准确性。
101.请参阅图7,下面通过具体的实施例对本发明提供的测试方法的测试流程进行详细说明:
102.在环境配置完成,并选择好待测试项后,开始进行测试,判断redfish url是否仅支持get操作,即只具有get功能,如果是,则通过requests.get获取相应的信息,比如openbmc redfish cup页面信息,然后判断返回值与获取到的标准值是否一致来生成测试结果。
103.若redfish url还支持post操作,则先进行第一次匹配,比如通过requests.get获取返回的用户信息,然后与对应的标准值进行匹配,在第一次匹配成功后,通过requests.post创建bmc用户test01包括密码和用户权限等,然后进行第二次匹配,即通过requests.get获取新增的用户test01的用户信息,同时获取相应的标准值,再进行返回值与标准值的匹配,根据匹配结果来生成测试结果。
104.若redfish url还支持patch操作,则先进行第一次匹配,比如通过requests.get获取服务器id灯为关闭状态,然后将该返回值与获取的标准值进行匹配,在第一次匹配成功后,通过requests.patch将服务器id灯修改为开启状态,然后再获取该状态下的返回值和标准值进行匹配,并根据匹配结果来生成测试结果。
105.在上述标准值的获取步骤中,可以采用本发明提供的通过bmc web页面或者ipmitool指令的方式获取标准值,当然也可以采用其他工具或者指令获取标准值,并且根据匹配成功与否,来决定测试结果pass或者fail,若测试结果为pass,则可以结束该次测试,若测试结果为fail,则可以进行重测或者对测试过程进行具体分析,比如通过工具将每项测试用例对应的测试结果打印出来,即如图8所示,以便于测试人员进行debug分析,同时还将测试内容整理生成pdf文档、timefile.txt文件和tmp.log文件等,从而可以较为直观
的看到测试结果,即如图9所示,pdf可以标识出pass项目和fail项目,txt和log文件则是较为详细的记录了测试内容以及debug值,便于测试人员直接对fail项进行debug,最终来判断这部分测试的结果是否通过测试,后续的处理过程可以根据实际情况确定,在此不再一一赘述。
106.本实施例提供的一种redfish自动化测试方法,相比传统方法具有手工测试繁琐、测试用例不完整、以及测试覆盖率较低等问题,本发明通过不同的标准值获取方式,提高了标准值的获取效率,通过二次匹配的方式覆盖测试了redfish大部分的通用接口,具有较高的测试覆盖率,并通过数据转换匹配的方式保证了测试用例实施的完整性,提高了自动化测试的测试效率和测试效果。进一步地还可以基于本发明提供的实现逻辑自主添加case来适应更多redfish的功能测试,因此本发明还具有极高的可拓展性。
107.请参阅图10,基于同一发明构思,本发明第二实施例提出的一种redfish自动化测试系统,包括:
108.返回值获取模块10,用于根据选择的若干个待测试项创建redfish会话,并根据所述待测试项的会话号,获取所述待测试项的返回值;
109.标准值获取模块20,用于根据所述待测试项的功能类型,选择相应的标准值获取方式,以得到所述待测试项对应的标准值;
110.测试结果生成模块30,用于根据所述待测试项的操作类型,对所述返回值和所述标准值进行匹配,并根据匹配结果生成所述待测试项的测试结果。
111.本发明提供了一种基于linux平台的openbmc redfish自动化测试系统,能够减少自动化测试人员对openbmc redfish手动测试的困难性以及繁琐性,并且能够覆盖测试redfish大部分的通用接口,具有较高的测试覆盖率,进一步提高了redfish自动化测试的测试效率和测试效果。
112.请参阅图11,在一个优选的实施例中,返回值获取模块10还包括:
113.会话创建模块11,用于判断所述待测试项的数量是否大于阈值,若是,则按照阈值对所述待测试项进行组别划分,并依次对每组所述待测试项创建一次redfish会话,若否,则对全部所述待测试项创建一次redfish会话。
114.通过本实施例提供的多次创建/删除会话动作,能够避免由于测试用例过多而出现的bmc session超时现象,从而提高了测试的执行效率。
115.进一步地,在另一个优选的实施例中,标准值获取模块20还用于若所述待测试项的功能类型是硬件信息获取功能,则通过bmc web获取所述待测试项对应的标准值,若否,则通过ipmitool指令获取所述待测试项对应的标准值。
116.本实施例通过对不同功能的测试用例采用不同的标准值获取方式,提高了标准值的获取效率,进一步提高了自动化测试的测试效率。
117.进一步地,在另一个优选的实施例中,测试结果生成模块30还包括:
118.第一匹配模块31,用于若所述待测试项的操作类型仅为get操作,则将所述返回值与所述标准值进行匹配,得到所述待测试项的匹配结果。
119.本发明通过返回值和标准值的一次匹配,就可以实现操作类型为get操作的url功能的覆盖测试,进一步实现了对于redfish的自动化测试。
120.进一步地,在另一个优选的实施例中,测试结果生成模块30还包括:
121.第二匹配模块31,用于若所述待测试项的操作类型包括post操作,将所述返回值与所述标准值进行匹配,得到第一匹配结果;
122.若所述第一匹配结果为匹配成功,则使用post操作执行相应的新增功能;获取所述新增功能相对应的第一返回值和第一标准值,将所述第一返回值与所述第一标准值进行匹配,得到第二匹配结果,并将所述第二匹配结果作为所述待测试项的匹配结果;
123.若所述第一匹配结果为匹配不成功,则将所述第一匹配结果作为所述待测试项的匹配结果。
124.通过本实施例的这种二次匹配方式,能够提高对于具有post功能的url的测试覆盖率,使测试结果更精准,从而提高了自动化测试的测试效率和测试效果。
125.进一步地,在另一个优选的实施例中,测试结果生成模块30还包括:
126.第三匹配模块33,用于若所述待测试项的操作类型包括patch操作,将所述返回值与所述标准值进行匹配,得到第三匹配结果;
127.若所述第三匹配结果为匹配成功,则使用patch操作执行相应的更新功能;获取所述更新功能相对应的第二返回值和第二标准值,将所述第二返回值和所述第二标准值进行匹配,得到第四匹配结果,并将所述第四匹配结果作为所述待测试项的匹配结果;
128.若所述第三匹配结果为匹配不成功,则将所述第三匹配结果作为所述待测试项的匹配结果。
129.通过本实施例的这种二次匹配方式,能够提高对于具有patch功能的url的测试覆盖率,使测试结果更精准,从而提高了自动化测试的测试效率和测试效果。
130.基于本发明提供的测试系统,可以对openbmc redfish的大部分通用接口进行测试,具有较高的测试覆盖率,从而能够对redfish的测试结果做出更准确的判断,并且本发明提供的测试系统不仅仅可以对openbmc redfish通用的url部分进行测试,还可以对开发或者定值的url进行测试,通过该url返回值来生成测试用例,同时利用ipmitool或者bmc web获取的值进行比对,根据比对结果作出判断即可,也就是说,本发明可以通过自主添加case来适应更多redfish的功能测试,具有极高的可拓展性。
131.进一步地,在另一个优选的实施例中,测试结果生成模块30还包括:
132.数据转换模块34,用于根据所述返回值和所述标准值的数据类型,对所述返回值和所述标准值进行数据转换;
133.对转换后的所述返回值和转换后的所述标准值进行匹配。
134.通过本实施例提供的数据转换模块,能够避免返回值和标准值无法进行匹配或者匹配结果不准确的情况发生,使本发明的测试系统能够完整的实施测试用例,进一步提高了测试结果的准确性。
135.在另一个优选的实施例中,本发明提供的测试系统可以基于python的unittest框架进行搭建,根据openbmc redfish的通用接口可以划分为多个通用测试项模块,每个测试项模块的测试流程就按照上述的测试系统的相关模块进行测试,此外,本实施例中还包括环境配置模块(env.py)、测试项选择模块(newcase.txt)、测试主程序模块(main.py)、openbmc通用测试项模块(1-sessionservice、2-managers、3-public、4-systems、5-chassis、6-accountservice、7-updateservice、8-eventservice、a-pretest)和测试文档生成模块(log.py),其中,测试主程序模块在根据测试项选择模块去调用openbmc通用测试
项模块进行测试用例的测试时,会调用上述的返回值获取模块、标准值获取模块、测试结果生成模块来对测试用例进行测试,基于该理论,就可以搭建出一个完整的测试系统。
136.请参阅图12,本实施例提供的redfish自动化测试系统的实现过程包括:首先搭建服务器的测试环境,即先在linux系统上安装python和ipmitool工具,在linux命令行下进入到测试主路径,然后填写env.py文件的配置参数比如bmcip、账号等信息,然后填写newcase.txt文件来选择要运行的测试项,比如图13所示的newcase.txt文件,等号左边为对应的测试项,右边1为执行测试,0为不执行测试,然后运行测试主程序main.py,根据选择的测试项执行openbmc通用测试项模块进行测试,可以看到选择的待测试项有31个,假定阈值为20,则针对前20个待测试项生成一次redfish会话进行测试,并在测试完成后执行测试文档生成模块,生成pdf文档、timefile.txt文件和tmp.log文件,以供测试人员进行查看和分析,然后删除会话号,并根据其他待测试项再次创建redfish会话,直到所有待测试项测试完成。
137.本发明实施例提出的redfish自动化测试系统的技术特征和技术效果与本发明实施例提出的方法相同,在此不予赘述。上述redfish自动化测试系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
138.请参阅图14,一个实施例中计算机设备的内部结构图,该计算机设备具体可以是终端或服务器。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示器和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现redfish自动化测试方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
139.本领域普通技术人员可以理解,图14中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算设备可以包括比途中所示更多或更少的部件,或者组合某些部件,或者具有相同的部件布置。
140.此外,本发明实施例还提出一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述方法的步骤。
141.此外,本发明实施例还提出一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法的步骤。
142.综上,本发明实施例提出的redfish自动化测试方法、系统、设备和存储介质,所述方法通过根据选择的若干个待测试项创建redfish会话,并根据所述待测试项的会话号,获取所述待测试项的返回值;根据所述待测试项的功能类型,选择相应的标准值获取方式,以得到所述待测试项对应的标准值;根据所述待测试项的操作类型,对所述返回值和所述标准值进行匹配,并根据匹配结果生成所述待测试项的测试结果。本发明减少了自动化测试
人员对openbmc redfish手动测试的困难性以及繁琐性,通过不同的标准值获取方式,提高了标准值的获取效率,并通过二次匹配的方式覆盖测试了redfish大部分的通用接口,具有较高的测试覆盖率,并通过数据转换匹配的方式保证了测试用例实施的完整性,从而提高了redfish自动化测试的测试效率和测试效果。
143.本说明书中的各个实施例均采用递进的方式描述,各个实施例直接相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。需要说明的是,上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
144.以上所述实施例仅表达了本技术的几种优选实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和替换,这些改进和替换也应视为本技术的保护范围。因此,本技术专利的保护范围应以所述权利要求的保护范围为准。
技术特征:
1.一种redfish自动化测试方法,其特征在于,包括:根据选择的若干个待测试项创建redfish会话,并根据所述待测试项的会话号,获取所述待测试项的返回值;根据所述待测试项的功能类型,选择相应的标准值获取方式,以得到所述待测试项对应的标准值;根据所述待测试项的操作类型,对所述返回值和所述标准值进行匹配,并根据匹配结果生成所述待测试项的测试结果。2.根据权利要求1所述的redfish自动化测试方法,其特征在于,所述根据选择的若干个待测试项创建redfish会话的步骤包括:判断所述待测试项的数量是否大于阈值,若是,则按照阈值对所述待测试项进行组别划分,并依次对每组所述待测试项创建一次redfish会话,若否,则对全部所述待测试项创建一次redfish会话。3.根据权利要求1所述的redfish自动化测试方法,其特征在于,所述根据所述待测试项的功能类型,选择相应的标准值获取方式,以得到所述待测试项对应的标准值的步骤包括:若所述待测试项的功能类型是硬件信息获取功能,则通过bmc web获取所述待测试项对应的标准值,若否,则通过ipmitool指令获取所述待测试项对应的标准值。4.根据权利要求1所述的redfish自动化测试方法,其特征在于,所述对所述返回值和所述标准值进行匹配的步骤包括:根据所述返回值和所述标准值的数据类型,对所述返回值和所述标准值进行数据转换;对转换后的所述返回值和转换后的所述标准值进行匹配。5.一种redfish自动化测试系统,其特征在于,包括:返回值获取模块,用于根据选择的若干个待测试项创建redfish会话,并根据所述待测试项的会话号,获取所述待测试项的返回值;标准值获取模块,用于根据所述待测试项的功能类型,选择相应的标准值获取方式,以得到所述待测试项对应的标准值;测试结果生成模块,用于根据所述待测试项的操作类型,对所述返回值和所述标准值进行匹配,并根据匹配结果生成所述待测试项的测试结果。6.根据权利要求5所述的redfish自动化测试系统,其特征在于,所述标准值获取模块,还用于若所述待测试项的功能类型是硬件信息获取功能,则通过bmc web获取所述待测试项对应的标准值,若否,则通过ipmitool指令获取所述待测试项对应的标准值。7.根据权利要求5所述的redfish自动化测试系统,其特征在于,所述测试结果生成模块包括第一匹配模块;所述第一匹配模块,用于若所述待测试项的操作类型仅为get操作,则将所述返回值与所述标准值进行匹配,得到所述待测试项的匹配结果。8.根据权利要求5所述的redfish自动化测试系统,其特征在于,所述测试结果生成模块包括第二匹配模块;所述第二匹配模块,用于若所述待测试项的操作类型包括post操作,将所述返回值与
所述标准值进行匹配,得到第一匹配结果;若所述第一匹配结果为匹配成功,则使用post操作执行相应的新增功能;获取所述新增功能相对应的第一返回值和第一标准值,将所述第一返回值与所述第一标准值进行匹配,得到第二匹配结果,并将所述第二匹配结果作为所述待测试项的匹配结果;若所述第一匹配结果为匹配不成功,则将所述第一匹配结果作为所述待测试项的匹配结果。9.根据权利要求5所述的redfish自动化测试系统,其特征在于,所述测试结果生成模块包括第三匹配模块;所述第三匹配模块,用于若所述待测试项的操作类型包括patch操作,将所述返回值与所述标准值进行匹配,得到第三匹配结果;若所述第三匹配结果为匹配成功,则使用patch操作执行相应的更新功能;获取所述更新功能相对应的第二返回值和第二标准值,将所述第二返回值和所述第二标准值进行匹配,得到第四匹配结果,并将所述第四匹配结果作为所述待测试项的匹配结果;若所述第三匹配结果为匹配不成功,则将所述第三匹配结果作为所述待测试项的匹配结果。10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述方法的步骤。11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的方法的步骤。
技术总结
本发明涉及自动化测试技术领域,公开了Redfish自动化测试方法、系统、设备和存储介质,包括根据选择的若干个待测试项创建Redfish会话,并根据待测试项的会话号,获取待测试项的返回值;根据待测试项的功能类型,选择相应的标准值获取方式,以得到待测试项对应的标准值;根据待测试项的操作类型,对所述返回值和所述标准值进行匹配,并根据匹配结果生成所述待测试项的测试结果。本发明通过不同的标准值获取方式,提高了标准值的获取效率,通过二次匹配的方式覆盖测试了Redfish大部分的通用接口,具有较高的测试覆盖率,并通过数据转换匹配的方式保证了测试用例实施的完整性,提高了自动化测试的测试效率和测试效果。提高了自动化测试的测试效率和测试效果。提高了自动化测试的测试效率和测试效果。
技术研发人员:叶立夫 马振鹏 杜少华 张苗苗 王春平
受保护的技术使用者:合芯科技有限公司
技术研发日:2023.06.16
技术公布日:2023/9/12
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
