一种测试固态硬盘的方法及装置与流程

文档序号:11776339阅读:495来源:国知局
一种测试固态硬盘的方法及装置与流程

本申请涉及存储介质测试领域,尤其涉及一种测试固态硬盘的方法及装置。



背景技术:

ssd(solidstatedrive,固态硬盘)用固态电子存储芯片阵列而制成,由控制单元和存储单元组成。ssd在使用前需要对其各项特性进行测试,测试项目包括:协议、trim、升级、业务读写、文件系统、异常掉电、s3、s4、闪断等。

现阶段普遍对ssd采用人工测试,例如对于ssd中存储单元(颗粒)的检测,人工将颗粒焊接或者夹持固定至一个usb工具上,插到usb接口中,然后用检测工具扫一遍,把扫到的坏块数量写到颗粒上,最后将颗粒取下,按照坏块数量(的范围)分类。但是人工测试测试速度慢,且容易出现错漏。

为了提高测试效率及准确度,通常采用ssd自动化测试工具进行测试,例如:crytaldiskmark软件主要针对测试存储设备大小和测试数字;attodiskbenchmark软件主要测试读取及写入速率;asssdbenchmark软件针对测试顺序读写、4k随机读写、64线程4k读写和寻道时间。但是现有测试工具普遍只能针对众多测试项目中的几种进行测试,测试项目相对较少,不能全面覆盖所需的所有测试项目,故需要用多种自动化测试工具共同测试ssd,工作效率低。



技术实现要素:

本申请提供一种测试固态硬盘的方法及装置,以解决测试项目少、工作效率低的问题。

第一方面,本申请提供一种测试固态硬盘的方法,该方法包括:

s101,上传升级包到待测主机;

s102,升级固态硬盘;

s103,从预置用例库中获取用例;

s104,执行所述用例;

s105,根据返回值,判断所述用例是否执行成功;

s106,获取当前时间;

s107,判断所述当前时间是否为预置测试结束时间;

s108,如果是所述预置测试结束时间,则发送测试结果报告;

s109,如果不是所述预置测试时间,则返回所述s105。

可选地,所述方法还包括:

s201,根据预置构建检测周期,对库代码的质量进行构建检查;

s202,根据预置库代码格式,判断所述库代码的质量是否达标;

s203,如果所述库代码的质量达标,则执行所述s101;

s204,如果所述库代码的质量未达标,则发送构建检查失败信息,并返回所述s201。

可选地,所述s102还包括:

s301,获取所述固态硬盘当前版本号;

s302,判断所述当前版本号是否与预置固态硬盘版本号相同;

s303,如果相同,则升级成功,执行所述s103;

s304,如果不同,则升级失败,获取所述固态硬盘当前数据。

可选地,所述s105,根据预置执行进度条,判断所述用例是否执行成功,还包括:

s401,如果执行成功,则保存测试结果,并返回所述s103;

s402,如果执行失败,则返回所述s103。

可选地,所述s402还包括:

s501,根据执行失败类型,判断执行步骤;

所述执行失败类型包括:执行短时间中断后自动恢复型、测试返回值错误型和数据不一致型;

s502,如果为执行短时间中断后自动恢复型,则返回所述s103;

s503,如果为测试返回值错误型,则获取固态硬盘当前数据,并返回所述s103;

s504,如果为数据不一致型,则获取固态硬盘当前数据,发送报错信息,并返回所述s103。

第二方面,本申请提供了一种测试固态硬盘的装置,该装置包括:

上传单元,用于上传升级包到待测主机;

升级单元,用于升级固态硬盘;

第二获取单元,用于从预置用例库中获取用例;

执行单元,用于执行所述用例;

第二判断单元,根据返回值,判断所述用例是否执行成功;

第三获取单元,用于获取当前时间;

第三判断单元,用于判断所述当前时间是否为预置测试结束时间;

第一发送单元,用于如果是所述预置测试结束时间,则发送测试结果报告;如果不是所述预置测试时间,则返回所述s103。

可选地,所述装置还包括:

构建检查单元,用于根据预置构建检测周期,对库代码的质量进行构建检查;

第四判断单元,用于根据预置库代码格式,判断所述库代码的质量是否达标;

如果所述库代码的质量达标,则执行所述s101;

第二发送单元,用于如果所述库代码的质量未达标,则发送构建检查失败信息,并返回所述s201。

可选地,所述升级单元还包括:

第一获取单元,用于获取所述固态硬盘当前版本号;

第五判断单元,用于判断所述当前版本号是否与预置固态硬盘版本号相同;

