首页> 中国专利> 一种软件测试有效性分析方法及装置

一种软件测试有效性分析方法及装置

摘要

本申请提供一种软件测试有效性分析方法及装置,可以用于金融领域,所述方法包括:根据待测试程序的修改记录确定所述待测试程序中待软件测试的程序段及对应的变异测试因子;利用所述变异测试因子按照所述程序段所属变异测试组别对所述待软件测试的程序段进行并发变异测试;根据各所述待软件测试的程序段的变异测试结果确定软件测试的有效性。本申请能够为待软件测试的程序段选择对应的变异测试因子,并利用该变异测试因子对待软件测试的程序段进行并发变异测试,最终确定软件测试的有效性。

著录项

  • 公开/公告号CN112905491A

    专利类型发明专利

  • 公开/公告日2021-06-04

    原文格式PDF

  • 申请/专利权人 中国工商银行股份有限公司;

    申请/专利号CN202110352732.7

  • 发明设计人 熊小庆;黄震人;陈巧燕;丁计来;

    申请日2021-03-31

  • 分类号G06F11/36(20060101);

  • 代理机构11127 北京三友知识产权代理有限公司;

  • 代理人任默闻;王涛

  • 地址 100140 北京市西城区复兴门内大街55号

  • 入库时间 2023-06-19 11:16:08

说明书

技术领域

本发明涉及软件测试领域,可以应用于金融领域,具体是一种软件测试有效性分析方法及装置。

背景技术

软件测试对于软件开发质量的保证起着至关重要的作用,行业中有各种分析软件测试有效性的方法,变异测试是其中的一种。利用变异测试分析软件测试有效性的原理是向源代码中注入各种变异测试因子,然后运行单元测试脚本,通过评估单元测试脚本检出变异测试因子的能力来分析软件测试的有效性。如果原本执行成功的单元测试脚本在注入变异测试因子后执行失败了,则单元测试脚本能成功拦截变异测试因子,即该变异测试因子被成功杀死,从而表明该软件测试脚本具有有效性;如果注入变异测试因子后测试脚本未运行失败,变异测试因子因未被拦截而存活了下来,则表明该软件测试脚本失效或部分失效。软件测试有效性的分析指标为被杀死的变异测试因子数/总的变异测试因子数。

虽然变异测试是一种分析软件测试有效性的强大工具,但在目前软件开发倡导敏捷开发的大背景下,其计算所需的资源开销大及执行时间长等问题被凸显出来,导致目前的变异测试在软件开发过程中难以广泛运用。

发明内容

针对现有技术中的问题,本申请提供一种软件测试有效性分析方法及装置,能够为待软件测试的程序段选择对应的变异测试因子,并利用该变异测试因子对待软件测试的程序段进行并发变异测试,最终确定软件测试的有效性。

为解决上述技术问题,本申请提供以下技术方案:

第一方面,本申请提供一种软件测试有效性分析方法,包括:

根据待测试程序的修改记录确定所述待测试程序中待软件测试的程序段及对应的变异测试因子;

利用所述变异测试因子按照所述程序段所属变异测试组别对所述待软件测试的程序段进行并发变异测试;

根据各所述待软件测试的程序段的变异测试结果确定软件测试的有效性。

进一步地,根据待测试程序的修改记录确定所述待测试程序中待软件测试的程序段及对应的变异测试因子,包括:

根据所述修改记录确定所述待软件测试的程序段;

根据所述待软件测试的程序段确定指令类型、调用次数及调用深度;

根据所述指令类型、调用次数及调用深度确定所述待软件测试的程序段对应的所述变异测试因子。

进一步地,利用所述变异测试因子按照所述程序段所属变异测试组别对所述待软件测试的程序段进行并发变异测试,包括:

通过预先获取的测试脚本对所述待软件测试的程序段进行软件测试,得到所述待软件测试的程序段对应的软件测试结果及软件测试的覆盖率;

