一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种MCS系统的自动化测试装置、方法、设备及介质与流程

2021-11-05 22:22:00 来源:中国专利 TAG:

一种mcs系统的自动化测试装置、方法、设备及介质
技术领域
1.本技术涉及存储技术领域,特别涉及一种mcs系统的自动化测试装置、方法、电子设备及计算机可读存储介质。


背景技术:

2.在mcs(mutiple controller system多控存储系统)开发过程中,模块开发完成后需要对新增功能以及系统原有功能进行回归测试和验证,保证系统正常可靠运行。相关技术中的传统测试方法大多采用人工方式,人工输入命令查看命令执行结果,判断功能是否正常,手动填写测试报告,存在大量重复性工作,需要投入大量人力进行测试工作,产品研发效率低,测试可靠性差。鉴于此,提供一种解决上述技术问题的方案,已经是本领域技术人员所亟需关注的。


技术实现要素:

3.本技术的目的在于提供一种mcs系统的自动化测试装置、方法、电子设备及计算机可读存储介质,以便有效提高测试效率和正确率,降低人力开发成本。
4.为解决上述技术问题,一方面,本技术公开了一种mcs系统的自动化测试装置,应用于与运行mcs系统的被测设备连接的测试主机,所述装置采用pytest自动化测试框架,配置有paramiko工具库、allure工具库,所述装置包括:
5.配置模块,用于在所述测试主机中配置所述被测设备的设备信息和测试结果配置信息;
6.测试控制模块,用于自动执行测试控制脚本;所述测试控制脚本在被执行时用于调用所述paramiko工具库建立与所述被测设备的ssh连接,并在执行完各类功能测试命令获取测试结果数据后,基于所述paramiko工具库关闭所述ssh连接;
7.生成模块,用于基于所述allure工具库生成系统测试报告。
8.可选地,所述测试控制模块在调用所述paramiko工具库建立与所述被测设备的ssh连接时,具体用于:
9.创建paramiko ssh客户端;
10.设置主机密码策略为自动添加策略;
11.依据所述被测设备的设备信息,建立与所述被测设备中配置节点的ssh连接。
12.可选地,所述测试控制模块在执行各类功能测试命令获取测试结果数据时,具体用于:
13.执行功能测试命令以获取命令返回信息;
14.对所述命令返回信息进行字符串截取以获取结果字符串;
15.将所述结果字符串与所述测试结果配置信息的正则表达式进行匹配比较;
16.通过assert函数输出匹配到的测试结果数据。
17.可选地,所述测试控制模块在执行功能测试命令以获取命令返回信息时,具体用
于:
18.若当前功能测试命令为节点命令,则以交互模式执行所述节点命令以获取命令返回信息;
19.若当前功能测试命令为集群命令,则以非交互模式执行所述集群命令以获取命令返回信息。
20.可选地,所述测试控制模块在以交互模式执行所述节点命令时,具体用于:
21.通过ssh.invoke_shell函数启动交互模式;
22.通过channel.send函数执行所述节点命令;
23.通过channel.recv函数获取加密后的命令返回信息;
24.通过resp.decode函数基于utf

8获取解码后的命令返回信息。
25.可选地,所述测试控制模块在以非交互模式执行所述集群命令时,具体用于:
26.通过ssh.exec_command函数执行所述集群命令;
27.通过std::out函数获取命令返回信息。
28.可选地,所述被测设备的设备信息包括:
29.所述被测设备中配置节点的ip、端口号、ssh登录用户名、密码;
30.所述测试结果配置信息基于json文件格式采用机型

模块名称

