CN117349094A - 测试固态硬盘功能交互的方法、装置、设备及存储介质 - Google Patents

测试固态硬盘功能交互的方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN117349094A
CN117349094A CN202311277028.5A CN202311277028A CN117349094A CN 117349094 A CN117349094 A CN 117349094A CN 202311277028 A CN202311277028 A CN 202311277028A CN 117349094 A CN117349094 A CN 117349094A
Authority
CN
China
Prior art keywords
test
function
script
test process
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311277028.5A
Other languages
English (en)
Inventor
葛宁
车利斌
靳嘉晖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Original Assignee
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd filed Critical Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority to CN202311277028.5A priority Critical patent/CN117349094A/zh
Publication of CN117349094A publication Critical patent/CN117349094A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test input/output devices or peripheral units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2273Test methods

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及计算机技术领域,公开了一种测试固态硬盘功能交互的方法、装置、设备及存储介质,方法应用于测试平台,方法包括:获取分别对第一功能和第二功能独立进行测试的第一测试脚本和第二测试脚本,第一功能和第二功能是固态硬盘的不同功能;通过同一测试节点同时运行第一测试脚本和第二测试脚本,进行对第一功能和第二功能的交互测试。本发明实现了功能交互测试的同时只需利用现有测试脚本进行测试,降低了针对功能交互测试的脚本设计复杂度,相比单独设计的功能交互测试的测试脚本覆盖更加全面。

Description