根据所述软件测试结果及软件测试的覆盖率确定待变异测试的程序段;

加载所述变异测试因子至对应的待变异测试的程序段;

利用所述测试脚本,按照程序段所属变异测试组别对加载入变异测试因子后的待变异测试的程序段进行并发变异测试。

进一步地,所述根据各所述待软件测试的程序段的变异测试结果确定软件测试的有效性,包括:

根据被杀死的变异测试因子的数量及所述变异测试因子的总数量确定所述软件测试的有效率;

根据预先设定的有效率阈值及所述有效率确定所述软件测试的有效性。

进一步地,在根据各所述待软件测试的程序段的变异测试结果确定软件测试的有效性之后,还包括:

根据未被杀死的变异测试因子的指令类型及所述覆盖率确定失效类型;所述指令类型至少包括运算符类型、代码结构、变量类型及函数调用类型;所述失效类型至少包括断言不充分及分支覆盖不全;

根据预先设定的程序关键字及所述指令类型确定失效级别;

根据所述失效类型及所述失效级别确定所述软件测试的失效原因。

第二方面,本申请提供一种软件测试有效性分析装置,包括:

程序段因子确定单元,用于根据待测试程序的修改记录确定所述待测试程序中待软件测试的程序段及对应的变异测试因子;

变异测试单元,用于利用所述变异测试因子按照所述程序段所属变异测试组别对所述待软件测试的程序段进行并发变异测试;

有效性确定单元,用于根据各所述待软件测试的程序段的变异测试结果确定软件测试的有效性。

进一步地,所述程序段因子确定单元,包括:

程序段确定模块,用于根据所述修改记录确定所述待软件测试的程序段;

指令次数深度确定模块,用于根据所述待软件测试的程序段确定指令类型、调用次数及调用深度;

变异因子确定模块,用于根据所述指令类型、调用次数及调用深度确定所述待软件测试的程序段对应的所述变异测试因子。

进一步地,所述变异测试单元,包括:

测试结果覆盖率确定模块,用于通过预先获取的测试脚本对所述待软件测试的程序段进行软件测试,得到所述待软件测试的程序段对应的软件测试结果及软件测试的覆盖率;

程序段确定模块,用于根据所述软件测试结果及软件测试的覆盖率确定待变异测试的程序段;

因子加载模块,用于加载所述变异测试因子至对应的待变异测试的程序段;

变异测试模块,用于利用所述测试脚本,按照程序段所属变异测试组别对加载入变异测试因子后的待变异测试的程序段进行并发变异测试。

进一步地,所述有效性确定单元,包括:

有效率确定模块,用于根据被杀死的变异测试因子的数量及所述变异测试因子的总数量确定所述软件测试的有效率;

有效性确定模块,用于根据预先设定的有效率阈值及所述有效率确定所述软件测试的有效性。

进一步地,所述的软件测试有效性分析装置,还包括:

失效类型确定模块,用于根据未被杀死的变异测试因子的指令类型及所述覆盖率确定失效类型;所述指令类型至少包括运算符类型、代码结构、变量类型及函数调用类型;所述失效类型至少包括断言不充分及分支覆盖不全;

失效级别确定模块,用于根据预先设定的程序关键字及所述指令类型确定失效级别;

失效原因确定模块,用于根据所述失效类型及所述失效级别确定所述软件测试的失效原因。

第三方面,本申请提供一种电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述软件测试有效性分析方法的步骤。

第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述软件测试有效性分析方法的步骤。

针对现有技术中的问题,本申请提供的软件测试有效性分析方法及装置,能够选择待软件测试的程序段及其对应的变异测试因子,然后按照待软件测试的程序段所属的不同分组,利用选定的变异测试因子对待软件测试的程序段执行并发变异测试,精准守护,还能够基于用户反馈持续提升变异测试因子的适配度,避免了因注入大量通用的变异测试因子而浪费执行时间与计算能力,大大提升了变异测试的执行效率,缩短了变异测试的执行时间。