参数名称的分层管理结构。
31.又一方面,本技术还公开了一种mcs系统的自动化测试方法,应用于与运行mcs系统的被测设备连接的测试主机,所述测试主机上安装有自动化测试装置,所述装置采用pytest自动化测试框架,配置有paramiko工具库、allure工具库,包括配置模块、测试控制模块和生成模块;所述方法包括:
32.调用所述配置模块,在所述测试主机中配置所述被测设备的设备信息和测试结果配置信息;
33.调用所述测试控制模块自动执行测试控制脚本;所述测试控制脚本在被执行时用于调用所述paramiko工具库建立与所述被测设备的ssh连接,并在执行完各类功能测试命令后,基于所述paramiko工具库关闭所述ssh连接;
34.调用所述生成模块基于所述allure工具库生成系统测试报告。
35.可选地,所述调用所述paramiko工具库建立与所述被测设备的ssh连接,具体包括:
36.创建paramiko ssh客户端;
37.设置主机密码策略为自动添加策略;
38.依据所述被测设备的设备信息,建立与所述被测设备中配置节点的ssh连接。
39.可选地,所述执行各类功能测试命令获取测试结果数据,具体包括:
40.执行功能测试命令以获取命令返回信息;
41.对所述命令返回信息进行字符串截取以获取结果字符串;
42.将所述结果字符串与所述测试结果配置信息的正则表达式进行匹配比较;
43.通过assert函数输出匹配到的测试结果数据。
44.可选地,所述执行功能测试命令以获取命令返回信息,具体包括:
45.若当前功能测试命令为节点命令,则以交互模式执行所述节点命令以获取命令返
回信息;
46.若当前功能测试命令为集群命令,则以非交互模式执行所述集群命令以获取命令返回信息。
47.可选地,所述以交互模式执行所述节点命令,具体包括:
48.通过ssh.invoke_shell函数启动交互模式;
49.通过channel.send函数执行所述节点命令;
50.通过channel.recv函数获取加密后的命令返回信息;
51.通过resp.decode函数基于utf

8获取解码后的命令返回信息。
52.可选地,所述以非交互模式执行所述集群命令,具体包括:
53.通过ssh.exec_command函数执行所述集群命令;
54.通过std::out函数获取命令返回信息。
55.可选地,所述被测设备的设备信息包括:
56.所述被测设备中配置节点的ip、端口号、ssh登录用户名、密码;
57.所述测试结果配置信息基于json文件格式采用机型

模块名称