测试固态硬盘功能交互的方法、装置、设备及存储介质
技术领域
本发明涉及计算机技术领域,具体涉及一种测试固态硬盘功能交互的方法、装置、设备及存储介质。
背景技术
当前以云计算、大数据、人工智能为代表的新一代信息技术日新月异,互联网、移动终端和物联网的迅猛发展,导致企业客户的信息数据呈现爆炸性增长,对存储的需求日益增加。NVMe SSD(Non Volatile Memory express Solid State Disk,非易失性内存主机控制器接口规范的固态硬盘)使用NAND芯片作为存储介质,使用NVMe和PCIe接口,相比传统硬盘,读写速率大幅提升,时延显著降低,并且在能耗和可靠性方面也有一定优势。进而,对NVMe SSD的质量要求也越来越高,在功能、性能、可靠性、可维护性等各方面都要全面覆盖。而从测试角度看,NVMe SSD包含众多功能,其中不乏一个功能运行另一个功能也运行的情况,从而功能之间都存在交互的可能,所以交互场景是NVMe SSD测试中必须覆盖的部分,需要通过测试发现哪些功能会与哪些功能发生冲突,具体是应为什么原因发生冲突,所以交互测试也是比较容易发现漏洞的部分。而目前的交互测试主要依赖研发人员思考功能之间交互的可能,进一步细化假设交互场景,针对交互场景去设计测试用例和脚本开发,执行脚本完成测试。但是这种测试手段受限于研发人员的设计能力,主观性太强,其设计的交互测试用例也可能存在交互场景覆盖不全的情况,从而造成bug遗漏,对项目带来风险,对产品造成不良影响。
发明内容
有鉴于此,本发明提供了一种测试固态硬盘功能交互的方法、装置、设备及存储介质,以解决固态硬盘功能交互测试覆盖不完全的问题。
第一方面,本发明提供了一种测试固态硬盘功能交互的方法,方法应用于测试平台,方法包括:获取分别对第一功能和第二功能独立进行测试的第一测试脚本和第二测试脚本,第一功能和第二功能是固态硬盘的不同功能;通过同一测试节点同时运行第一测试脚本和第二测试脚本,进行对第一功能和第二功能的交互测试。
本实施例提供的技术方案通过分别获取不同功能独立测试时使用的测试脚本,并在同一个测试节点中同时运行不同功能的测试脚本,从而利用现有的测试脚本在同一个测试节点中两两搭配运行,实现了功能交互测试的同时只需利用现有测试脚本进行测试,降低了针对功能交互测试的脚本设计复杂度,相比单独设计的功能交互测试的测试脚本覆盖更加全面。
在一种可选地实施方式中,获取分别对第一功能和第二功能独立进行测试的第一测试脚本和第二测试脚本,包括:从测试脚本管理模块确定第一功能对应的第一测试用例和第二功能对应的第二测试用例;提取第一测试用例包含的多个第一测试脚本,并提取第二测试用例包含的多个第二测试脚本。
本实施例利用用于单独测试每个功能的测试脚本所对应的全部测试脚本两两在同一测试节点运行,显著提高了测试用例的数量,提高了测试场景的覆盖面,提高了测试准确性。
在一种可选地实施方式中,通过同一测试节点同时运行第一测试脚本和第二测试脚本,进行对第一功能和第二功能的交互测试,包括:分别创建用于测试第一功能的第一测试进程和用于测试第二功能的第二测试进程;将第一测试进程和第二测试进程进行关联,以使第一测试进程和第二测试进程其中一个失败时,令两个测试进程都停止;将第一测试进程、第二测试进程、第一测试脚本和第二测试脚本下发到目标测试节点中;通过目标测试节点控制第一测试进程执行第一测试脚本,同时控制第二测试进程执行第二测试脚本;监听目标测试节点在运行第一测试进程和第二测试进程时产生的测试结果。
本实施例通过预开发的测试平台,分别创建用于执行不同功能测试脚本的测试进程,之后,为了保证功能交互测试的可靠性,通过测试平台将准备测试的不同测试进程关联,以使两个测试进程其中一个失败时,令两个测试进程都停止,从而在不同功能之间的冲突产生时及时发现,确定是在哪个脚本运行时发生的冲突,避免后续测试脚本的运行影响当前冲突情况的判断。最后通过测试平台将两个测试进程下发到同一个测试节点运行,通过测试平台监听目标测试节点在运行第一测试进程和第二测试进程时产生的测试结果,保证冲突场景在第一时间反馈给测试平台进行记录,提高测试准确性。
在一种可选地实施方式中,将第一测试进程和第二测试进程进行关联,包括:获取第一功能和第二功能的已知冲突信息;当已知冲突信息表征第一功能的执行会导致第二功能的失败,或者第二功能的执行会导致第一功能的失败时,给被导致失败的功能所对应的测试进程添加不停机标记;在第一测试进程和第二测试进程关联时,根据不停机标记修改停止策略,以使没有不停机标记的测试进程失败时,令两个测试进程都停止,标有不停机标记的测试进程失败时,令两个测试进程继续执行;当已知冲突信息表征第一功能和第二功能没有冲突时,直接关联第一测试进程和第二测试进程,以使第一测试进程和第二测试进程其中一个失败时,令两个测试进程都停止。
本实施例针对一项功能会导致另一项功能失败的已知冲突信息,从而对被导致失败的功能对应的测试进程添加不停机标记,从而在带有标记的测试进程失败时,测试过程依然继续,两个进程不停止,避免重复获取已知的冲突测试结果,从而显著提高测试效率。
在一种可选地实施方式中,删除第一测试脚本和第二测试脚本中测试开始和测试结束时的信息查询代码,并删除日志导出代码。
本实施例还删除各个测试脚本中与测试结果无关的测试开始和测试结束时的信息查询代码以及日志导出代码,进一步提高测试效率。
在一种可选地实施方式中,方法还包括:当两个测试进程都停止时,强制目标测试节点下线。
测试平台对接的测试节点有多个,当某个目标测试节点中的两个测试进程都停止时,测试平台会强制目标测试节点下线,保留失败现场,便于用户进一步准确定位测试失败的原因。
在一种可选地实施方式中,第一功能是NDU功能,第二功能是重启、异常断电或热拔插中的一个,测试平台是Jenkins工具,通过同一测试节点同时运行第一测试脚本和第二测试脚本,进行对第一功能和第二功能的交互测试,包括:分别创建第一测试进程和第二测试进程,第一测试进程用于测试NDU功能,第二测试进程用于测试重启、异常断电或热拔插中的一个功能;为第一测试进程添加不停机标记;通过Matrix插件根据不停机标记将第一测试进程和第二测试进程进行关联,以使第一测试进程失败时令两个测试进程继续执行,并在第二测试进程失败时令两个测试进程都停止;将第一测试进程、第二测试进程、第一测试脚本和第二测试脚本下发到目标测试节点中;通过目标测试节点控制第一测试进程执行第一测试脚本,同时控制第二测试进程执行第二测试脚本;当第二测试进程执行失败时,令两个测试进程都停止时,并强制目标测试节点下线;在第一测试进程和第二测试进程执行时实时统计总测试脚本数量、通过的测试脚本数量、失败的测试脚本数量和未执行的测试脚本数量,并根据失败的测试脚本确定异常信息。
第二方面,本发明提供了一种测试固态硬盘功能交互的装置,装置应用于测试平台,装置包括:测试脚本获取模块,用于获取分别对第一功能和第二功能独立进行测试的第一测试脚本和第二测试脚本,第一功能和第二功能是固态硬盘的不同功能;集成测试模块,用于通过同一测试节点同时运行第一测试脚本和第二测试脚本,进行对第一功能和第二功能的交互测试。
第三方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的方法。
第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的方法。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的一种测试固态硬盘功能交互的方法的流程示意图;
图2是根据本发明实施例的另一个一种测试固态硬盘功能交互的方法的流程示意图;
图3是根据本发明实施例的一种测试固态硬盘功能交互的装置的结构示意图;
图4是本发明实施例的计算机设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
从测试角度看,NVMe SSD功能众多,例如读写、Trim、Format、Identity、set/getfeature、异步事件、GC、RM纠错、read disturb、Data retention等。其中Trim代表Data SetManagement Command(数据集管理命令)的Deallocate(解除分配)操作;Format表示用于低级格式化NVM媒介的Format NVM command操作;Data Retention是NAND flash的DataRetention特性,表示数据保存;namespace是命名空间;identify表示Identify command,即获取硬盘信息命令;Sanitize表示Sanitize command,用于数据安全擦除;Reset即Controller Level Reset,表示控制器重置;GC是垃圾回收,也是NAND特性;read disturb是NAND特性,表示读干扰。而上述功能存在交互的可能场景,例如读写与format交互、Trim与read disturb交互等,交互场景是NVMe SSD测试中必须覆盖的部分,也是比较容易发现bug的部分。针对相关技术受限于具体测试人员的测试设计能力,其设计的交互测试用例可能存在交互场景覆盖不全的情况,本发明实施例提供了如下技术方案。
根据本发明实施例,提供了一种测试固态硬盘功能交互的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种测试固态硬盘功能交互的方法,可用于上述的计算机设备,图1是根据本发明实施例的一种测试固态硬盘功能交互的方法的流程图,该流程包括如下步骤:
步骤S101,获取分别对第一功能和第二功能独立进行测试的第一测试脚本和第二测试脚本,第一功能和第二功能是固态硬盘的不同功能。
步骤S102,通过同一测试节点同时运行第一测试脚本和第二测试脚本,进行对第一功能和第二功能的交互测试。
具体地,本实施例提供的技术方案首先分别获取不同功能独立测试时使用的测试脚本,测试脚本指的是使用Python等编程语言实现的、可以在测试节点上执行的可执行代码文件,并且,本实施例中的测试脚本特指的是各个功能在不依赖其他功能的条件下,单独对自身功能进行测试的脚本。测试节点指的是是硬件层面的服务器。本发明实施例中的测试脚本通过测试脚本管理模块保存,当前实施例通过gerrit工具从测试脚本管理模块拉取测试脚本,也可以由其他配置管理工具实现,比如gitlab、SVN等,本实施例仅以此举例,不以此为限。之后,本发明实施例在同一个测试节点中同时运行不同功能的测试脚本,当不同功能都具有自身独立测试的测试脚本时,从而利用现有的测试脚本在同一个测试节点中两两搭配运行,实现了功能交互测试的同时只需利用现有测试脚本进行测试,降低了针对功能交互测试的脚本设计复杂度,相比单独设计的功能交互测试的测试脚本覆盖更加全面,显著提高了测试效率和测试准确度。
在一些可选地实施方式中,上述步骤S101,包括:
步骤a1,从测试脚本管理模块确定第一功能对应的第一测试用例和第二功能对应的第二测试用例;
步骤a2,提取第一测试用例包含的多个第一测试脚本,并提取第二测试用例包含的多个第二测试脚本。
具体地,测试用例指的是使用自然语言描述具体测试步骤、预期结果等信息的描述文本,通常对应于一个测试用例会包括多个测试脚本。基于此,当固态硬盘的第一功能和第二功能进行交互测试时,本实施例从测试脚本管理模块确定第一功能对应的第一测试用例和第二功能对应的第二测试用例,并提取对应测试用例包括的全部测试脚本,使得每个不同功能的每个测试脚本均可以两两之间进行配对测试,进一步提高了测试覆盖面,提高了测试准确率。
在一些可选地实施方式中,上述步骤S102包括:
步骤b1,分别创建用于测试第一功能的第一测试进程和用于测试第二功能的第二测试进程;
步骤b2,将第一测试进程和第二测试进程进行关联,以使第一测试进程和第二测试进程其中一个失败时,令两个测试进程都停止;
步骤b3,将第一测试进程、第二测试进程、第一测试脚本和第二测试脚本下发到目标测试节点中;
步骤b4,通过目标测试节点控制第一测试进程执行第一测试脚本,同时控制第二测试进程执行第二测试脚本;
步骤b5,监听目标测试节点在运行第一测试进程和第二测试进程时产生的测试结果。
具体地,本实施例通过预开发的测试平台实现测试进程的调度、测试脚本地分发和测试结果地统计,从而实现功能交互测试的全自动化管理。首先通过测试平台分别创建用于执行不同功能测试脚本的测试进程,例如某个第一测试进程job1和某个第二测试进程job2。之后,为了保证功能交互测试的可靠性,通过测试平台将准备测试的不同测试进程关联,即关联job1和job2。关联的目的是在两个测试进程其中一个失败时,令两个测试进程都停止,从而在不同功能之间的冲突产生时及时发现,确定是在哪个脚本运行时发生的冲突,由于进行测试的脚本较多,这一方式能够避免后续测试脚本继续运行会影响到当前冲突情况的判断。最后通过测试平台将两个测试进程下发到同一个测试节点运行,通过测试平台监听目标测试节点在运行第一测试进程和第二测试进程时产生的测试结果,保证冲突场景在第一时间反馈给测试平台进行记录,提高测试准确性。另外,在本实施例中,测试节点的数量并不唯一,测试节点可以有多个,通过部署测试平台实现任务调度和管理,可以根据各个测试节点的负载选择计算效率更高的节点下发对应的测试进程和测试脚本,各个测试节点的测试过程互不干扰,能够进一步提高固态硬盘功能交互测试的测试效率。
另外,在一些可选地实施方式中,第一和第二两个测试进程之间的交互测试可以依次运行多个测试脚本,例如第一测试进程运行的第一测试脚本具体包括:脚本1、脚本2和脚本3,第二测试进程运行的第二测试脚本具体包括:脚本4、脚本5和脚本6。一般情况下实现全覆盖测试需要分别从第一测试脚本和第二测试脚本中各提取1个同时运行进行交互测试,这种测试方式虽然准确但是测试效率较低,本实施例为了进一步提高测试效率,采用第一测试脚本或第二测试脚本其中一个顺序不变,另一个测试脚本依次轮换脚本顺序进行多轮测试,从而显著提高测试效率。例如:第一次测试时第一测试进程运行脚本1、脚本2和脚本3,第二测试进程按照脚本4、脚本5和脚本6的顺序运行;第二次测试时第一测试进程运行脚本1、脚本2和脚本3的顺序不变,第二测试进程按照脚本6、脚本4和脚本5的顺序运行;第三次测试时第一测试进程运行脚本1、脚本2和脚本3的顺序不变,第二测试进程按照脚本5、脚本6和脚本4的顺序运行,从而通过三轮测试即可完全覆盖交互测试。经过实际场景验证,虽然每个脚本的测试时长会有不同,但是脚本切换对整体测试的准确度影响可以忽略不计。
在一些可选地实施方式中,上述步骤b2包括:
步骤c1,获取第一功能和第二功能的已知冲突信息;
步骤c2,当已知冲突信息表征第一功能的执行会导致第二功能的失败,或者第二功能的执行会导致第一功能的失败时,给被导致失败的功能所对应的测试进程添加不停机标记;
步骤c3,在第一测试进程和第二测试进程关联时,根据不停机标记修改停止策略,以使没有不停机标记的测试进程失败时,令两个测试进程都停止,标有不停机标记的测试进程失败时,令两个测试进程继续执行;
步骤c4,当已知冲突信息表征第一功能和第二功能没有冲突时,直接关联第一测试进程和第二测试进程,以使第一测试进程和第二测试进程其中一个失败时,令两个测试进程都停止。
具体地,在实际测试场景有,某些功能之间地冲突是已知的,例如NDU功能和reset功能、异常断电功能和热拔插功能都会产生冲突。本实施例针对一项功能会导致另一项功能失败的已知冲突信息,从而对被导致失败的功能对应的测试进程添加不停机标记,例如功能A和功能B同时运行,已知功能A会导致功能B失败,或者已知功能B会导致功能A失败,那么本实施例会对被导致失败的功能添加标记,从而对应的测试进程也会添加不停机标记。当带有标记的测试进程失败时,本实施例采取不关系的处理措施,测试过程依然继续,两个进程不停止,避免重复获取已知的冲突测试结果,从而显著提高测试效率。
例如:选择测试的功能有功能A和功能B,基于当前功能A和功能B的测试用例和脚本进行后续的组合测试。为功能A和功能B创建了测试进程job1和job2之后,通过自动化测试平台关联两个Job,其中Job 1执行功能A的测试脚本,Job 2执行功能B的测试脚本,两个Job使用相同的一组测试节点同时运行进行测试。如果功能B与目标功能A存在已知的冲突,比如功能A会导致功能B失败,则在自动化测试平台上将功能B的Job 1的STOP_ON_FAIL参数标记为0,即标记了不停机标记,表示遇到脚本执行失败不停止当前Job。如果功能A和B冲突导致功能A的测试脚本失败,那么是将功能A的Job的STOP_ON_FAIL参数修改为0,换言之,在功能A和B存在冲突时,测试的是不受影响的功能的Job,不失败的功能对应的STOP_ON_FAIL参数设定为1。
当两个测试进程都没有不停机标记时,任何一个测试进程失败都会令两个测试进程同时停止,保证测试失败原因的定位。
在一些可选地实施方式中,本发明实施例提供的一种测试固态硬盘功能交互的方法还包括:
步骤d1,删除第一测试脚本和第二测试脚本中测试开始和测试结束时的信息查询代码,并删除日志导出代码。
具体地,本实施例还对各个功能的测试脚本做一定修改,具体包括去掉测试开始和结束时的一些信息查询(例如查询PCI、BMC、Identity、smart-log、verdor-log等)和日志导出(导出固件log等),更聚焦到功能之间的交互测试上,从而减少测试时间,显著提高测试效率。
在一些可选地实施方式中,本发明实施例提供的一种测试固态硬盘功能交互的方法,包括:
步骤e1,当两个测试进程都停止时,强制目标测试节点下线。
具体地,在本实施例中,当某个测试节点的两个测试进程都停止时,会强制目标测试节点下线,从而保存失败现场,避免运行环境发生改变,提高用户定位测试失败原因的准确率。
在一个具体的实施场景实施例中,第一功能是NDU功能,第二功能是重启、异常断电或热拔插中的一个,测试平台是Jenkins工具,上述步骤S102,包括:
步骤f1,分别创建第一测试进程和第二测试进程,第一测试进程用于测试NDU功能,第二测试进程用于测试重启、异常断电或热拔插中的一个功能;
步骤f2,为第一测试进程添加不停机标记;
步骤f3,通过Matrix插件根据不停机标记将第一测试进程和第二测试进程进行关联,以使第一测试进程失败时令两个测试进程继续执行,并在第二测试进程失败时令两个测试进程都停止;
步骤f4,将第一测试进程、第二测试进程、第一测试脚本和第二测试脚本下发到目标测试节点中;
步骤f5,通过目标测试节点控制第一测试进程执行第一测试脚本,同时控制第二测试进程执行第二测试脚本;
步骤f6,当第二测试进程执行失败时,令两个测试进程都停止时,并强制目标测试节点下线;
步骤f7,在第一测试进程和第二测试进程执行时实时统计总测试脚本数量、通过的测试脚本数量、失败的测试脚本数量和未执行的测试脚本数量,并根据失败的测试脚本确定异常信息。
具体地,NDU(Non-Disruptive FW Update,不中断固件升级)功能是固态硬盘中重要的功能,可以实现业务不中断的升级,越来越多的NVMe SSD企业用户要求实现NDU,由于NDU是在业务不中断的情况下实现升级,所以NDU会与NVMe SSD的其他功能都存在交互的可能。按NVMe协议要求,NDU具体操作分为如下两步:
1.通过Firmware Image Download command命令将固件下载到NVMe SSD内部;
2.通过Firmware Commit command命令激活固件,其中CA字段为3,CA字段是固件命令定义的字段,表示固件在Firmware Commit command命令后立即生效,生效即完成固件升级。
相比一般的升级流程,NDU功能不需要Controller Level Reset(控制器级重置),不会对当前进行中的IO造成中断。而重启、异常断电或热拔插都包含Controller LevelReset,如果重置发生在Firmware Image Download command和Firmware Commit command两个命令之间,会导致固件下载失效,可能导致后续固件激活失败,所以重启、异常断电或热拔插功能均与NDU存在冲突,很可能导致NDU失败。
综合以上情况,本实施例针对NDU功能和重启、异常断电或热拔插中的一个进行交互测试的场景,如图2所示,提出的功能交互测试流程如下:
1、选择与当前目标功能A(NDU)存在交互的另一个功能B(例如重启)。
2、基于当前功能A和功能B的测试用例和脚本,进行后续的组合测试。
3、通过自动化测试平台创建两个关联测试进程,其中第一测试进程Job 1执行功能A的测试脚本,第二测试进程Job 2执行功能B的测试脚本,两个Job使用相同的一组测试节点,先后启动两个Job(由于功能A和功能B包含很多脚本,即使启动时间上差几秒,也会是同一时间功能A和功能B的脚本同时在执行,一般脚本的执行时长在5分钟到10小时不等)。
其中,自动化测试平台可使用Jenkins实现,Jenkins是业界成熟的开源持续集成(CI)工具,带有很多丰富实用的插件,本发明实施例基于Jenkins实现Job调度、测试脚本到测试节点的分发和测试结果统计。通过其中的Matrix插件将两个功能的Job 1和Job 2关联,达成其中一个Job失败时两个Job一起停止的效果。
4、Job 1和Job 2启动后,因为使用相同的一组测试节点,所以在同一个测试节点上会同时执行功能A和功能B的测试脚本,达到功能交互的测试目的。
5、如果测试过程中NVMe SSD发生问题(固态硬盘自身的问题,不是功能冲突导致的问题),导致测试脚本执行失败,则同时停止两个Job,保留测试现场,以便开发人员定位。
6、在自动化测试平台可以实时获取本次测试的统计数据:功能A和B的总的测试脚本数量、测试通过的测试脚本数量、失败的测试脚本数量和未执行的测试脚本数量,从而能够整体上考察此次功能A和B的交互测试进展,提高测试灵活性。
7、如果功能B与目标功能A存在冲突,例如重启与NDU存在冲突,可能导致NDU失败,则在测试平台上将功能A的Job1的STOP_ON_FAIL参数设为0,表达的含义是遇到脚本执行失败不停止当前Job,避免已知的冲突问题令测试进程停机,影响测试效率,只有功能B对应的第二测试进程失败时才会令两个测试进程都停止。
作为补充,如果功能A和B冲突会导致功能B的测试脚本失败,那么是将功能B的Job2的STOP_ON_FAIL参数修改为0。所以,在功能A和B存在冲突时,测试的是不受影响的功能的Job。另外,Jenkins Job的STOP_ON_FAIL参数是在process_script脚本中实现的,当检测到当前Job的某个脚本都失败后,如果STOP_ON_FAIL参数为1,则两个测试进程都停止,并且将执行该脚本的测试节点强制下线,如果STOP_ON_FAIL参数为0,则不对测试节点强制下线。对测试节点强制下线是通过调用Jenkins的API接口实现的,强制下线的目的是保留失败现场,起到后续开发能够准确进行分析排查的效果。
8、为减少测试时长,本发明实施例对功能A和B的测试脚本做一定修改,去掉测试开始和结束时的一些信息查询(例如查询PCI、BMC、Identity、smart-log、verdor-log等)和日志导出(导出Fw log等),更聚焦到功能A和B的交互测试上。
9、最后,根据失败的测试脚本确定异常信息,准确定位固态硬盘NDU功能和重启、异常断电或热拔功能之间没有被发现的冲突。以NDU和读写功能为例,假设NDU模块有60个独立测试用例,读写功能有120个独立测试用例,如果设计专门的交互测试用例,则其规模一般不超过max(60,120)=120个,而本发明提供的技术方案得到的测试用例规模可以达到60*120=7200个,从用例规模上看,远大于专门的交互测试用例个数。利用每个功能单独测试时已有的测试用例全面覆盖测试场景,显著降低交互测试用户设计的复杂度,提高了测试效率和测试准确率。
在本实施例中还提供了一种测试固态硬盘功能交互的装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种测试固态硬盘功能交互的装置,如图3所示,装置应用于测试平台,包括:
测试脚本获取模块301,用于获取分别对第一功能和第二功能独立进行测试的第一测试脚本和第二测试脚本,第一功能和第二功能是固态硬盘的不同功能。详细内容参见上述方法实施例中步骤S101的相关描述,在此不再进行赘述。
集成测试模块302,用于通过同一测试节点同时运行第一测试脚本和第二测试脚本,进行对第一功能和第二功能的交互测试。详细内容参见上述方法实施例中步骤S102的相关描述,在此不再进行赘述。
在一些可选的实施方式中,测试脚本获取模块301包括:
用例确定单元,用于从测试脚本管理模块确定第一功能对应的第一测试用例和第二功能对应的第二测试用例;
脚本提取单元,用于提取第一测试用例包含的多个第一测试脚本,并提取第二测试用例包含的多个第二测试脚本。
在一些可选地实施方式中,集成测试模块302包括:
进程创建单元,用于分别创建用于测试第一功能的第一测试进程和用于测试第二功能的第二测试进程;
关联单元,用于将第一测试进程和第二测试进程进行关联,以使第一测试进程和第二测试进程其中一个失败时,令两个测试进程都停止;
任务下发单元,用于将第一测试进程、第二测试进程、第一测试脚本和第二测试脚本下发到目标测试节点中;
测试单元,用于通过目标测试节点控制第一测试进程执行第一测试脚本,同时控制第二测试进程执行第二测试脚本;
结果统计单元,用于监听目标测试节点在运行第一测试进程和第二测试进程时产生的测试结果。
在一些可选地实施方式中,关联单元包括:
已知冲突获取单元,用于获取第一功能和第二功能的已知冲突信息;
标记单元,用于当已知冲突信息表征第一功能的执行会导致第二功能的失败,或者第二功能的执行会导致第一功能的失败时,给一定失败的功能所对应的测试进程添加不停机标记;
第一关联单元,用于在第一测试进程和第二测试进程关联时,根据不停机标记修改停止策略,以使没有不停机标记的测试进程失败时,令两个测试进程都停止,标有不停机标记的测试进程失败时,令两个测试进程继续执行;
第二关联单元,用于当已知冲突信息表征第一功能和第二功能没有冲突时,直接关联第一测试进程和第二测试进程,以使第一测试进程和第二测试进程其中一个失败时,令两个测试进程都停止。
在一些可选地实施方式中,测试固态硬盘功能交互的装置还包括:
冗余信息删除模块,用于删除第一测试脚本和第二测试脚本中测试开始和测试结束时的信息查询代码,并删除日志导出代码。
上述各个模块和单元的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本实施例中的测试固态硬盘功能交互的装置是以功能单元的形式来呈现,这里的单元是指ASIC(Application Specific Integrated Circuit,专用集成电路)电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
本发明实施例还提供一种计算机设备,具有上述图3所示的测试固态硬盘功能交互的装置。
请参阅图4,图4是本发明可选实施例提供的一种计算机设备的结构示意图,如图4所示,该计算机设备包括:一个或多个处理器10、存储器20,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图4中以一个处理器10为例。
处理器10可以是中央处理器,网络处理器或其组合。其中,处理器10还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,存储器20存储有可由至少一个处理器10执行的指令,以使至少一个处理器10执行实现上述实施例示出的方法。
存储器20可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器20可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器20可选包括相对于处理器10远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器20可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器20还可以包括上述种类的存储器的组合。
该计算机设备还包括通信接口30,用于该计算机设备与其他设备或通信网络通信。
本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的方法。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