附图说明

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

图1为本申请实施例中软件测试有效性分析方法的流程图之一;

图2为本申请实施例中确定待软件测试的程序段及对应变异测试因子的流程图;

图3为本申请实施例中进行并发变异测试的流程图;

图4为本申请实施例中确定软件测试的有效性的流程图;

图5为本申请实施例中软件测试有效性分析方法的流程图之二;

图6为本申请实施例中软件测试有效性分析装置的结构图之一;

图7为本申请实施例中程序段因子确定单元的结构图;

图8为本申请实施例中变异测试单元的结构图;

图9为本申请实施例中有效性确定单元的结构图;

图10为本申请实施例中软件测试有效性分析装置的结构图之二;

图11为本申请实施例中的电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请所述的软件测试有效性分析方法及装置涉及信息安全领域,可用于金融领域,也可用于除金融领域之外的任意领域,本申请不对所述的软件测试有效性分析方法及装置的应用领域做出限定。

参见图1,为了能够为待软件测试的程序段选择对应的变异测试因子,并利用该变异测试因子对待软件测试的程序段进行并发变异测试,最终确定软件测试的有效性,本申请提供一种软件测试有效性分析方法,包括:

S101:根据待测试程序的修改记录确定待测试程序中待软件测试的程序段及对应的变异测试因子;

可以理解的是,本申请实施例中需要对待测试程序先进行软件测试,然后对通过软件测试的程序段进行变异测试,从而确定软件测试的有效性。

为了确定待软件测试的程序段,本申请实施例可以查询待测试程序的修改记录。所谓修改记录实际上即为程序修改记录,程序修改记录来源于Git,Git是一种广泛应用的代码托管与研发平台,可以记录每次程序开发人员提交的文件列表以及具体到行的代码变更明细,通过传入程序提交的Hash值可以分析出当次提交的所有变更程序、变更方法以及变更类型,如增删改等。通过查询Git可以获知哪些程序段被修改过,从而仅需针对这些被修改过的程序段进行软件测试。

当流水线执行到达变异测试执行阶段时,本申请实施例根据记录在Git上的程序修改记录扫描出本次修改的代码及方法(函数),同时查找其所对应的测试脚本。

当程序首次执行时,测试脚本可取全量测试脚本。

在确定了待软件测试的程序段后,可以根据其特征选择其所适合的变异测试因子,具体选择方法参见S201~S203的阐述。

S102:利用变异测试因子按照程序段所属变异测试组别对待软件测试的程序段进行并发变异测试;

可以理解的是,由于本申请实施例中的变异测试是并发执行的,因此需要对多个待软件测试的程序段进行分组,以便各分组可以同时执行变异测试,提高测试效率。根据程序段的特征可以确定所属变异测试组别,详见S304的阐述。

S103:根据各待软件测试的程序段的变异测试结果确定软件测试的有效性。

可以理解的是,在变异测试完成以后,可以确定软件测试的有效性。对于失效的软件测试还可以分析其失效原因,以便后续进行改进。其中,变异测试结果至少包括:变异因子被成功杀死、变异因子未被成功杀死。

从上述描述可知,本申请提供的软件测试有效性分析方法,能够选择待软件测试的程序段及其对应的变异测试因子,然后按照待软件测试的程序段所属的不同分组,利用选定的变异测试因子对待软件测试的程序段执行并发变异测试,精准守护,还能够基于用户反馈持续提升变异测试因子的适配度,避免了因注入大量通用的变异测试因子而浪费执行时间与计算能力,大大提升了变异测试的执行效率,缩短了变异测试的执行时间。

参见图2,根据待测试程序的修改记录确定所述待测试程序中待软件测试的程序段及对应的变异测试因子,包括:

S201:根据修改记录确定待软件测试的程序段;

S202:根据待软件测试的程序段确定所述待软件测试的程序段特征,这些特征包括指令类型、调用次数及调用深度等;