参数名称的分层管理结构。
58.又一方面,本技术还公开了一种电子设备,包括:
59.存储器,用于存储计算机程序;
60.处理器,用于执行所述计算机程序以实现如上所述的任一种mcs系统的自动化测试方法的步骤。
61.又一方面,本技术还公开了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用以实现如上所述的任一种mcs系统的自动化测试方法的步骤。
62.本技术所提供的mcs系统的自动化测试装置、方法、电子设备及计算机可读存储介质所具有的有益效果是:本技术利用pytest基于python语言构建自动化测试框架,基于paramiko工具库自动管理测试主机与被测设备的ssh通信链接,并通过测试控制脚本的执行实现自动化测试,极大缩短了测试时间,且测试用例一经编写后可长久使用,极大提高了研发效率并降低了人力成本。
附图说明
63.为了更清楚地说明现有技术和本技术实施例中的技术方案,下面将对现有技术和本技术实施例描述中需要使用的附图作简要的介绍。当然,下面有关本技术实施例的附图描述的仅仅是本技术中的一部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图,所获得的其他附图也属于本技术的保护范围。
64.图1为本技术实施例公开的一种mcs系统的自动化测试装置的应用场景图;
65.图2为本技术实施例公开的一种mcs系统的自动化测试装置的结构框图;
66.图3为本技术实施例公开的一种测试结果配置的示意图;
67.图4为本技术实施例公开的一种mcs系统的自动化测试方法的流程图;
68.图5为本技术实施例公开的又一种mcs系统的自动化测试方法的流程图;
69.图6为本技术实施例公开的一种电子设备的结构框图。
具体实施方式
70.本技术的核心在于提供一种mcs系统的自动化测试装置、方法、电子设备及计算机可读存储介质,以便有效提高测试效率和正确率,降低人力开发成本。
71.为了对本技术实施例中的技术方案进行更加清楚、完整地描述,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行介绍。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
72.当前,针对mcs(mutiple controller system多控存储系统)系统的开发测试过程中,传统测试方法大多采用人工方式,人工输入命令查看命令执行结果,判断功能是否正常,手动填写测试报告,存在大量重复性工作,需要投入大量人力进行测试工作,产品研发效率低,测试可靠性差。鉴于此,本技术提供了一种mcs系统的自动化测试方案,可有效解决上述问题。
73.参见图1,图1为本技术实施例所公开的一种mcs系统的自动化测试装置的应用场景图。如图1所示,测试主机和被测设备构成了测试系统,其中,测试主机通过ssh(secure shell,安全外壳协议)网络连接被测设备的配置节点,测试主机上具体可运行winodws操作系统或者linux操作系统,并且配置python运行环境及paramiko、pytest、allure等工具类库。被测设备包括配置节点和伙伴节点(partner节点)上运行mcs系统,建立存储集群。
74.参见图2,图2为本技术实施例公开的一种mcs系统的自动化测试装置的结构框图。该装置应用于与运行mcs系统的被测设备连接的测试主机,采用pytest自动化测试框架,配置有paramiko工具库、allure工具库,该装置包括:
75.配置模块101,用于在测试主机中配置被测设备的设备信息和测试结果配置信息;
76.测试控制模块102,用于自动执行测试控制脚本;测试控制脚本在被执行时用于调用paramiko工具库建立与被测设备的ssh连接,并在执行完各类功能测试命令后,基于paramiko工具库关闭ssh连接;
77.生成模块103,用于基于allure工具库生成系统测试报告。
78.具体地,pytest是一种基于python(跨平台计算机程序设计语言)语言的全功能测试框架。本技术所提供的自动化测试装置具体便是基于python语言,利用pytest构建了自动化测试框架。在此基础上,还配置有相关的工具类库,包括paramiko工具库,这是一种基于python的模块,支持以加密和认证方式进行远程服务器连接,包括支持ssh这一加密网络传输协议的网络连接;还包括allure工具库,这是一种轻量级多语言报告生成工具。
79.具体的测试方案包括被测设备配置、测试结果配置、测试控制脚本执行、测试报告生成四个过程。其中,被测设备配置是为了令测试主机获取被测设备的设备信息,以便建立双方之间的网络连接。测试结果配置是为了明确测试结果的存储结构与形式等。在测试执行之前,本技术需要基于配置模块101为测试主机配置被测设备的设备信息以及测试结果配置信息。
80.测试控制脚本用于实现自动化测试的主要测试内容。每个测试控制脚本可具体由setup_function()、teardown_function()、一般函数、各类功能测试函数这四部分构成。
其中,不同功能测试函数在文件中可具体以test 功能名函数区分;setup_function()一般在每个测试开始前执行;teardown_function()一般在每个测试结束后运行;一般函数可以被其他函数调用。测试控制脚本的主要实现过程是:
81.调用setup_function()从配置文件中获取被测设备的配置节点的ssh配置信息;通过paraniko模块建立与被测设备的配置节点的ssh链接;执行各类功能测试函数;调用teardown_function(),通过paramiko模块关闭ssh链接。当所有功能测试函数执行完成后,便可调用生成模块103基于allure工具库生成系统测试报告。
82.可见,本技术所提供的mcs系统的自动化测试装置,利用pytest基于python语言构建自动化测试框架,基于paramiko工具库自动管理测试主机与被测设备的ssh通信链接,并通过测试控制脚本的执行实现自动化测试,极大缩短了测试时间,且测试用例一经编写后可长久使用,极大提高了研发效率并降低了人力成本。
83.作为一种具体实施例,本技术实施例所提供的mcs系统的自动化测试装置在上述内容的基础上,测试控制模块102在调用paramiko工具库建立与被测设备的ssh连接时,具体用于:
84.创建paramiko ssh客户端;
85.设置主机密码策略为自动添加策略;
86.依据被测设备的设备信息,建立与被测设备中配置节点的ssh连接。
87.其中,被测设备的设备信息具体指ssh配置信息,包括:被测设备中配置节点的ip、端口号、ssh登录用户名、密码。
88.作为一种具体实施例,本技术实施例所提供的mcs系统的自动化测试装置在上述内容的基础上,测试控制模块102在执行各类功能测试命令获取测试结果数据时,具体用于:
89.执行功能测试命令以获取命令返回信息;
90.对命令返回信息进行字符串截取以获取结果字符串;
91.将结果字符串与测试结果配置信息的正则表达式进行匹配比较;
92.通过assert函数输出匹配到的测试结果数据。
93.其中,具体地,可利用re.match函数对结果字符串与正则表达式进行匹配比较。
94.作为一种具体实施例,本技术实施例所提供的mcs系统的自动化测试装置在上述内容的基础上,测试控制模块102在执行功能测试命令以获取命令返回信息时,具体用于:
95.若当前功能测试命令为节点命令,则以交互模式执行节点命令以获取命令返回信息;
96.若当前功能测试命令为集群命令,则以非交互模式执行集群命令以获取命令返回信息。
97.具体地,本实施例在执行功能测试命令时具体实现了针对集群命令和节点命令不同执行方式的覆盖,从而对于集群命令和节点命令均能有效实现。
98.作为一种具体实施例,本技术实施例所提供的mcs系统的自动化测试装置在上述内容的基础上,测试控制模块102在以交互模式执行节点命令时,具体用于:
99.通过ssh.invoke_shell函数启动交互模式;
100.通过channel.send函数执行节点命令;
101.通过channel.recv函数获取加密后的命令返回信息;
102.通过resp.decode函数基于utf