Claims (10)

1.一种测试固态硬盘功能交互的方法,其特征在于,所述方法应用于测试平台,所述方法包括:
获取分别对第一功能和第二功能独立进行测试的第一测试脚本和第二测试脚本,所述第一功能和所述第二功能是固态硬盘的不同功能;
通过同一测试节点同时运行所述第一测试脚本和所述第二测试脚本,进行对所述第一功能和第二功能的交互测试。
2.根据权利要求1所述的方法,其特征在于,所述获取分别对第一功能和第二功能独立进行测试的第一测试脚本和第二测试脚本,包括:
从测试脚本管理模块确定所述第一功能对应的第一测试用例和所述第二功能对应的第二测试用例;
提取所述第一测试用例包含的多个第一测试脚本,并提取所述第二测试用例包含的多个第二测试脚本。
3.根据权利要求2所述的方法,其特征在于,所述通过同一测试节点同时运行所述第一测试脚本和所述第二测试脚本,进行对所述第一功能和第二功能的交互测试,包括:
分别创建用于测试所述第一功能的第一测试进程和用于测试所述第二功能的第二测试进程;
将所述第一测试进程和第二测试进程进行关联,以使所述第一测试进程和所述第二测试进程其中一个失败时,令两个测试进程都停止;
将所述第一测试进程、所述第二测试进程、所述第一测试脚本和所述第二测试脚本下发到目标测试节点中;
通过所述目标测试节点控制所述第一测试进程执行所述第一测试脚本,同时控制所述第二测试进程执行所述第二测试脚本;
监听所述目标测试节点在运行所述第一测试进程和所述第二测试进程时产生的测试结果。
4.根据权利要求3所述的方法,其特征在于,所述将所述第一测试进程和第二测试进程进行关联,包括:
获取所述第一功能和所述第二功能的已知冲突信息;
当所述已知冲突信息表征所述第一功能的执行会导致所述第二功能的失败,或者所述第二功能的执行会导致所述第一功能的失败时,给被导致失败的功能所对应的测试进程添加不停机标记;
在所述第一测试进程和所述第二测试进程关联时,根据所述不停机标记修改停止策略,以使没有不停机标记的测试进程失败时,令两个测试进程都停止,标有不停机标记的测试进程失败时,令两个测试进程继续执行;
当所述已知冲突信息表征所述第一功能和所述第二功能没有冲突时,直接关联所述第一测试进程和所述第二测试进程,以使所述第一测试进程和所述第二测试进程其中一个失败时,令两个测试进程都停止。
5.根据权利要求4所述的方法,其特征在于,删除所述第一测试脚本和所述第二测试脚本中测试开始和测试结束时的信息查询代码,并删除日志导出代码。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当两个测试进程都停止时,强制所述目标测试节点下线。
7.根据权利要求2所述方法,其特征在于,所述第一功能是NDU功能,所述第二功能是重启、异常断电或热拔插中的一个,所述测试平台是Jenkins工具,所述通过同一测试节点同时运行所述第一测试脚本和所述第二测试脚本,进行对所述第一功能和第二功能的交互测试,包括:
分别创建第一测试进程和第二测试进程,所述第一测试进程用于测试所述NDU功能,所述第二测试进程用于测试所述重启、异常断电或热拔插中的一个功能;
为所述第一测试进程添加不停机标记;
通过Matrix插件根据所述不停机标记将所述第一测试进程和第二测试进程进行关联,以使所述第一测试进程失败时令两个测试进程继续执行,并在所述第二测试进程失败时令两个测试进程都停止;
将所述第一测试进程、所述第二测试进程、所述第一测试脚本和所述第二测试脚本下发到目标测试节点中;
通过所述目标测试节点控制所述第一测试进程执行所述第一测试脚本,同时控制所述第二测试进程执行所述第二测试脚本;
当所述第二测试进程执行失败时,令两个测试进程都停止时,并强制所述目标测试节点下线;
在所述第一测试进程和所述第二测试进程执行时实时统计总测试脚本数量、通过的测试脚本数量、失败的测试脚本数量和未执行的测试脚本数量,并根据失败的测试脚本确定异常信息。
8.一种测试固态硬盘功能交互的装置,其特征在于,所述装置应用于测试平台,所述装置包括:
测试脚本获取模块,用于获取分别对第一功能和第二功能独立进行测试的第一测试脚本和第二测试脚本,所述第一功能和所述第二功能是固态硬盘的不同功能;
集成测试模块,用于通过同一测试节点同时运行所述第一测试脚本和所述第二测试脚本,进行对所述第一功能和第二功能的交互测试。
9.一种计算机设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求1至7中任一项所述的方法。
CN202311277028.5A 2023-09-28 2023-09-28 测试固态硬盘功能交互的方法、装置、设备及存储介质 Pending CN117349094A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311277028.5A CN117349094A (zh) 2023-09-28 2023-09-28 测试固态硬盘功能交互的方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311277028.5A CN117349094A (zh) 2023-09-28 2023-09-28 测试固态硬盘功能交互的方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN117349094A true CN117349094A (zh) 2024-01-05