S203:根据程序段特征确定待软件测试的程序段对应的变异测试因子。

可以理解的是,在本申请实施例中,程序开发人员可以在Git上提交修改后的程序代码。本申请实施例中,仅对修改过的程序代码进行软件测试以及变异测试,因此根据修改记录可以确定待软件测试的程序段。这些待软件测试的程序段也可称为变更程序。

针对变更程序,可以根据其源代码中的方法(函数)被调用的次数以及被调用的深度,将变更程序进行分级,将其分为核心程序及一般程序。所谓核心程序是指方法(函数)被调用的次数较多,被调用的深度较深的程序;一般程序是指方法(函数)被调用的次数较少,被调用的深度较浅的程序。

根据上述程序分级,结合程序指令类型可以选择相应的变异测试因子。对于核心程序,可以选择多个变异测试因子,以求更加全面的测试效果;对于一般程序,可以仅选择较关键的,级别较高的少量变异测试因子,以求更有针对性的高效测试。

针对变更程序,本申请实施例采用抽象语法树(Abstract Syntax Tree,AST)分析法确定方法(函数)被调用的次数以及深度,同时预先设置了调用次数以及调用深度的阈值;当变更程序中至少存在一个核心方法时,则该变更程序可被认定为一个核心程序。

核心方法的判定过程如下:当被调用的次数大于预先设定的调用次数阈值或最大调用深度大于预先设定的调用深度阈值时,方法(函数)为核心方法。

isKeyMethod=invokeTime>INVOKE_TIME_THRESHOLD||max(invokeDepth)>INVOKE_DEPTH_THRESHOLD

在此基础上,可以确定变异测试因子。

变异测试因子的选择可以从程序级别以及源码特征这两个方面进行考虑。核心程序选择更多的变异测试因子,可以包括移除调用变异测试因子、条件取反变异测试因子、增量修改变异测试因子等多种变异测试因子。一般程序可以选择较关键的,级别较高的少量变异测试因子,如边界值变异测试因子等。

从上述描述可知,本申请提供的软件测试有效性分析方法,能够根据待测试程序的修改记录确定所述待测试程序中待软件测试的程序段及对应的变异测试因子。

参见图3,利用变异测试因子按照程序段所属变异测试组别对待软件测试的程序段进行并发变异测试,包括:

S301:通过预先获取的测试脚本对待软件测试的程序段进行软件测试,得到待软件测试的程序段对应的软件测试结果及软件测试的覆盖率;

可以理解的是,在上一步骤中已经确定出了待软件测试的程序段,利用测试脚本可以对待软件测试的程序段进行软件测试,软件测试采用常规传统方法进行。软件测试完成后,可以得到软件测试结果及软件测试的覆盖率。所谓软件测试结果是指待软件测试的程序段是否通过了软件测试。所谓软件测试的覆盖率是指是否有测试脚本对应于待软件测试的程序段,因为并非每一待软件测试的程序段都对应有测试脚本,没有测试脚本对应的待软件测试的程序段无法完成软件测试,也就是没有被软件测试所覆盖。

具体地,首先在变更程序的源码中找到单元测试框架,将变更程序与测试脚本中的测试用例作为本次待执行的因子写入配置文件,调起执行软件测试,并收集执行结果与覆盖率数据。

S302:根据软件测试结果及软件测试的覆盖率确定待变异测试的程序段;

可以理解的是,本申请实施例中的变异测试仅针对成功通过软件测试的程序段进行。

需要说明的是,如果尚未通过软件测试,则说明程序本身尚存在问题需要解决,程序代码需要修改,因此无需进行变异测试;同时,如果没有被软件测试所覆盖,则后续的变异测试也无法执行,因为变异测试因子需要测试脚本作为载体进行注入,才能执行变异测试。

S303:加载变异测试因子至对应的待变异测试的程序段;

需要说明的是,加载步骤也称注入步骤,主要是将目标指令替换为变异后的指令。变异因子的注入过程采用ASM(字节码增强)技术将变异因子插入到源代码中。