如果相同,则升级成功,执行所述s103;

第四获取单元,用于如果不同,则升级失败,获取所述固态硬盘当前数据。

可选地,所述第二判断单元,还包括:

保存单元,用于如果执行成功,则保存测试结果,并返回所述s103;

如果执行失败,则返回所述s103。

可选地,所述第二判断单元,还包括:

第六判断单元,用于根据执行失败类型,判断执行步骤;

所述执行失败类型包括:执行短时间中断后自动恢复型、测试返回值错误型和数据不一致型;

如果为执行短时间中断后自动恢复型,则返回所述s103;

第五获取单元,用于如果为测试返回值错误型,则获取固态硬盘当前数据,并返回所述s103;

第六获取单元,用于如果为数据不一致型,则获取固态硬盘当前数据;报错单元,用于发送报错信息,并返回所述s103。

由以上技术可知,本申请提供一种测试固态硬盘的方法及装置,s101,上传升级包到待测主机;s102,升级固态硬盘;s103,从预置用例库中获取用例;s104,执行所述用例;s105,根据预置执行进度条,判断所述用例是否执行成功;s106,获取当前时间;s107,判断所述当前时间是否为预置测试结束时间;s108,如果是所述预置测试结束时间,则发送测试结果报告;s109,如果不是所述预置测试时间,则返回所述s105。本申请实施例提供的方法及装置能够通过多次循环执行用例,并叠加测试的特性数量,从而实现通过一种方法测试固态硬盘的更多特性,提高测试效率。

附图说明

为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种测试固态硬盘的方法流程图;

图2为本申请实施例提供的判断库代码质量的方法流程图;

图3为本申请实施例提供的判断固态硬盘升级成功性的方法流程图;

图4为本申请实施例提供的判断用例执行成功性的方法流程图;

图5为本申请实施例提供的针对用例执行失败类型确定执行步骤的方法流程图;

图6为本申请实施例提供的一种测试固态硬盘的装置结构图;

图7为本申请实施例提供的判断库代码质量的装置结构图;

图8为本申请实施例提供的判断固态硬盘升级成功性的装置结构图;

图9为本申请实施例提供的判断用例执行成功性的装置结构图;

图10为本申请实施例提供的针对用例执行失败类型确定执行步骤的装置结构图;

图11为本申请实施例提供的用例选择示意图。

图示说明:

其中:1-上传单元,2-升级单元,3-第二获取单元,4-执行单元,5-第二判断单元,6-第三获取单元,7-第三判断单元,8-第一发送单元,9-构建检查单元,10-第四判断单元,11-第二发送单元,12-第一获取单元,13-第五判断单元,14-第四获取单元,15-保存单元,16-第六判断单元,17-第五获取单元,18-第六获取单元,19-报错单元。

具体实施方式

参见图1,一种测试固态硬盘的方法流程图。

本实施例提供一种测试固态硬盘的方法,该方法包括:

s101,上传升级包到待测主机;

通过ssh(secureshell,安全外壳协议)底层函数提供的windows/linux文件传输功能,将升级包从windows上传至linux主机。

s102,升级所述固态硬盘;

通过协议工具(protocoltool)脚本中提供的协议相关升级功能,实现对固态硬盘的升级操作。

s103,从预置用例库中获取用例;

通过日构建(dailybuild)执行脚本,从用例库中随机获取一定量的用例,如图11所示,本次测试中选择执行002和005用例。

s104,执行所述用例;

通过dailybuild执行脚本获取用例后,下达执行指令,执行所述用例。

s105,根据返回值,判断所述用例是否执行成功;

通过协议函数库(protocoltool)提供协议测试;

通过trim函数提供trim专项测试;

通过升级函数库(upgrade)提供升级专项测试;

通过安全擦除函数库(securityerase)提供安全擦专项测试;

通过读写函数库(readwritetool)提供对固态硬盘进行读写的相关操作及实际运用场景;

通过访问和操作文件系统函数库(filesys)提供对固态硬盘进行读写的相关操作及实际运用场景;

通过电源控制函数库(poweroff)提供对固态硬盘进行异常断电等相关操作及实际运用场景;

并通过上述函数库分别进行验证命令执行结果。

s106,获取当前时间;

在每一条用例执行完成后,将通过basic(自定义基础函数库)底层函数脚本获取所述当前时间。

s107,判断所述当前时间是否为预置测试结束时间;

通过dailybuild执行脚本,在用例执行过程中,完成每一条用例后,判断当前时间是否为所述预置测试结束时间。