8获取解码后的命令返回信息。
103.其中,utf

8即8位元,universal character set/unicode transformation format,是针对unicode的一种可变长度字符编码。
104.作为一种具体实施例,本技术实施例所提供的mcs系统的自动化测试装置在上述内容的基础上,测试控制模块102在以非交互模式执行集群命令时,具体用于:
105.通过ssh.exec_command函数执行集群命令;
106.通过std::out函数获取命令返回信息。
107.无论是集群命令还是节点命令,在执行了测试命令后,均可通过所设定的参数——alluredir即目录名,将测试过程中的有关数据生成在指定目录中,进而通过后续数据处理生成测试结果数据。
108.参见图3,图3为本技术实施例公开的一种测试结果配置的示意图。如图3所示,作为一种具体实施例,本技术实施例所提供的mcs系统的自动化测试装置在上述内容的基础上,测试结果配置信息基于json文件格式采用机型

模块名称

参数名称的分层管理结构。
109.参见图4所示,本技术实施例公开了一种mcs系统的自动化测试方法,应用于与运行mcs系统的被测设备连接的测试主机,该测试主机上安装有自动化测试装置,该装置采用pytest自动化测试框架,配置有paramiko工具库、allure工具库,包括配置模块、测试控制模块和生成模块;该方法包括:
110.s201:调用配置模块,在测试主机中配置被测设备的设备信息和测试结果配置信息。
111.s202:调用测试控制模块自动执行测试控制脚本;测试控制脚本在被执行时用于调用paramiko工具库建立与被测设备的ssh连接,并在执行完各类功能测试命令后,基于paramiko工具库关闭ssh连接。
112.s203:调用生成模块基于allure工具库生成系统测试报告。
113.可见,本技术实施例所公开的mcs系统的自动化测试方法,利用pytest基于python语言构建自动化测试框架,基于paramiko工具库自动管理测试主机与被测设备的ssh通信链接,并通过测试控制脚本的执行实现自动化测试,极大缩短了测试时间,且测试用例一经编写后可长久使用,极大提高了研发效率并降低了人力成本。
114.关于上述mcs系统的自动化测试方法的具体内容,可参考前述关于mcs系统的自动化测试装置的详细介绍,这里就不再赘述。
115.作为一种具体实施例,本技术实施例所公开的mcs系统的自动化测试方法在上述内容的基础上,调用paramiko工具库建立与被测设备的ssh连接,具体包括:
116.创建paramiko ssh客户端;
117.设置主机密码策略为自动添加策略;
118.依据被测设备的设备信息,建立与被测设备中配置节点的ssh连接。
119.作为一种具体实施例,本技术实施例所公开的mcs系统的自动化测试方法在上述内容的基础上,执行各类功能测试命令获取测试结果数据,具体包括:
120.执行功能测试命令以获取命令返回信息;
121.对命令返回信息进行字符串截取以获取结果字符串;
122.将结果字符串与测试结果配置信息的正则表达式进行匹配比较;
123.通过assert函数输出匹配到的测试结果数据。
124.作为一种具体实施例,本技术实施例所公开的mcs系统的自动化测试方法在上述内容的基础上,执行功能测试命令以获取命令返回信息,具体包括:
125.若当前功能测试命令为节点命令,则以交互模式执行节点命令以获取命令返回信息;
126.若当前功能测试命令为集群命令,则以非交互模式执行集群命令以获取命令返回信息。
127.作为一种具体实施例,本技术实施例所公开的mcs系统的自动化测试方法在上述内容的基础上,以交互模式执行节点命令,具体包括:
128.通过ssh.invoke_shell函数启动交互模式;
129.通过channel.send函数执行节点命令;
130.通过channel.recv函数获取加密后的命令返回信息;
131.通过resp.decode函数基于utf