S304:利用测试脚本,按照程序段所属变异测试组别对待变异测试的程序段进行并发变异测试。

可以理解的是,为了提高变异测试的效率,本申请实施例采取并发执行机制。为了进行并发执行,需要对待变异测试的程序进行分组,举例而言,可以分析待变异测试的程序对应代码的特征,将变异点多、指令多的代码分配到配置高、负载低的执行机组,将资源需求低的代码分配到配置低、负载高的执行机组。其中,执行机组的状态可以包括但不限于:执行机占用状态、CPU负载状态以及内存负载状态等。代码的特征可以包括但不限于:指令数、指令类型等。

分组完成以后,可以利用测试脚本,按照程序段所属变异测试组别对加载入变异测试因子后的待变异测试的程序段进行并发变异测试。

从上述描述可知,本申请提供的软件测试有效性分析方法,能够利用变异测试因子按照程序段所属变异测试组别对待软件测试的程序段进行并发变异测试。

参见图4,根据各待软件测试的程序段的变异测试结果确定软件测试的有效性,包括:

S401:根据被杀死的变异测试因子的数量及变异测试因子的总数量确定软件测试的有效率;

S402:根据预先设定的有效率阈值及有效率确定所述软件测试的有效性。

需要说明的是,上述过程可理解为:如果测试脚本在变异测试中测试失败,则表明该软件测试脚本有效,因为测试脚本成功发现了变异;反之,软件测试脚本失效或部分失效。另外,本申请不对预先设定的有效率阈值做出具体限制,可以根据实际情况进行设定。

从上述描述可知,本申请提供的软件测试有效性分析方法,能够根据各待软件测试的程序段的变异测试结果确定软件测试的有效性。

参见图5,在根据各所述待软件测试的程序段的变异测试结果确定软件测试的有效性之后,还包括:

S501:根据未被杀死的变异测试因子的指令类型及所述覆盖率确定失效类型;所述指令类型至少包括运算符类型、代码结构、变量类型及函数调用类型;所述失效类型至少包括断言不充分及分支覆盖不全;

可以理解的是,本申请实施例可以采用指令分析与覆盖率分析结合的方式对变异测试的执行结果进行自动分析与分级。针对未被“杀死”的变异测试因子,根据变异因子的指令类型及软件测试的覆盖率数据,可将原因具体分析为断言不充分或分支覆盖不全等。针对每个问题,可根据变异测试因子及代码中的关键字,基于分类规则库进行分级。该规则库最初为人工初始化,后续可以根据开发人员的反馈进行更新,更新方法详见S503中的描述。

S502:根据预先设定的程序关键字及指令类型确定失效级别,如返回值未断言为严重问题,异常类型未断言为一般问题;

可以理解的是,在变异测试执行过程中,流水线会记录详细的变异执行日志,包括执行步骤、步骤耗时以及执行过程中执行机的负载情况等。在本步骤中,将日志收集后进行分析,可以得出不同变异测试因子执行过程中的执行机负载、执行时间等数据。此数据可用于在下一次执行变异测试前作为变异测试分组的依据。

S503:根据失效类型及失效级别确定软件测试的失效原因。

从上述描述可知,本申请提供的软件测试有效性分析方法,能够确定软件测试的失效原因。

本步骤首先计算测试有效性,计算方式为被杀死的变异数/总变异数,该数值可作为提交构建流水线的门禁值,当有效性低于阈值(如80%)时可拒绝将提交的代码合并到主干分支,从而控制单元测试的质量。同时,将未被杀死的变异明细推送给代码的开发人员,开发人员人工分析问题的有效性与等级评定是否合理,并进行反馈。基于开发人员的反馈,可对步骤S301中使用的变异因子的分类规则库进行扩充,方便后续更有效地对变异结果进行分析。

