一种软件测试方法、计算机可读存储介质及终端设备与流程

文档序号:15144000发布日期:2018-08-10 20:13阅读:135来源:国知局

本发明属于计算机技术领域,尤其涉及一种软件测试方法、计算机可读存储介质及终端设备。



背景技术:

软件测试时软件开发过程中的一个重要环节,为了保证软件系统的准确性和稳定性,一般会在软件投入实际使用前进行多次的测试。

现有技术在进行软件测试时,各次测试一般都是使用相同的测试用例,测试流程固定呆板,无法根据实际情况对测试内容进行调整,测试效率较低。



技术实现要素:

有鉴于此,本发明实施例提供了一种软件测试方法、计算机可读存储介质及终端设备,以解决现有技术在进行软件测试时,测试流程固定呆板、测试效率较低的问题。

本发明实施例的第一方面提供了一种软件测试方法,可以包括:

获取当前进行的软件测试的测试类型;

从预设的测试用例数列表中查找与所述测试类型对应的测试用例数;

根据预设的测试优先级从预设的测试用例库中选取测试优先级在前t位的测试用例作为优选测试用例,其中,t为确定的所述测试用例数;

使用选取的所述优选测试用例进行软件测试,得到测试结果;

根据所述测试结果对所述测试用例数列表和所述测试优先级进行更新。

本发明实施例的第二方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如下步骤:

获取当前进行的软件测试的测试类型;

从预设的测试用例数列表中查找与所述测试类型对应的测试用例数;

根据预设的测试优先级从预设的测试用例库中选取测试优先级在前t位的测试用例作为优选测试用例,其中,t为确定的所述测试用例数;

使用选取的所述优选测试用例进行软件测试,得到测试结果;

根据所述测试结果对所述测试用例数列表和所述测试优先级进行更新。

本发明实施例的第三方面提供了一种软件测试终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时实现如下步骤:

获取当前进行的软件测试的测试类型;

从预设的测试用例数列表中查找与所述测试类型对应的测试用例数;

根据预设的测试优先级从预设的测试用例库中选取测试优先级在前t位的测试用例作为优选测试用例,其中,t为确定的所述测试用例数;

使用选取的所述优选测试用例进行软件测试,得到测试结果;

根据所述测试结果对所述测试用例数列表和所述测试优先级进行更新。

本发明实施例与现有技术相比存在的有益效果是:本发明实施例首先获取当前进行的软件测试的测试类型,从预设的测试用例数列表中查找与所述测试类型对应的测试用例数,然后根据预设的测试优先级从预设的测试用例库中选取测试优先级在前t位的测试用例作为优选测试用例,并使用选取的所述优选测试用例进行软件测试,得到测试结果,最后根据所述测试结果对所述测试用例数列表以及所述测试优先级均进行更新。即每轮测试之后,都会根据本轮测试结果对测试用例数列表以及测试优先级进行更新,由于测试用例数列表以及测试优先级发生更新,在下轮测试时,就会选取到不同的测试用例且测试用例数目也会做出相应改变,而且由于这个改变的过程是以本轮测试结果为依据的,更加具有针对性,可以灵活地根据实际情况对测试内容进行调整,大大提升了测试效率。

附图说明

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

图1为本发明实施例中一种软件测试方法的一个实施例流程图;

图2为测试用例库的预设过程的示意流程图;

图3为测试优先级的预设过程的示意流程图;

图4为本发明实施例中一种软件测试装置的一个实施例结构图;

图5为本发明实施例中一种软件测试终端设备的示意框图。

具体实施方式

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

请参阅图1,本发明实施例中一种软件测试方法的一个实施例可以包括:

步骤s101、获取当前进行的软件测试的测试类型。

在本实施例中,可以将软件测试分为冒烟测试、重点覆盖测试以及全面覆盖测试等测试类型,其中,冒烟测试为对少数测试用例进行的试探性测试,重点覆盖测试为对部分重要测试用例进行的测试、全面覆盖测试为对所有测试用例进行的测试。一般地,在开始进行本次软件测试前,测试人员需要确定好当前进行的软件测试的测试类型,并通过人机交互界面输入该测试类型。

步骤s102、从预设的测试用例数列表中查找与所述测试类型对应的测试用例数。

在所述测试用例数列表中记录了各种测试类型与其测试用例数之间的关系,例如,在对所述测试用例数列表进行初始设置时,可以设置冒烟测试对应的测试用例数为10个,设置重点覆盖测试对应的测试用例数为100个,全面覆盖测试对应的测试用例数为5000个等等。

特别需要注意的是,在所述测试用例数列表中记录的各种测试类型与其测试用例数之间的关系可以不断地根据以往的测试结果进行调整,具体的调整过程将在步骤s105中详述。

步骤s103、根据预设的测试优先级从预设的测试用例库中选取测试优先级在前t位的测试用例作为优选测试用例。

其中,t为在步骤s102中确定的所述测试用例数。

所述测试用例库的预设过程具体可以包括如图2所示的过程:

步骤s201、获取需要进行测试的各个测试参数。

在本实施例中,可以将需要进行测试的各个测试参数分别表示为para1、para2、para3、……、paran,其中,n为测试参数的总个数。

步骤s202、确定各个所述测试参数的数据类型。

在本实施例中,所述测试参数的数据类型可以是字符型、数值型、布尔型、日期型等基本数据类型,也可以是由基本数据类型构建成的各种数据结构及数据模型。

步骤s203、根据所述数据类型确定各个所述测试参数的可选取值。

为了减少测试用例量,测试参数的可选取值并不进行遍历选取,而是只从预设的参数取值基本库中进行选取,不同的数据类型有与之对应的参数取值基本库,参数取值基本库可以根据等价类、特殊数据划分法、边界值等测试划分方法来进行确定。如日期型,其参数取值基本库可以包括1900年1月0日、闰年、xxxx年1月1日、xxxx年12月31日等取值。

步骤s204、对各个所述测试参数的可选取值的组合进行遍历,得到所述测试用例库。

其中,所述测试用例库中的每个测试用例均为各个所述测试参数的可选取值的一种组合。例如,para1的可选取值的数目为m1,para2的可选取值的数目为m2,para3的可选取值的数目为m3,……,paran的可选取值的数目为mn,对各个测试参数的可选取值的组合进行遍历,共可得到种组合,这mtotal种组合也就是mtotal个测试用例,所有的这些测试用例组成了完整的测试用例库。

所述测试优先级的预设过程具体可以包括如图3所示的过程:

步骤s301、从所述测试用例库中任意选取一个尚未计算过被选取概率的测试用例作为当前测试用例。

步骤s302、获取所述当前测试用例中各个所述测试参数的当前取值在预设的生产环境下被选取的概率以及在预设的测试环境下被选取的概率。

其中,各个所述测试参数的当前取值在所述生产环境下被选取的概率是通过对生产环境,也即实际应用的场景中的日志进行分析、抽取而得到的参数取值分布,例如,某个测试参数的当前取值为特殊字符,而在生产环境日志中共抽取到生产问题100个,其中有80个问题是因为特殊字符导致,那么其在生产环境下被选取的概率为80/100=0.8。

相应地,各个所述测试参数的当前取值在所述测试环境下被选取的概率是通过对测试环境日志进行分析、抽取而得到的参数取值分布,例如,某个测试参数的当前取值为特殊字符,而在测试环境日志中共抽取到测试问题100个,其中有40个问题是因为特殊字符导致,那么其在测试环境下被选取的概率为40/100=0.4。

步骤s303、根据下式计算所述当前测试用例的被选取概率:

其中,p为所述当前测试用例的被选取概率,ppro_n为第n个测试参数的当前取值在所述生产环境下被选取的概率,ptest_n为第n个测试参数的当前取值在所述测试环境下被选取的概率,kpro和ktest分别为预设的权重,且kpro+ktest=1,1≤n≤n,n为测试参数的总个数。

步骤s304、判断所述测试用例库中的每个测试用例是否均被计算过被选取概率。

若还存在未被计算过被选取概率的测试用例,则返回执行步骤s301及其后续步骤,若所述测试用例库中的每个测试用例均被计算过被选取概率,则执行步骤s305。

步骤s305、根据所述测试用例库中的各个测试用例的被选取概率确定各个测试用例的测试优先级。

其中,所述测试优先级的高低与所述被选取概率的大小正相关。

以只有两个测试参数的简单情形为例:

测试参数1的可选取值为a和b,其中a在所述生产环境下被选取的概率为0.7,在所述测试环境下被选取的概率为0.6,b在所述生产环境下被选取的概率为0.3,在所述测试环境下被选取的概率为0.4。

测试参数2的可选取值为c和d,其中c在所述生产环境下被选取的概率为0.5,在所述测试环境下被选取的概率为0.7,d在所述生产环境下被选取的概率为0.5,在所述测试环境下被选取的概率为0.3。

假设kpro=0.5、ktest=0.5,则各个测试用例的被选取概率分别为:

测试用例1,a&c,p(a&c)=(0.5*0.7+0.5*0.6)*(0.5*0.5+0.5*0.7)=0.39;

测试用例2,a&d,p(a&d)=(0.5*0.7+0.5*0.6)*(0.5*0.5+0.5*0.3)=0.26;

测试用例3,b&c,p(b&c)=(0.5*0.3+0.5*0.4)*(0.5*0.5+0.5*0.7)=0.21;

测试用例4,b&d,p(b&c)=(0.5*0.3+0.5*0.4)*(0.5*0.5+0.5*0.3)=0.14。

据此可以确定各个测试用例按照测试优先级从高到低的顺序依次为:测试用例1,测试用例2,测试用例3,测试用例4。

步骤s104、使用选取的所述优选测试用例进行软件测试,得到测试结果。

步骤s105、根据所述测试结果对所述测试用例数列表和所述测试优先级进行更新。

具体地,对所述测试用例数列表进行更新的过程可以包括:

根据所述测试结果计算当前测试通过率;

根据下式计算更新后的测试用例数:

其中,t′为所述更新后的测试用例数,tbase为预设的基准测试用例数,ηcurrent为所述当前测试通过率,ηbase为预设的基准测试通过率;

可以看出,更新后的测试用例数与当前测试通过率负相关,即当前测试通过率越高,则更新后的测试用例数越少,反之,当前测试通过率越低,则更新后的测试用例数越多。

将在测试用例数列表中与获取的所述测试类型对应的测试用例数替换为所述更新后的测试用例数,即可完成对所述测试用例数列表的更新。

具体地,对所述测试优先级进行更新的过程可以包括:

根据所述测试结果调整各个所述测试参数的可选取值在所述测试环境下被选取的概率。由于新增了本次测试的测试结果,各个所述测试参数的可选取值在所述测试环境下被选取的概率也会相应发生变化,因此,需要按照步骤s302中的过程重新计算各个所述测试参数的可选取值在所述测试环境下被选取的概率。

根据调整后的各个所述测试参数的可选取值在所述测试环境下被选取的概率重新计算所述测试用例库中的各个测试用例的被选取概率。具体的计算过程与步骤s303中的相同,本实施例在此不再赘述。

根据所述测试用例库中的各个测试用例的被选取概率对各个测试用例的测试优先级进行更新。具体的计算过程与步骤s305中的相同,本实施例在此不再赘述。

进一步地,还可以增加对新增可选取值的考虑。

例如,若某测试参数原本只有2个可选取值,在软件系统升级后,该测试参数又新增了1个可选取值,则需要对该测试参数的各个可选取值被选取的概率进行调整,优选地,将新增取值被选取的概率设置为大于其它取值的数,以增大在后续的测试中对该新增取值的测试概率。

综上所述,本发明实施例首先获取当前进行的软件测试的测试类型,从预设的测试用例数列表中查找与所述测试类型对应的测试用例数,然后根据预设的测试优先级从预设的测试用例库中选取测试优先级在前t位的测试用例作为优选测试用例,并使用选取的所述优选测试用例进行软件测试,得到测试结果,最后根据所述测试结果对所述测试用例数列表以及所述测试优先级均进行更新。即每轮测试之后,都会根据本轮测试结果对测试用例数列表以及测试优先级进行更新,由于测试用例数列表以及测试优先级发生更新,在下轮测试时,就会选取到不同的测试用例且测试用例数目也会做出相应改变,而且由于这个改变的过程是以本轮测试结果为依据的,更加具有针对性,可以灵活地根据实际情况对测试内容进行调整,大大提升了测试效率。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

对应于上文实施例所述的一种软件测试方法,图4示出了本发明实施例提供的一种软件测试装置的一个实施例结构图。

本实施例中,一种软件测试装置可以包括:

测试类型获取模块401,用于获取当前进行的软件测试的测试类型;

测试用例数查找模块402,用于从预设的测试用例数列表中查找与所述测试类型对应的测试用例数;

优选测试用例选取模块403,用于根据预设的测试优先级从预设的测试用例库中选取测试优先级在前t位的测试用例作为优选测试用例,其中,t为确定的所述测试用例数;

软件测试模块404,用于使用选取的所述优选测试用例进行软件测试,得到测试结果;

测试更新模块405,用于根据所述测试结果对所述测试用例数列表和所述测试优先级进行更新。

进一步地,所述软件测试装置还可以包括:

测试参数获取模块,用于获取需要进行测试的各个测试参数;

数据类型确定模块,用于确定各个所述测试参数的数据类型;

可选取值确定模块,用于根据所述数据类型确定各个所述测试参数的可选取值;

取值组合遍历模块,用于对各个所述测试参数的可选取值的组合进行遍历,得到所述测试用例库,其中,所述测试用例库中的每个测试用例均为各个所述测试参数的可选取值的一种组合。

进一步地,所述软件测试装置还可以包括:

当前测试用例选取模块,用于从所述测试用例库中任意选取一个尚未计算过被选取概率的测试用例作为当前测试用例;

环境概率获取模块,用于获取所述当前测试用例中各个所述测试参数的当前取值在预设的生产环境下被选取的概率以及在预设的测试环境下被选取的概率;

被选取概率计算模块,用于根据下式计算所述当前测试用例的被选取概率:

其中,p为所述当前测试用例的被选取概率,ppro_n为第n个测试参数的当前取值在所述生产环境下被选取的概率,ptest_n为第n个测试参数的当前取值在所述测试环境下被选取的概率,kpro和ktest分别为预设的权重,且kpro+ktest=1,1≤n≤n,n为测试参数的总个数;

测试优先级确定模块,用于根据所述测试用例库中的各个测试用例的被选取概率确定各个测试用例的测试优先级,其中,所述测试优先级的高低与所述被选取概率的大小正相关。

进一步地,所述测试更新模块可以包括:

测试通过率计算单元,用于根据所述测试结果计算当前测试通过率;

测试用例数计算单元,用于根据下式计算更新后的测试用例数:

其中,t′为所述更新后的测试用例数,tbase为预设的基准测试用例数,ηcurrent为所述当前测试通过率,ηbase为预设的基准测试通过率;

测试用例数更新单元,用于将在测试用例数列表中与获取的所述测试类型对应的测试用例数替换为所述更新后的测试用例数。

进一步地,所述测试更新模块可以包括:

概率调整单元,用于根据所述测试结果调整各个所述测试参数的可选取值在所述测试环境下被选取的概率;

被选取概率计算单元,用于根据调整后的各个所述测试参数的可选取值在所述测试环境下被选取的概率重新计算所述测试用例库中的各个测试用例的被选取概率;

测试优先级更新单元,用于根据所述测试用例库中的各个测试用例的被选取概率对各个测试用例的测试优先级进行更新。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

图5示出了本发明实施例提供的一种软件测试终端设备的示意框图,为了便于说明,仅示出了与本发明实施例相关的部分。

在本实施例中,所述软件测试终端设备5可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该软件测试终端设备5可包括:处理器50、存储器51以及存储在所述存储器51中并可在所述处理器50上运行的计算机可读指令52,例如执行上述的软件测试方法的计算机可读指令。所述处理器50执行所述计算机可读指令52时实现上述各个软件测试方法实施例中的步骤,例如图1所示的步骤s101至s105。或者,所述处理器50执行所述计算机可读指令52时实现上述各装置实施例中各模块/单元的功能,例如图4所示模块401至405的功能。

示例性的,所述计算机可读指令52可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器51中,并由所述处理器50执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机可读指令段,该指令段用于描述所述计算机可读指令52在所述软件测试终端设备5中的执行过程。

所述处理器50可以是中央处理单元(centralprocessingunit,cpu),还可以是其它通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器51可以是所述软件测试终端设备5的内部存储单元,例如软件测试终端设备5的硬盘或内存。所述存储器51也可以是所述软件测试终端设备5的外部存储设备,例如所述软件测试终端设备5上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器51还可以既包括所述软件测试终端设备5的内部存储单元也包括外部存储设备。所述存储器51用于存储所述计算机可读指令以及所述软件测试终端设备5所需的其它指令和数据。所述存储器51还可以用于暂时地存储已经输出或者将要输出的数据。

在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干计算机可读指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储计算机可读指令的介质。

以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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