8获取解码后的命令返回信息。
132.作为一种具体实施例,本技术实施例所公开的mcs系统的自动化测试方法在上述内容的基础上,以非交互模式执行集群命令,具体包括:
133.通过ssh.exec_command函数执行集群命令;
134.通过std::out函数获取命令返回信息。
135.作为一种具体实施例,本技术实施例所公开的mcs系统的自动化测试方法在上述内容的基础上,被测设备的设备信息包括:
136.被测设备中配置节点的ip、端口号、ssh登录用户名、密码;
137.测试结果配置信息基于json文件格式采用机型

模块名称

参数名称的分层管理结构。
138.上述内容可对照参见图5,图5为本技术实施例公开的一种测试过程的流程图,主要包括:
139.s301:基于setup_function()和paraniko模块建立与被测设备的ssh通信链接。
140.s302:判断当前功能测试命令是集群命令还是节点命令;若是节点命令,则进入s303;若是集群命令,则进入s307。
141.s303:通过ssh.invoke_shell函数启动交互模式。
142.s304:通过channel.send函数执行节点命令。
143.s305:通过channel.recv函数获取加密后的命令返回信息。
144.s306:通过resp.decode函数基于utf

8获取解码后的命令返回信息;进入s309。
145.s307:通过ssh.exec_command函数执行集群命令。
146.s308:通过std::out函数获取命令返回信息;进入s309。
147.s309:对命令返回信息进行字符串截取以获取结果字符串。
148.s310:将结果字符串与测试结果配置信息的正则表达式进行匹配比较,通过assert函数输出匹配到的测试结果数据。
149.s311:基于teardown_function()和paraniko模块关闭ssh通信链接。
150.s312:判断是否执行完所有测试用例;若是则进入s313;若否,则进入s301继续执
行。
151.s313:基于allure工具库生成系统测试报告。
152.参见图6所示,本技术实施例公开了一种电子设备,包括:
153.存储器401,用于存储计算机程序;
154.处理器402,用于执行所述计算机程序以实现如上所述的任一种mcs系统的自动化测试方法的步骤。
155.进一步地,本技术实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用以实现如上所述的任一种mcs系统的自动化测试方法的步骤。
156.关于上述电子设备和计算机可读存储介质的具体内容,可参考前述关于mcs系统的自动化测试装置的详细介绍,这里就不再赘述。
157.本技术中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的设备而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
158.还需说明的是,在本技术文件中,诸如“第一”和“第二”之类的关系术语,仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或者操作之间存在任何这种实际的关系或者顺序。此外,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
159.以上对本技术所提供的技术方案进行了详细介绍。本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献