需要说明的是,在一实施例中,步骤S101可以将执行变异测试的代码范围缩小到个位数,将执行变异的变异测试因子缩减到最小范围;步骤S102可以在变异测试时实现并发调度,使单次变异测试的执行时间由小时级缩短到分钟级,使变异测试可以集成到流水线中执行,持续检测测试案例的有效性,真正起到守护代码质量的作用;步骤S103可以收集变异执行的结果,并根据开发人员的反馈持续不断地更新变异测试因子,使最适合各代码的变异测试因子更多地运用到各代码的变异测试中,发挥更大的作用。

基于同一发明构思,本申请实施例还提供了一种软件测试有效性分析装置,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于软件测试有效性分析装置解决问题的原理与软件测试有效性分析方法相似,因此软件测试有效性分析装置的实施可以参见基于软件性能基准确定方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

参见图6,为了能够为待软件测试的程序段选择对应的变异测试因子,并利用该变异测试因子对待软件测试的程序段进行并发变异测试,最终确定软件测试的有效性,本申请提供一种软件测试有效性分析装置,包括:

程序段因子确定单元601,用于根据待测试程序的修改记录确定所述待测试程序中待软件测试的程序段及对应的变异测试因子;

变异测试单元602,用于利用所述变异测试因子按照所述程序段所属变异测试组别对所述待软件测试的程序段进行并发变异测试;

有效性确定单元603,用于根据各所述待软件测试的程序段的变异测试结果确定软件测试的有效性。

参见图7,所述程序段因子确定单元601,包括:

程序段确定模块701,用于根据所述修改记录确定所述待软件测试的程序段;

指令次数深度确定模块702,用于根据所述待软件测试的程序段确定指令类型、调用次数及调用深度;

变异因子确定模块703,用于根据所述指令类型、调用次数及调用深度确定所述待软件测试的程序段对应的所述变异测试因子。

参见图8,所述变异测试单元602,包括:

测试结果覆盖率确定模块801,用于通过预先获取的测试脚本对所述待软件测试的程序段进行软件测试,得到所述待软件测试的程序段对应的软件测试结果及软件测试的覆盖率;

程序段确定模块802,用于根据所述软件测试结果及软件测试的覆盖率确定待变异测试的程序段;

因子加载模块803,用于加载所述变异测试因子至对应的待变异测试的程序段;

变异测试模块804,用于利用所述测试脚本,按照程序段所属变异测试组别对加载入变异测试因子后的待变异测试的程序段进行并发变异测试。

参见图9,所述有效性确定单元603,包括:

有效率确定模块901,用于根据被杀死的变异测试因子的数量及所述变异测试因子的总数量确定所述软件测试的有效率;

有效性确定模块902,用于根据预先设定的有效率阈值及所述有效率确定所述软件测试的有效性。

参见图10,所述的软件测试有效性分析装置,还包括:

失效类型确定模块1001,用于根据未被杀死的变异测试因子的指令类型及所述覆盖率确定失效类型;所述指令类型至少包括运算符类型、代码结构、变量类型及函数调用类型;所述失效类型至少包括断言不充分及分支覆盖不全;

失效级别确定模块1002,用于根据预先设定的程序关键字及所述指令类型确定失效级别;

失效原因确定模块1003,用于根据所述失效类型及所述失效级别确定所述软件测试的失效原因。

从硬件层面来说,为了能够为待软件测试的程序段选择对应的变异测试因子,并利用该变异测试因子对待软件测试的程序段进行并发变异测试,最终确定软件测试的有效性,本申请提供一种用于实现所述软件测试有效性分析方法中的全部或部分内容的电子设备的实施例,所述电子设备具体包含有如下内容:

处理器(Processor)、存储器(Memory)、通讯接口(Communications Interface)和总线;其中,所述处理器、存储器、通讯接口通过所述总线完成相互间的通讯;所述通讯接口用于实现所述软件测试有效性分析装置与核心业务系统、用户终端以及相关数据库104等相关设备之间的信息传输;该逻辑控制器可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该逻辑控制器可以参照实施例中的软件测试有效性分析方法的实施例,以及软件测试有效性分析装置的实施例进行实施,其内容被合并于此,重复之处不再赘述。