s108,如果是所述预置测试结束时间,则发送测试结果报告;

通过smtp(simplemailtransferprotocol,简单邮件传输协议),提供发送邮件相关的类函数。通过邮件发送测试报告,如果用例全部执行成功,则不在邮件内添加附件;如果有执行失败的用例,则在邮件内添加日志(log)附件,可以通过查看附件内容,对执行失败的详细错误进行查看。

s109,如果不是所述预置测试时间,则返回所述s105。

通过dailybuild,定时测试,例如每晚22点开始,持续测试9小时;随机从用例库中选择用例,灵活控制执行时间,每次随机选择用例个数,测试时间超过9小时则停止,如果测试结束时,不足9小时,则再次选取用例,知道测试满9小时,并将测试结果以报告的形式发送通知。所述预置用例库包含多项固态硬盘需测试特性的用例,测试每次循环过程中,从所述预置用例库中随机选择一个或多个用例进行对应特性的测试,并通过多次循环叠加测试的特性数量,达到通过一种方法实现测试多种特性的效果,从而提高测试效率。

参见图2,本申请实施例提供的判断库代码质量的方法流程图。

可选地,所述方法还包括:

s201,根据预置构建检测周期,对库代码的质量进行构建检查;

s202,根据预置库代码格式,判断所述库代码的质量是否达标;

s203,如果所述库代码的质量达标,则执行所述s101;

s204,如果所述库代码的质量未达标,则发送构建检查失败信息,并返回所述s201。

通过svn函数脚本,更新库代码至最新版本,编写两小时构建检查(twohourbuild)功能模块函数,包含:代码pclint(软件代码静态分析)检查、sourcemonitor检查和makeoverlay检查。如果所述库代码的质量未达标,则通过smtp发送构建检查失败信息,以便及时收到构建检查失败的信息,并了解详细的构建检查失败的原因,从而找到解决问题的方法,保证构建检查的有序高效进行。

参见图3,本申请实施例提供的判断固态硬盘升级成功性的方法流程图。

可选地,所述s102还包括:

s301,获取所述固态硬盘当前版本号;

config包含主机信息(hostinfo),所述hostinfo包含本机信息(deviceinfo),从而获取包含所述固态硬盘当前版本号在内的deviceinfo。

s302,判断所述当前版本号是否与预置固态硬盘版本号相同;

通过smartctl,获取并判断所述当前版本号是否与所述预置固态硬盘版本号相同,对于缺少的软件(工具/文件),则通过ftp下载后,上传至待测主机。

s303,如果相同,则升级成功,执行所述s103;

s304,如果不同,则升级失败,获取所述固态硬盘当前数据。

通过日志采集(logcollection)提供的收集日志信息类函数,包括:对系统版本、内核版本、盘片信息、smart信息(硬盘自检系统保留的硬盘硬件信息)、系统日志(syslog)、内存信息、用于检测和控制内核缓冲(dmesg)和cpu信息等,并对收集到的信息进行整理筛选,按照日期、时间、名字、ip创建存放log目录,可以同时收集多人多套环境的log信息,并有效存放。

参见图4,本申请实施例提供的判断用例执行成功性的方法流程图。

可选的,所述s105,根据预置执行进度条,判断所述用例是否执行成功,还包括:

s401,如果执行成功,则保存测试结果,并返回所述s103;

s402,如果执行失败,则返回所述s103。

通过protocoltool提供执行协议命令,并验证命令执行结果。执行成功的测试结果将由读写工具(readwritetool)提供的相关函数记录下来,供测试结束后,统一发送测试报告。提高结果集中率,方便统计结果,从而提高测试效率。

参见图5,本申请实施例提供的针对用例执行失败类型确定执行步骤的方法流程图。

可选地,所述s402还包括:

s501,根据执行失败类型,判断执行步骤;

所述执行失败类型包括:执行短时间中断后自动恢复型、测试返回值错误型和数据不一致型;

s502,如果为执行短时间中断后自动恢复型,则返回所述s103;

s503,如果为测试返回值错误型,则获取固态硬盘当前数据,并返回所述s103;

s504,如果为数据不一致型,则获取固态硬盘当前数据,发送报错信息,并返回所述s103。

