发明内容
本发明的目的在于提供一种超声设备可靠性的测试方法及测试系统。
为了实现上述发明目的之一,本发明一实施方式提供一种超声设备可靠性的测试方法,所述方法包括:
S1、提取待测试产品代码中的行为动作;
所述行为动作至少包括:namespace、classname、MethodName、PropertyName、Type、Argument list、ReturnType;
S2、根据所述行为动作调取指令调用映射表,生成执行函数;所述指令调用映射表为函数调用指令或函数调用模板;
S3、将所述执行函数的执行结果分别封装到测试程序中并转换为多个测试向量;
每个所述测试向量至少包括:Timestamp、State、Id、Action、Parameter、Children、Precondition、Postcondition;
S4、提取所述测试向量中与用户交互相关的测试向量1,并根据所述测试向量1建立与用户交互行为相关联的形式化规则库;
同时,随机选取所述测试向量生成随机测试向量序列,并对所述测试向量和所述随机测试向量序列进行功能归类;
S5、将进行功能归类后,与用户交互相关的测试向量和/或随机测试向量序列与所述形式化规则库进行匹配,
若匹配成功,则确认当前的测试向量和/或随机测试序列覆盖用户需求,将其加入到随机测试序列集,以生成固定格式的数据文件继续执行;
若匹配失败,则验证当前的测试向量和/或随机测试序列是否可以通过实际运行测试;
若可以通过实际运行测试,则返回修改形式化规则库;
若未通过实际运行测试,则丢弃当前的测试向量和/或随机测试序列。
作为本发明一实施方式的进一步改进,所述步骤S4中,“提取所述测试向量中与用户交互相关的测试向量1,并根据所述测试向量1建立与用户交互行为相关联的形式化规则库”具体包括:
P1、在测试程序中,采用预设的形式化规则方法描述各个所述测试向量1之间的交互行为,以生成多个形式化测试序列的集合;
P2、按照系统预设循环次数阈值,循环执行步骤P1,并去除所述形式化测试序列集合中相同的形式化测试序列,形成形式化规则库;
所述预设的形式化规则方法包括:
按照顺序序列执行、按照选择序列执行,按照分支序列执行、按照幂集随机多选序列执行。
作为本发明一实施方式的进一步改进,所述方法还包括:
对所述形式化规则库中的任意一个测试向量1进行词频统计,并计算与之相邻的测试向量1同时出现的次序频,按照各个测试向量1相关次序频的大小,依次执行各个测试向量1。
作为本发明一实施方式的进一步改进,对选取所述测试向量采用隐马尔可夫随机模型生成随机测试向量序列。
作为本发明一实施方式的进一步改进,采用Softmax分类器对所述测试向量和所述随机测试向量序列进行功能归类。
为了实现上述发明目的之一,本发明一实施方式提供一种超声设备可靠性的测试系统,所述系统包括:参数获取模块,用于提取待测试产品代码中的行为动作;
所述行为动作至少包括:namespace、classname、MethodName、PropertyName、Type、Argument list、ReturnType;
执行模块,用于根据所述行为动作调取指令调用映射表,生成执行函数;所述指令调用映射表为函数调用指令或函数调用模板;
封装模块,用于将所述执行函数的执行结果分别封装到测试程序中并转换为多个测试向量;
每个所述测试向量至少包括:Timestamp、State、Id、Action、Parameter、Children、Precondition、Postcondition;
解析模块,用于提取所述测试向量中与用户交互相关的测试向量1,并根据所述测试向量1建立与用户交互行为相关联的形式化规则库;
同时,随机选取所述测试向量生成随机测试向量序列,并对所述测试向量和所述随机测试向量序列进行功能归类;
将进行功能归类后,与用户交互相关的测试向量和/或随机测试向量序列与所述形式化规则库进行匹配,
若匹配成功,则确认当前的测试向量和/或随机测试序列覆盖用户需求,将其加入到随机测试序列集,以生成固定格式的数据文件继续执行;
若匹配失败,则验证当前的测试向量和/或随机测试序列是否可以通过实际运行测试;
若可以通过实际运行测试,则返回修改形式化规则库;
若未通过实际运行测试,则丢弃当前的测试向量和/或随机测试序列。
作为本发明一实施方式的进一步改进,所述解析模块具体用于:
在测试程序中,采用预设的形式化规则方法描述各个所述测试向量1之间的交互行为,以生成多个形式化测试序列的集合;
按照系统预设循环次数阈值,循环采用预设的形式化规则方法描述各个所述测试向量1之间的交互行为,并去除所述形式化测试序列集合中相同的形式化测试序列,形成形式化规则库;
所述预设的形式化规则方法包括:
按照顺序序列执行、按照选择序列执行,按照分支序列执行、按照幂集随机多选序列执行。
作为本发明一实施方式的进一步改进,所述解析模块还用于:
对所述形式化规则库中的任意一个测试向量1进行词频统计,并计算与之相邻的测试向量1同时出现的次序频,按照各个测试向量1相关次序频的大小,依次执行各个测试向量1。
作为本发明一实施方式的进一步改进,所述解析模块对选取所述测试向量采用隐马尔可夫随机模型生成随机测试向量序列。
作为本发明一实施方式的进一步改进,所述解析模块采用Softmax分类器对所述测试向量和所述随机测试向量序列进行功能归类。
与现有技术相比,本发明的有益效果是:本发明的超声设备可靠性的测试方法及测试系统,采用系统预设的形式化规则方法描述与用户交互相关的各个测试向量间的约束关系,并建立形式规则库;使用隐马尔可夫模型生成随机测试向量序列,并对所述随机测试向量序列进行功能归类,进一步的,将经过功能分类的随机测试向量序列与上述形式规则库进行匹配,优化测试序列生成,去除冗余测试序列;并进一步的使用Softmax模型分类,用于生成专属类别的测试用例,可以有针对性进行覆盖测试,同时大幅缩短测试时间。
具体实施方式
以下将结合附图所示的各实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
如图1所示,在本发明一实施方式提供的超声设备可靠性的测试方法,所述方法包括:
S1、提取待测试产品代码中的行为动作。所述行为动作至少包括:namespace、class、MethodName、PropertyName、Type、Argument list、ReturnType。
其中,namespace表示命名空间,Classname表示类名,MethodName表示方法名,PropertyName表示属性名,Type表示属性类型,Argument list表示方法名使用的参数集合,ReturnType表示方法名的返回值类型;在以下的调取过程中,命名空间用于生成引用头文件,类名称和属性名称,方法名称组合用于生成唯一标识ID和调用函数名。
本发明一具体实施方式中,可辅助使用编译工具或静态分析工具等提取待测试产品代码中的行为动作。
进一步的,为了便于后期调用所述行为动作,还可以将行为动作生成行为数据文件进行统一存储,在此不做详细赘述。
进一步的,本发明一实施方式中,所述超声设备可靠性的测试方法还包括:
S2、根据所述行为动作调取指令调用映射表,生成执行函数;所述指令调用映射表为函数调用指令或函数调用模板。
本发明一具体实施方式中,将所述行为动作添加到函数调用指令,该种调取方式为一对一调用,即一组行为动作对应一个函数调用指令;或将所述行为动作添加到函数调用模板,该种调取方式为多对一调用,即多组行为动作对应一个函数调用模板。
所述执行函数的生成形式例如:
<布尔返回值>{class name}_{Property/Method Name}()=>call instructionsor template。
进一步的,本发明一实施方式中,所述超声设备可靠性的测试方法还包括:
S3、将所述执行函数的执行结果分别封装到测试程序中并转换为多个测试向量;
每个所述测试向量至少包括:Timestamp、State、Id、Action、Parameter、Children、Precondition、Postcondition。
其中,Timestamp用于描述执行函数的执行时间;State为执行函数的执行状态标识,Id为唯一标识的字段,用于唯一标识以及搜寻TestAction对象,可以表示为:Id={class name}_{Property/Method Name},Action表示对应的执行函数、Parameter为所述执行函数需要调用的参数集合、Children用于描述从属行为集合、Precondition前置约束条件,用于定义执行一个TestAction前需要定义的环境、Postcondition后置约束条件,用于定义执行一个TestAction后需要清理的环境。
本发明一具体实施方式中,所述测试向量以TestAction表示,对所述TestAction的定义如下:
TestAction(Timestamp,State,Id,Action,Parameter,Children,Precondition,Postcondition)
可以理解的是,上述对所述TestAction的定义中,在实际执行时,各个参数的位置并不固定,各个参数的位置可以根据需要任意变动,在此不做详细赘述。
进一步的,本发明一实施方式中,所述超声设备可靠性的测试方法还包括:
S4、提取所述测试向量中与用户交互相关的测试向量1,并根据所述测试向量1建立与用户交互行为相关联的形式化规则库;
同时,随机选取所述测试向量生成随机测试向量序列,并对所述测试向量和所述随机测试向量序列进行功能归类。
本发明一具体实施方式中,提取所述测试向量中与用户交互相关的测试向量1,并根据所述测试向量1建立与用户交互行为相关联的形式化规则库具体包括:
P1、在测试程序中,采用预设的形式化规则方法描述各个所述测试向量1之间的交互行为,以生成多个形式化测试序列的集合;
所述预设的形式化规则方法包括:
按照顺序序列执行、按照选择序列执行,按照分支序列执行、按照幂集随机多选序列执行。
按照顺序序列执行过程中,顺序序列A=a1+a2+,...,+an表示一个完整的执行序列,A表示形式化测试序列,a1、a2、...、an表示不同的测试向量1。
按照选择序列执行过程中,选择序列A=a1|a2|,....,|an表示形式化测试序列A中的任意成员。
按照分支序列执行过程中,若前项序列包含单个行为,则执行分支序列if(contain(a1))then a1+a2+,...,+an;
若前项序列包含多个行为,则执行分支序if(contain(a1+a2+...+ak))then a1+a2+,...,+an;(k<=n);
若布尔条件condition满足,则执行分支序列if(condition)then A=a1+a2+,...,+an。
按照幂集随机多选序列执行过程中,对于已定义的执行序列:A=a1+a2+,...,+an;该序列表示为集合A={a1,a2,...,an},求该集合A的幂集{{a1},{a1,a2},...,{a1,a2,...,an}},随机选取该幂集中的任一成员。
为了便于理解,依据所述预设的形式化规则方法描述实际需求,示例如图2A所示,该示例的具体流程如下:提取用户交互相关的测试向量1,采用预设的形式化规则方法描述各个所述测试向量1之间的交互行为,以生成多个形式化测试序列的集合;
新建病人->进入病人管理中心->进入病人报告->进行预览,存储和打印然后退出->导出指定格式病例到指定存储位置->进入导入病人管理->选择存储位置导入病人。
结合图2B所示,图2B为根据所述预设的形式化规则方法生成的多个形式化测试序列的集合,本发明具体示例中,以图表表示,在此不做详细赘述。
P2、按照系统预设循环次数阈值,循环执行步骤P1,并去除所述形式化测试序列集合中相同的形式化测试序列,形成形式化规则库;
步骤P2中,多次采用预设的形式化规则方法描述各个所述测试向量1之间的交互行为过程中,会不断的生成新的形式化测试序列,进一步的,将新生成的形式化测试序列与之前形成的形式化测试序列进行比对,若相同,则仅保留其中的任一个形式化测试序列,如此,优化形式化规则库,去除冗余的形式化测试序列,提高随机测试的覆盖效率。
本发明一实施方式中,所述步骤S3还可以包括:对所述形式化规则库中的任意一个测试向量1进行词频统计,并计算与之相邻的测试向量1同时出现的次序频,按照各个测试向量1相关次序频的大小,依次执行各个测试向量1。
本发明一具体实施方式中,通过N-Gram模型对每个测试向量1进行词频统计,然后对于任意一个测试向量1,计算与之相邻的测试向量1一同出现的次序频,即统计anan-1出现的次数,当执行完成任意一个测试向量1后,可以自动执行与之相邻概率较大的测试向量1;用公式表示如下:
本发明一优选实施方式中,所述步骤S3中对选取所述测试向量采用隐马尔可夫随机模型生成随机测试向量序列。
随机选取所述测试向量生成随机测试向量序列具体包括:
M1、可采用传统的随机测试向量序列生成方法,也可以采用优化后的随机测试向量序列生成方法。
本发明一优选实施方式中,对选取所述测试向量采用隐马尔可夫随机模型生成随机测试向量序列。具体的,随机选取所述测试向量,并统计在实际交互测试过程中,各个测试向量的运行结果,各个所述测试向量对应的State,下一个测试向量对应的State与当前所述测试向量的State同时出现的概率,以及每个State对应出现Action的概率。
M2、根据上述参数生成隐马尔可夫模型的状态转置矩阵和State、Action的混淆矩阵;
M3、根据状态转置矩阵,对于当前的测试向量对应的State,随机选取下一个可能出现的测试向量的State,再依据混淆矩阵随机选取一个Action,依次迭代,可以生成相应的随机测试序列。
具体的,对于任意一个测试向量对应的状态Si,下一个测试向量对应的State与当前所述测试向量的State同时出现的概率值依次以S1,S2...Sj表示,则生成的状态转置矩阵为:
对于任意一个测试向量对应的状态Si,对应可能出现的指令函数的概率值分别以A1,A2...Aj,表示,则生成的State、Action的混淆矩阵为:
本发明一实施方式中,对所述测试向量和所述随机测试向量序列进行功能归类具体包括:
统计所述测试向量和所述随机测试向量序列在测试过程中出现的故障,并根据故障的类型对其对应的所述测试向量和所述随机测试向量序列进行功能分类。
通常情况下,故障的类型通常根据下述对应的状况进行划分,例如:测试向量和测试序列用于硬件可靠性测试,与硬件性能相关;测试向量和测试序列用于验收测试,有较高的功能优先级;测试向量和测试序列可以验证是否与系统崩溃相关;相应的,按照故障的类型为:系统崩溃、硬件通讯故障、功能验证等,各故障类型对应的功能分类分别为:验收安全测试、硬件可靠性测试、功能测试。
为了方便描述,本发明一具体实施方式中,系统崩溃以W1表示,硬件通讯故障以W2表示、功能验证以W3表示、验收安全测试以y1表示、硬件可靠性测试以y2表示、功能测试以y3表示。
则功能分类的概率可以表示为:
根据该公式可以获得各个测试向量分别对应的y1、y2、y3的值,将所述测试向量按照其对应的最大概率值进行功能归类;
其中,y(i)的值与w权值相关,需要对w优化,其梯度下降优化公式如下:
每一次迭代需要进行如下更新:
wj=wj-α▽wjJ(w);
α为学习率,取值在0~1之间,以确定梯度下降的步长。
本发明优选实施方式中,采用Softmax分类器获取优化后的w权值,以对所述测试向量进行功能分类。
相应的,采用Softmax分类器同样对所述随机测试向量序列进行功能归类,对测试序列进行功能归类时,将所述测试序列中每个测试向量的功能分类概率值相加,然后取平均值作为当前测试序列的功能分类概率值,最后,采用Softmax分类器获取优化后的w权值,以对所述测试向量序列进行功能分类。
则:
进一步的,本发明一实施方式中,所述方法还包括:
S5、将进行功能归类后,与用户交互相关的测试向量和/或随机测试向量序列与所述形式化规则库进行匹配,若匹配成功,则确认当前的测试向量和/或随机测试序列覆盖用户需求;将其加入到随机测试序列集,以生成固定格式的数据文件继续执行;
若匹配失败,则验证当前的测试向量和/或随机测试序列是否可以通过实际运行测试,
若可以通过实际运行测试,则返回修改形式化规则库;若未通过实际运行测试,则丢弃当前的测试向量和/或随机测试序列。本发明具体实施方式中,通过N-Gram模型将与用户交互相关的测试向量和/或随机测试向量序列与所述形式化规则库进行匹配;
匹配判别函数可表示为:
其中,N表示形式化方法生成的测试序列,例如:选择trigram三元模型时,n=3。
将该匹配判别函数与系统预设相似阈值进行对比,若其大于系统预设相似阈值,则确认匹配成功,否则,确认匹配失败;所述系统预设相似阈值的取值范围通常为0-1之间,例如:0.6,其大小可以根据需要具体调整,在此不做详细赘述。
相应的,若匹配失败,则需要进一步验证当前的测试向量和/或随机测试序列的有效性,若其可以通过实际的交互测试,则表示形式化规则库的建立有误,需要修改其运行逻辑,若未通过实际的交互测试,则表示当前的测试向量和/或随机测试序列未能覆盖用户需求,对其进行丢弃处理,以去除冗余数据,加快下一步的测试进程。
上述固定格式例如:JSON,XML,该所述随机测试序列集可以多次执行,也可以在执行过程中直接回放出现问题点的测试向量和/或测试序列,以进行统计和历史比对,在此不做详细赘述。
进一步的,在时间上,一轮随机测试序列集执行完毕后,统计每个测试向量的运行时长,对于耗时过长的行为可以寻找相应函数、或函数调用链相关的代码进行优化;在空间上,一轮随机测试序列集执行完毕后,比对历史运行内存占用记录,检查是否存在内存增长异常情况,若是,则可以版本间比对寻找内存增长的测试向量;在此不做详细赘述。
结合图3所示,本发明一实施方式中提供的超声设备可靠性的测试系统,所述系统包括:参数获取模块100、执行模块200、封装模块300、解析模块。
参数获取模块100用于提取待测试产品代码中的行为动作;所述行为动作至少包括:namespace、class、MethodName、PropertyName、Type、Argument list、ReturnType。
其中,namespace表示命名空间,Classname表示类名,MethodName表示方法名,PropertyName表示属性名,Type表示属性类型,Argument list表示方法名使用的参数集合,ReturnType表示方法名的返回值类型;在以下的调取过程中,命名空间用于生成引用头文件,类名称和属性名称,方法名称组合用于生成唯一标识ID和调用函数名。
本发明一具体实施方式中,参数获取模块100可辅助使用编译工具或静态分析工具等提取待测试产品代码中的行为动作。
进一步的,为了便于后期调用所述行为动作,还可以将行为动作生成行为数据文件进行统一存储,在此不做详细赘述。
进一步的,本发明一实施方式中,执行模块200用于根据所述行为动作调取指令调用映射表,生成执行函数;所述指令调用映射表为函数调用指令或函数调用模板。
本发明一具体实施方式中,执行模块200将所述行为动作添加到函数调用指令,该种调取方式为一对一调用,即一组行为动作对应一个函数调用指令;或将所述行为动作添加到函数调用模板,该种调取方式为多对一调用,即多组行为动作对应一个函数调用模板。
所述执行函数的生成形式例如:
<布尔返回值>{class name}_{Property/Method Name}()=>call instructionsor template。
进一步的,本发明一实施方式中,封装模块300用于将所述执行函数的执行结果分别封装到测试程序中并转换为多个测试向量;
每个所述测试向量至少包括:Timestamp、State、Id、Action、Parameter、Children、Precondition、Postcondition。
其中,Timestamp用于描述执行函数的执行时间;State为执行函数的执行状态标识,Id为唯一标识的字段,用于唯一标识以及搜寻TestAction对象,可以表示为:Id={class name}_{Property/Method Name},Action表示对应的执行函数、Parameter为所述执行函数需要调用的参数集合、Children用于描述从属行为集合、Precondition前置约束条件,用于定义执行一个TestAction前需要定义的环境、Postcondition后置约束条件,用于定义执行一个TestAction后需要清理的环境。
本发明一具体实施方式中,所述测试向量以TestAction表示,对所述TestAction的定义如下:
TestAction(Timestamp,State,Id,Action,Parameter,Children,Precondition,Postcondition)
可以理解的是,上述对所述TestAction的定义中,在实际执行时,各个参数的位置并不固定,各个参数的位置可以根据需要任意变动,在此不做详细赘述。
进一步的,本发明一实施方式中,解析模块400用于提取所述测试向量中与用户交互相关的测试向量1,并根据所述测试向量1建立与用户交互行为相关联的形式化规则库;
同时,随机选取所述测试向量生成随机测试向量序列,并对所述测试向量和所述随机测试向量序列进行功能归类。
本发明一具体实施方式中,解析模块400提取所述测试向量中与用户交互相关的测试向量1,并根据所述测试向量1建立与用户交互行为相关联的形式化规则库具体包括:
在测试程序中,解析模块400采用预设的形式化规则方法描述各个所述测试向量1之间的交互行为,以生成多个形式化测试序列的集合;
所述预设的形式化规则方法包括:
按照顺序序列执行、按照选择序列执行,按照分支序列执行、按照幂集随机多选序列执行。
按照顺序序列执行过程中,顺序序列A=a1+a2+,...,+an表示一个完整的执行序列,A表示形式化测试序列,a1、a2、...、an表示不同的测试向量1。
按照选择序列执行过程中,选择序列A=a1|a2|,....,|an表示形式化测试序列A中的任意成员。
按照分支序列执行过程中,若前项序列包含单个行为,则执行分支序列if(contain(a1))then a1+a2+,...,+an;
若前项序列包含多个行为,则执行分支序if(contain(a1+a2+...+ak))then a1+a2+,...,+an;(k<=n);
若布尔条件condition满足,则执行分支序列if(condition)then A=a1+a2+,...,+an。
按照幂集随机多选序列执行过程中,对于已定义的执行序列:A=a1+a2+,...,+an;该序列表示为集合A={a1,a2,...,an},求该集合A的幂集{{a1},{a1,a2},...,{a1,a2,...,an}},随机选取该幂集中的任一成员。
为了便于理解,依据所述预设的形式化规则方法描述实际需求,示例如图2A所示,该示例的具体流程如下:提取用户交互相关的测试向量1,采用预设的形式化规则方法描述各个所述测试向量1之间的交互行为,以生成多个形式化测试序列的集合;
新建病人->进入病人管理中心->进入病人报告->进行预览,存储和打印然后退出->导出指定格式病例到指定存储位置->进入导入病人管理->选择存储位置导入病人。
结合图2B所示,图2B为根据所述预设的形式化规则方法生成的多个形式化测试序列的集合,本发明具体示例中,以图表表示,在此不做详细赘述。
解析模块400还用于按照系统预设循环次数阈值,循环采用预设的形式化规则方法描述各个所述测试向量1之间的交互行为,并去除所述形式化测试序列集合中相同的形式化测试序列,形成形式化规则库;
解析模块400多次采用预设的形式化规则方法描述各个所述测试向量1之间的交互行为过程中,会不断的生成新的形式化测试序列,进一步的,将新生成的形式化测试序列与之前形成的形式化测试序列进行比对,若相同,则仅保留其中的任一个形式化测试序列,如此,优化形式化规则库,去除冗余的形式化测试序列,提高随机测试的覆盖效率。
本发明一实施方式中,解析模块400还用于对所述形式化规则库中的任意一个测试向量1进行词频统计,并计算与之相邻的测试向量1同时出现的次序频,按照各个测试向量1相关次序频的大小,依次执行各个测试向量1。
本发明一具体实施方式中,解析模块400通过N-Gram模型对每个测试向量1进行词频统计,然后对于任意一个测试向量1,计算与之相邻的测试向量1一同出现的次序频,即统计anan-1出现的次数,当执行完成任意一个测试向量1后,可以自动执行与之相邻概率较大的测试向量1;用公式表示如下:
本发明一优选实施方式中,解析模块400对选取所述测试向量采用隐马尔可夫随机模型生成随机测试向量序列。
随机选取所述测试向量生成随机测试向量序列具体包括:
解析模块400可采用传统的随机测试向量序列生成方法,也可以采用优化后的随机测试向量序列生成方法。
本发明一优选实施方式中,解析模块400对选取所述测试向量采用隐马尔可夫随机模型生成随机测试向量序列。具体的,随机选取所述测试向量,并统计在实际交互测试过程中,各个测试向量的运行结果,各个所述测试向量对应的State,下一个测试向量对应的State与当前所述测试向量的State同时出现的概率,以及每个State对应出现Action的概率。
进一步的,解析模块400还用于根据上述参数生成隐马尔可夫模型的状态转置矩阵和State、Action的混淆矩阵;
进一步的,解析模块400还用于根据状态转置矩阵,对于当前的测试向量对应的State,随机选取下一个可能出现的测试向量的State,再依据混淆矩阵随机选取一个Action,依次迭代,可以生成相应的随机测试序列。
具体的,对于任意一个测试向量对应的状态Si,下一个测试向量对应的State与当前所述测试向量的State同时出现的概率值依次以S1,S2...Sj表示,则生成的状态转置矩阵为:
对于任意一个测试向量对应的状态Si,对应可能出现的指令函数的概率值分别以A1,A2...Aj,表示,则生成的State、Action的混淆矩阵为:
本发明一实施方式中,解析模块400还对所述测试向量和所述随机测试向量序列进行功能归类具体包括:
统计所述测试向量和所述随机测试向量序列在测试过程中出现的故障,并根据故障的类型对其对应的所述测试向量和所述随机测试向量序列进行功能分类。
通常情况下,故障的类型通常根据下述对应的状况进行划分,例如:测试向量和测试序列用于硬件可靠性测试,与硬件性能相关;测试向量和测试序列用于验收测试,有较高的功能优先级;测试向量和测试序列可以验证是否与系统崩溃相关;相应的,按照故障的类型为:系统崩溃、硬件通讯故障、功能验证等,各故障类型对应的功能分类分别为:验收安全测试、硬件可靠性测试、功能测试。
为了方便描述,本发明一具体实施方式中,系统崩溃以W1表示,硬件通讯故障以W2表示、功能验证以W3表示、验收安全测试以y1表示、硬件可靠性测试以y2表示、功能测试以y3表示。
则功能分类的概率可以表示为:
根据该公式可以获得各个测试向量分别对应的y1、y2、y3的值,将所述测试向量按照其对应的最大概率值进行功能归类;
其中,y(i)的值与w权值相关,需要对w优化,其梯度下降优化公式如下:
每一次迭代需要进行如下更新:
wj=wj-α▽wjJ(w);
α为学习率,取值在0~1之间,以确定梯度下降的步长。
本发明优选实施方式中,解析模块400还用于采用Softmax分类器获取优化后的w权值,以对所述测试向量进行功能分类。
相应的,采用Softmax分类器同样对所述随机测试向量序列进行功能归类,对测试序列进行功能归类时,将所述测试序列中每个测试向量的功能分类概率值相加,然后取平均值作为当前测试序列的功能分类概率值,最后,采用Softmax分类器获取优化后的w权值,以对所述测试向量序列进行功能分类。
则:
进一步的,本发明一实施方式中,解析模块400还用于将进行功能归类后,与用户交互相关的测试向量和/或随机测试向量序列与所述形式化规则库进行匹配,若匹配成功,则确认当前的测试向量和/或随机测试序列覆盖用户需求;将其加入到随机测试序列集,以生成固定格式的数据文件继续执行;
若匹配失败,则验证当前的测试向量和/或随机测试序列是否可以通过实际运行测试,若可以通过实际运行测试,则返回修改形式化规则库;若未通过实际运行测试,则丢弃当前的测试向量和/或随机测试序列。本发明具体实施方式中,通过N-Gram模型将与用户交互相关的测试向量和/或随机测试向量序列与所述形式化规则库进行匹配;
匹配判别函数可表示为:
其中,N表示形式化方法生成的测试序列,例如:选择trigram三元模型时,n=3。
将该匹配判别函数与系统预设相似阈值进行对比,若其大于系统预设相似阈值,则确认匹配成功,否则,确认匹配失败;所述系统预设相似阈值的取值范围通常为0-1之间,例如:0.6,其大小可以根据需要具体调整,在此不做详细赘述。
相应的,若匹配失败,则需要进一步验证当前的测试向量和/或随机测试序列的有效性,若其可以通过实际的交互测试,则表示形式化规则库的建立有误,需要修改其运行逻辑,若未通过实际的交互测试,则表示当前的测试向量和/或随机测试序列未能覆盖用户需求,对其进行丢弃处理,以去除冗余数据,加快下一步的测试进程。
上述固定格式例如:JSON,XML,该所述随机测试序列集可以多次执行,也可以在执行过程中直接回放出现问题点的测试向量和/或测试序列,以进行统计和历史比对,在此不做详细赘述。
进一步的,在时间上,一轮随机测试序列集执行完毕后,统计每个测试向量的运行时长,对于耗时过长的行为可以寻找相应函数、或函数调用链相关的代码进行优化;在空间上,一轮随机测试序列集执行完毕后,比对历史运行内存占用记录,检查是否存在内存增长异常情况,若是,则可以版本间比对寻找内存增长的测试向量;在此不做详细赘述。
综上所述,本发明的超声设备可靠性的测试方法及测试系统,采用系统预设的形式化规则方法描述与用户交互相关的各个测试向量间的约束关系,并建立形式规则库;使用隐马尔可夫模型生成随机测试向量序列,并对所述随机测试向量序列进行功能归类,进一步的,将经过功能分类的随机测试向量序列与上述形式规则库进行匹配,优化测试序列生成,去除冗余测试序列;并进一步的使用Softmax模型分类,用于生成专属类别的测试用例,可以有针对性进行覆盖测试,同时大幅缩短测试时间。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以保存在保存介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,信息推送服务器,或者网络设备等)执行本申请各个实施方式或者实施方式的某些部分所述的方法。
以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、信息推送服务器计算机、手持设备或便携式设备、平板型设备、多处理模块系统、基于微处理模块的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括保存设备在内的本地和远程计算机保存介质中。
应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。