可以理解的是,所述用户终端可以包括智能手机、平板电子设备、网络机顶盒、便携式计算机、台式电脑、个人数字助理(PDA)、车载设备、智能穿戴设备等。其中,所述智能穿戴设备可以包括智能眼镜、智能手表、智能手环等。

在实际应用中,软件测试有效性分析方法的部分可以在如上述内容所述的电子设备侧执行,也可以所有的操作都在所述客户端设备中完成。具体可以根据所述客户端设备的处理能力,以及用户使用场景的限制等进行选择。本申请对此不作限定。若所有的操作都在所述客户端设备中完成,所述客户端设备还可以包括处理器。

上述的客户端设备可以具有通讯模块(即通讯单元),可以与远程的服务器进行通讯连接,实现与所述服务器的数据传输。所述服务器可以包括任务调度中心一侧的服务器,其他的实施场景中也可以包括中间平台的服务器,例如与任务调度中心服务器有通讯链接的第三方服务器平台的服务器。所述的服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式装置的服务器结构。

图11为本申请实施例的电子设备9600的系统构成的示意框图。如图11所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图11是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。

一实施例中,软件测试有效性分析方法功能可以被集成到中央处理器9100中。其中,中央处理器9100可以被配置为进行如下控制:

S101:根据待测试程序的修改记录确定所述待测试程序中待软件测试的程序段及对应的变异测试因子;

S102:利用所述变异测试因子按照所述程序段所属变异测试组别对所述待软件测试的程序段进行并发变异测试;

S103:根据各所述待软件测试的程序段的变异测试结果确定软件测试的有效性。

从上述描述可知,本申请提供的软件测试有效性分析方法及装置,能够选择待软件测试的程序段及其对应的变异测试因子,然后按照待软件测试的程序段所属的不同分组,利用选定的变异测试因子对待软件测试的程序段执行并发变异测试,精准守护,还能够基于用户反馈持续提升变异测试因子的适配度,避免了因注入大量通用的变异测试因子而浪费执行时间与计算能力,大大提升了变异测试的执行效率,缩短了变异测试的执行时间。

在另一个实施方式中,软件测试有效性分析装置可以与中央处理器9100分开配置,例如可以将数据复合传输装置软件测试有效性分析装置配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现软件测试有效性分析方法的功能。

如图11所示,该电子设备9600还可以包括:通讯模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图11中所示的所有部件;此外,电子设备9600还可以包括图11中没有示出的部件,可以参考现有技术。

如图11所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。

其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。

输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。

该存储器9140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。

存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通讯功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。

通讯模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通讯模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通讯终端的情况相同。

基于不同的通讯技术,在同一电子设备中,可以设置有多个通讯模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通讯模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声音。

本申请的实施例还提供能够实现上述实施例中的执行主体为服务器或客户端的软件测试有效性分析方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的执行主体为服务器或客户端的软件测试有效性分析方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:

S101:根据待测试程序的修改记录确定所述待测试程序中待软件测试的程序段及对应的变异测试因子;

S102:利用所述变异测试因子按照所述程序段所属变异测试组别对所述待软件测试的程序段进行并发变异测试;

S103:根据各所述待软件测试的程序段的变异测试结果确定软件测试的有效性。

从上述描述可知,本申请提供的软件测试有效性分析方法及装置,能够选择待软件测试的程序段及其对应的变异测试因子,然后按照待软件测试的程序段所属的不同分组,利用选定的变异测试因子对待软件测试的程序段执行并发变异测试,精准守护,还能够基于用户反馈持续提升变异测试因子的适配度,避免了因注入大量通用的变异测试因子而浪费执行时间与计算能力,大大提升了变异测试的执行效率,缩短了变异测试的执行时间。

本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号