所述测试返回值错误型为不影响固态硬盘正常使用或错误可接受的类型,还包括:协议命令错误型、工具环境错误型等;所述数据不一致型为固态硬盘无法使用或者错误不可接受的类型,还包括:提盘、挂盘等。由错误应对(errorhandle)提供相关错误处理的类函数,包含判断错误等级、截屏、发送微信通知等。通过readwritetool来执行业务读写,在读写过程中实施异常掉电、重启(reboot)、闪断和系统睡眠状态(s3、s4)等操作。如果为测试返回值错误型和数据不一致型,则由logcollection提供的收集日志信息类函数,包括:对系统版本、内核版本、盘片信息、smart信息、syslog、内存信息、dmesg和cpu信息等,并对收集到的信息进行整理筛选,按照日期、时间、名字、ip创建存放log目录,可以同时收集多人多套环境的log信息,并有效存放。且如果为数据不一致型,还要通过errorhandle提供错误信息通知,其中通知类型可以采用微信通知,确保在执行错误之后能够第一时间获知,从而给出执行错误的解决措施,保证测试的正常进行。并且能够对错误时的数据进行截图,以当前时刻命名图片,并以附件的形式同时发送信息,避免由于用例太多,定位时间过长,影响测试效率。

参见图6,本申请实施例提供的一种测试固态硬盘的装置结构图。

本实施例提供了一种测试固态硬盘的装置,该装置包括:

上传单元1,用于上传升级包到待测主机;

升级单元2,用于升级固态硬盘;

第二获取单元3,用于从预置用例库中获取用例;

执行单元4,用于执行所述用例;

第二判断单元5,根据返回值,判断所述用例是否执行成功;

第三获取单元6,用于获取当前时间;

第三判断单元7,用于判断所述当前时间是否为预置测试结束时间;

第一发送单元8,用于如果是所述预置测试结束时间,则发送测试结果报告;如果不是所述预置测试时间,则返回所述s103。

从上述实施例可以看出,所述预置用例库包含多项固态硬盘需测试特性的用例,测试每次循环过程中,从所述预置用例库中随机选择一个或多个用例进行对应特性的测试,并通过多次循环叠加测试的特性数量,达到通过一种方法实现测试多种特性的效果,从而提高测试效率。

参见图7,本申请实施例提供的判断库代码质量的装置结构图。

可选地,所述装置还包括:

构建检查单元9,用于根据预置构建检测周期,对库代码的质量进行构建检查;

第四判断单元10,用于根据预置库代码格式,判断所述库代码的质量是否达标;

如果所述库代码的质量达标,则执行所述s101;

第二发送单元11,用于如果所述库代码的质量未达标,则发送构建检查失败信息,并返回所述s201。

通过实时对库代码进行质量检查,保证库代码质量,进而避免由于外因对固态硬盘性能产生的不良影响,从而增加对固态硬盘测试的准确性,并提高对固态硬盘测试的效率。

参见图8,本申请实施例提供的判断固态硬盘升级成功性的装置结构图。

可选地,所述升级单元1还包括:

第一获取单元12,用于获取所述固态硬盘当前版本号;

第五判断单元13,用于判断所述当前版本号是否与预置固态硬盘版本号相同;

如果相同,则升级成功,执行所述s103;

第四获取单元14,用于如果不同,则升级失败,获取所述固态硬盘当前数据。

参见图9,本申请实施例提供的判断用例执行成功性的装置结构图。

可选地,所述第二判断单元3,还包括:

保存单元15,用于如果执行成功,则保存测试结果,并返回所述s103;

如果执行失败,则返回所述s103。

参见图10,本申请实施例提供的针对用例执行失败类型确定执行步骤的装置结构图。

可选地,所述第二判断单元3,还包括:

第六判断单元16,用于根据执行失败类型,判断执行步骤;

所述执行失败类型包括:执行短时间中断后自动恢复型、测试返回值错误型和数据不一致型;

如果为执行短时间中断后自动恢复型,则返回所述s103;

第五获取单元17,用于如果为测试返回值错误型,则获取固态硬盘当前数据,并返回所述s103;

第六获取单元18,用于如果为数据不一致型,则获取固态硬盘当前数据;报错单元19,用于发送报错信息,并返回所述s103。

通过判断错误类型,来确定进一步执行步骤,调理更清晰,便于管理提高测试效率。如果为测试返回值错误型和数据不一致型,则收集日志信息,并对收集到的信息进行整理筛选,有效存放。且如果为数据不一致型,则提供错误信息通知,其中通知类型可以采用微信通知,确保在执行错误之后能够第一时间获知,从而给出执行错误的解决措施,保证测试的正常进行。并且能够对错误时的数据进行截图,以当前时刻命名图片,并以附件的形式同时发送信息,避免由于用例太多,定位时间过长,影响测试效率。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1