Family

ID=89358679

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311277028.5A Pending CN117349094A (zh) 2023-09-28 2023-09-28 测试固态硬盘功能交互的方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117349094A (zh)

Similar Documents

Publication Publication Date Title
US20230138736A1 (en) Cluster file system-based data backup method and apparatus, and readable storage medium
CN103827834B (zh) 一种内存数据的迁移方法、计算机和装置
CN103842968B (zh) 一种内存数据的迁移方法、计算机和装置
WO2018120721A1 (zh) 用户界面的测试方法、系统、电子装置及计算机可读存储介质
CN112068852B (zh) 基于国产服务器的开源软件安装方法、系统及设备和介质
CN111258591B (zh) 程序部署任务执行方法、装置、计算机设备和存储介质
CN111462811A (zh) 自动化测试方法、装置、存储介质和电子设备
CN108446224B (zh) 移动端上应用程序的性能分析方法、存储介质
CN107329914A (zh) 一种基于Linux系统检测硬盘乱序的方法及装置
CN112416803A (zh) 一种自动化测试方法和装置
CN114117973A (zh) 逻辑综合方法、设备和存储介质
CN109445800B (zh) 一种基于分布式系统的版本自动部署方法及系统
CN104133743A (zh) 一种将文件烧录到emmc芯片的方法及装置
CN110795304B (zh) 分布式存储系统性能测试的方法及装置
CN116090380B (zh) 数字集成电路验证的自动化方法及装置、存储介质和终端
CN117349094A (zh) 测试固态硬盘功能交互的方法、装置、设备及存储介质
CN105353980A (zh) 一种内存数据的迁移方法、计算机和装置
CN114265786A (zh) 自动化测试方法、装置,计算机设备及可读存储介质
US8930666B1 (en) Virtual disk carousel
CN111966545A (zh) PCIe分线器热插拔测试方法、装置、设备及存储介质
CN111694727A (zh) 一种网卡固件升降级测试方法、系统、终端及存储介质
CN110990181A (zh) 一种自动化复现bios中选项概率性设置失败的方法及系统
CN116991445A (zh) 一种固件升级方法、装置、设备及可读存储介质
CN116662085A (zh) 磁盘故障模拟测试方法、测试装置和电子设备
CN116775090A (zh) 自动生成补丁代码的方法和装置、电子设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination