一种测试脚本生成方法及装置与流程

文档序号:12595958阅读:130来源:国知局
一种测试脚本生成方法及装置与流程

本发明属于回归性测试技术领域,更具体地说,尤其涉及一种测试脚本生成方法及装置。



背景技术:

在任意一种产品发布前需要对产品的主体功能对应的测试场景进行回归性测试,并且允许回归性测试通过的产品发布,因此回归性测试是整个产品生命周期中取决定性作用的阶段。目前对产品的回归性测试可以通过回归测试自动化工具来实现,其中回归性测试自动化工具对产品进行回归性测试的原理如下:

通过回归性测试自动化工具来自动生成原始测试脚本,在原始测试脚本中修改被测对象元素,以得到针对主体功能对应的测试场景的测试脚本,并对每次得到的测试脚本进行回归性测试以验证测试脚本是否准确,若回归性测试失败则需要再次在原始测试脚本中修改被测对象元素直至得到的测试脚本成功通过回归性测试。

从上述回归性测试自动化工具的原理可知,现有回归性测试自动化工具适用于回归测试频繁且测试场景固定的产品,如果测试场景发生变化,则需要重新生成对应变化后的测试场景的原始测试脚本,并重复修改原始测试脚本直至测试脚本通过回归性测试,因此现有回归性测试自动化工具在测试场景发生变化的情况下,需要花费大量时间来修改测试脚本,降低回归性测试的效率。



技术实现要素:

有鉴于此,本发明的目的在于提供一种测试脚本生成方法及装置,用于提高测试脚本生成速度,进而提高测试效率。具体的,技术方案如下:

本发明提供一种测试脚本生成方法,所述方法包括:

获取测试场景对应的原始测试脚本以及已通过测试的测试脚本;

判断所述原始测试脚本中的每个被测对象元素是否与所获取的测试脚本中对应的被测对象元素相同;

如果所述原始测试脚本中的每个被测对象元素均与所获取的测试脚本中对应的被测对象元素相同,则复用相同的被测对象元素在所获取的测试脚本中的测试程序;

如果所述原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同,则根据所获取的测试脚本中的被测对象元素的测试程序,修改所述原始测试脚本中的被测对象元素的测试程序。

优选地,所述如果所述原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同,则根据所获取的测试脚本中的被测对象元素的测试程序,修改所述原始测试脚本中的被测对象元素的测试程序,包括:

获取第一元素集合,所述第一元素集合中的每个被测对象元素是同时存在于所述原始测试脚本和所获取的测试脚本中的被测对象元素;

判断所述第一元素集合中的所述被测对象元素在所述原始测试脚本中的标识信息是否与在所获取的测试脚本中的标识信息相同;

如果所述第一元素集合中的所述被测对象元素在所述原始测试脚本中的标识信息与在所获取的测试脚本中的标识信息相同,则复用所获取的测试脚本中所述第一元素集合的测试程序;

如果所述第一元素集合中的所述被测对象元素在所述原始测试脚本中的标识信息与在所获取的测试脚本中的标识信息不同,则复用所获取的测试脚本中所述第一元素集合的测试程序,并在所述测试程序中保留所述第一元素集合中的所述被测对象元素的位置信息。

优选地,所述方法还包括:如果所述原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同,则获取第二元素集合,所述第二元素集合中的所述被测对象元素是仅存在于所述原始测试脚本中的被测对象元素;

判断所述第二元素集合中的所述被测对象元素是否存在于被测对象库,所述被测对象库中至少存储有通过测试的各种类型的被测对象元素;

如果所述第二元素集合中的所述被测对象元素存在于被测对象库,则复用所述被测对象库中与所述第二元素集合中的所述被测对象元素的类型相同的被测对象元素的测试程序,并在所述测试程序中保留所述第二元素集合中的所述被测对象元素的位置信息;

如果所述第二元素集合中的所述被测对象元素不存在于被测对象库中,则保留所述第二元素集合中的所述被测对象元素的测试程序。

优选地,所述方法还包括:如果所述第二元素集合中的所述被测对象元素不存在于被测对象库中,则将所述第二元素集合中的所述被测对象元素的测试程序同步到所述被测对象库中。

优选地,所述方法还包括:如果所述原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同,则获取第三元素集合,所述第三元素集合中的所述被测对象元素是仅存在于所获取的测试脚本中的被测对象元素;

判断所述第三元素集合中的所述被测对象元素是否存在于被测对象库,所述被测对象库中至少存储有通过测试的各种类型的被测对象元素;

如果所述第三元素集合中的所述被测对象元素存在于被测对象库,则舍弃所述第三元素集合中的所述被测对象元素的测试程序;

如果所述第三元素集合中的所述被测对象元素不存在于被测对象库中,则将所述第三元素集合中的所述被测对象元素的测试程序同步到所述被测对象库中。

本发明还提供一种测试脚本生成装置,所述装置包括:

第一获取单元,用于获取测试场景对应的原始测试脚本以及已通过测试的测试脚本;

第一判断单元,用于判断所述原始测试脚本中的每个被测对象元素是否与所获取的测试脚本中对应的被测对象元素相同;

第一处理单元,用于当所述原始测试脚本中的每个被测对象元素均与所获取的测试脚本中对应的被测对象元素相同时,复用相同的被测对象元素在所获取的测试脚本中的测试程序;

第二处理单元,用于当所述原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同时,根据所获取的测试脚本中的被测对象元素的测试程序,修改所述原始测试脚本中的被测对象元素的测试程序。

优选地,所述第二处理单元,包括:

获取子单元,用于获取第一元素集合,所述第一元素集合中的每个被测对象元素是同时存在于所述原始测试脚本和所获取的测试脚本中的被测对象元素;

判断子单元,用于判断所述第一元素集合中的所述被测对象元素在所述原始测试脚本中的标识信息是否与在所获取的测试脚本中的标识信息相同;

第一处理子单元,用于当所述第一元素集合中的所述被测对象元素在所述原始测试脚本中的标识信息与在所获取的测试脚本中的标识信息相同时,复用所获取的测试脚本中所述第一元素集合的测试程序;

第二处理子单元,用于当所述第一元素集合中的所述被测对象元素在所述原始测试脚本中的标识信息与在所获取的测试脚本中的标识信息不同时,复用所获取的测试脚本中所述第一元素集合的测试程序,并在所述测试程序中保留所述第一元素集合中的所述被测对象元素的位置信息。

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

第二获取单元,用于当所述原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同时,获取第二元素集合,所述第二元素集合中的所述被测对象元素是仅存在于所述原始测试脚本中的被测对象元素;

第二判断单元,用于判断所述第二元素集合中的所述被测对象元素是否存在于被测对象库,所述被测对象库中至少存储有通过测试的各种类型的被测对象元素;

第三处理单元,用于当所述第二元素集合中的所述被测对象元素存在于被测对象库时,复用所述被测对象库中与所述第二元素集合中的所述被测对象元素的类型相同的被测对象元素的测试程序,并在所述测试程序中保留所述第二元素集合中的所述被测对象元素的位置信息;

第四处理单元,用于当所述第二元素集合中的所述被测对象元素不存在于被测对象库中时,保留所述第二元素集合中的所述被测对象元素的测试程序。

优选地,所述第四处理单元,还用于当所述第二元素集合中的所述被测对象元素不存在于被测对象库中时,将所述第二元素集合中的所述被测对象元素的测试程序同步到所述被测对象库中。

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

第三获取单元,用于当所述原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同时,获取第三元素集合,所述第三元素集合中的所述被测对象元素是仅存在于所获取的测试脚本中的被测对象元素;

第三判断单元,用于判断所述第三元素集合中的所述被测对象元素是否存在于被测对象库,所述被测对象库中至少存储有通过测试的各种类型的被测对象元素;

第五处理单元,用于当所述第三元素集合中的所述被测对象元素存在于被测对象库时,舍弃所述第三元素集合中的所述被测对象元素的测试程序;

第六处理单元,用于当所述第三元素集合中的所述被测对象元素不存在于被测对象库中时,将所述第三元素集合中的所述被测对象元素的测试程序同步到所述被测对象库中。

与现有技术相比,本发明提供的上述技术方案具有如下优点:

藉由上述技术方案,在获取测试场景对应的原始测试脚本以及已通过测试的测试脚本后,如果原始测试脚本中的每个被测对象元素均与所获取的测试脚本中的对应的被测对象元素相同,则复用相同的被测对象元素在所获取的测试脚本中的测试程序,节省修改原始测试脚本中所有被测对象元素的测试程序的环节,从而提高测试脚本生成速度,而所获取的测试脚本是通过测试的脚本,提高测试场景对应的测试脚本测试成功的几率,进而提高测试效率。

如果原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同,则根据所获取的测试脚本中的被测对象元素的测试程序修改原始测试脚本中的被测对象元素的测试程序,而所获取的测试脚本是通过测试的脚本,对应的所获取的测试脚本中的被测对象元素的测试程序也通过测试,这样对于原始测试脚本中与所获取的测试脚本中被测对象元素相同的被测对象元素来说,可以降低其对应测试程序的修改次数,从而提高测试脚本生成速度,提高测试效率。

附图说明

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

图1是本发明实施例提供的测试脚本生成方法的流程图;

图2是本发明实施例提供的变更前的测试场景的示意图;

图3是本发明实施例提供的变更后的测试场景的一种示意图;

图4是本发明实施例提供的变更后的测试场景的另一种示意图;

图5是本发明实施例提供的修改原始测试脚本的流程图;

图6是本发明实施例提供的被测对象库操作的示意图;

图7是本发明实施例提供的测试脚本生成装置的一种结构示意图;

图8是本发明实施例提供的测试脚本生成装置中第二处理单元的结构示意图;

图9是本发明实施例提供的测试脚本生成装置的另一种结构示意图;

图10是本发明实施例提供的测试脚本生成装置的再一种结构示意图。

具体实施方式

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

请参阅图1,其示出了本发明实施例提供的测试脚本生成方法的流程图,用以提高测试脚本生成速度,以提高测试效率。具体的,本发明实施例提供的测试脚本生成方法可以包括以下步骤:

101:获取测试场景对应的原始测试脚本以及已通过测试的测试脚本。其中原始测试脚本是在确定产品的一个测试场景后,通过测试自动化工具自动生成的一个最初的测试脚本,如在对测试场景进行回归性测试时,可以通过回归性测试自动化工具来生成进行回归性测试的原始测试脚本。

而所获取的测试脚本是已通过测试,如已通过回归性测试的脚本,这个测试脚本针对的测试场景可以是任意一个测试场景,当然测试脚本针对的测试场景和原始测试脚本可以是针对产品不同阶段的测试场景,如测试脚本针对的测试场景是产品功能变更前的测试场景,而原始测试脚本针对的测试场景是产品功能变更后的测试场景。

在这里需要说明的一点是:本发明实施例获取的测试脚本的数量是至少一个,当获取两个或两个以上已通过测试的测试脚本时,需要对原始测试脚本与所获取的每个测试脚本进行独立判断,在符合下述步骤的判断结果时对原始测试脚本进行修改。

102:判断原始测试脚本中的每个被测对象元素是否与所获取的测试脚本中对应的被测对象元素相同,如果是,执行步骤103,如果否,执行步骤104。

在本发明实施例中,对原始测试脚本和所获取的测试脚本进行上述步骤102的判断是为了确定是否可以复用所获取的测试脚本中被测对象元素的测试程序,以省去对原始测试脚本的修改,从而直接得到原始测试脚本针对的测试场景对应的测试脚本。

对于如何判断原始测试脚本中的每个被测对象元素是否与所获取的测试脚本中对应的被测对象元素相同则通过附图进行说明,请查阅图2和图3,其中图2是产品功能变更前的测试场景(即所获取的测试脚本对应的测试场景)的示意图,图3是产品功能变更后的测试场景(原始测试脚本对应的测试场景)的示意图。

从图2所示测试场景可知,所获取的测试脚本对应两个控件:控件1和控件2(可视为被测对象元素),每个控件在测试场景中的标识信息根据每个控件的属性信息得到,如标识信息中的一种可行方式是位置序号,位置序号可以根据每个控件的属性信息得到,以为相同的属性信息的控件分配相同的位置序号,这样就可以通过两个脚本中控件的位置序号的比对来判断原始测试脚本中的每个被测对象元素是否相同。例如在图2所示测试场景中控件1的位置序号是1,控件2的位置序号是2。而在图3所示测试场景可知,原始测试脚本也对应两个控件:控件1和控件2,但在图3所示测试场景中控件1的位置序号是2,控件2的位置序号是1,说明图2所示测试场景变更为图3所示测试场景时,测试场景中控件1和控件2的属性信息发生变化,因此对于这种情况可视原始测试脚本中的被测对象元素与所获取的测试脚本中被测对象元素不同。

若控件1在图3所示测试场景中的位置序号也是1,控件2在图3所示测试场景中的位置序号也是2,说明图2所示测试场景变更为图3所示测试场景时,测试场景中控件1和控件2的属性信息未发生变化,此时可视原始测试脚本中被测对象元素与所获取的测试脚本中对应的被测对象元素相同。

综上分析可知,每个测试场景中的被测对象元素都具有自身的属性信息,所述被测对象元素的属性信息至少包括:所属类型、元素大小和位置信息等,当图2所示测试场景中某个被测对象元素的属性信息与图3所示测试场景中对应的被测对象元素的属性信息相同时,则为这两个属性信息相同的被测对象元素设置相同的位置序号,因此本发明实施例中,判断原始测试脚本中的每个被测对象元素是否与所获取的测试脚本中对应的被测对象元素相同的可行方式是:判断原始测试脚本中的每个被测对象元素的位置序号是否与所获取的测试脚本中对应的被测对象元素的位置序号相同,如果是,则判断原始测试脚本中的每个被测对象元素与所获取的测试脚本中对应的被测对象元素相同;如果否,则判断原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同。

其中所谓对应的被测对象元素是原始测试脚本和所获取的测试脚本中的同一个被测对象元素,以上述原始测试脚本中的控件1为例,所获取的测试脚本中对应的被测对象元素也是控件1。

原始测试脚本对应的测试场景还可以是图4所示,在图4所示测试场景可知,原始测试脚本对应三个控件:控件1、控件2和控件3,控件1在测试场景中的位置序号是1,控件2在测试场景中的位置序号是2,控件3在测试场景中的位置序号是3,在这种情况下也可以视为原始测试脚本中被测对象元素与所获取的测试脚本中对应的被测对象元素相同。

103:如果原始测试脚本中的每个被测对象元素均与所获取的测试脚本中对应的被测对象元素相同,则复用相同的被测对象元素在所获取的测试脚本中的测试程序。

如果原始测试脚本中的每个被测对象元素均与所获取的测试脚本中对应的被测对象元素相同,则说明原始测试脚本中每个被测对象元素的测试程序可以直接采用对应的被测对象元素在所获取的测试脚本中的测试程序,此时可以复用相同的被测对象元素在所获取的测试脚本中的测试程序,在本发明实施例中,复用相同的被测对象元素在所获取的测试脚本中的测试程序是指直接将原始测试脚本中每个被测对象元素的测试程序替换为对应的被测对象元素在所获取的测试脚本中的测试程序。

而所获取的测试脚本中每个被测对象元素的测试程序已通过测试,因此原始测试脚本在复用相同的被测对象元素在所获取的测试脚本后,可以直接作为测试场景的测试脚本,从而省去对原始测试脚本的修改,提高测试脚本生成速度,进一步因为所获取的测试脚本是通过测试的脚本,还提高测试场景对应的测试脚本测试成功的几率,进而提高测试效率。

在复用相同的被测对象元素在所获取的测试脚本中的测试程序后,可以将相同的被测对象元素存储到被测对象库中,其中被测对象库中至少存储有通过测试的各种类型的被测对象元素,以被测对象元素是控件为例,被测对象库中存储有输入框控件、按键控件、下拉控件和单选控件等不同类型的控件,且每个控件均已通过测试,对于每个控件来说,被测对象库还存储有每个控件的测试程序,且每个控件的测试程序中的属性信息是每个控件的基本信息,在不同测试场景下控件的属性信息是在基本信息的基础上,增加某些信息或者更改某些信息。

104:如果原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同,则根据所获取的测试脚本中的被测对象元素的测试程序,修改原始测试脚本中的被测对象元素的测试程序。

如果原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同,则说明不可以直接复用被测对象元素在所获取的测试脚本中的测试程序,此时需要根据所获取的测试脚本中的被测对象元素的测试程序,修改原始测试脚本中的被测对象元素的测试程序。

藉由上述技术方案,在获取测试场景对应的原始测试脚本以及已通过测试的测试脚本后,如果原始测试脚本中的每个被测对象元素均与所获取的测试脚本中的对应的被测对象元素相同,则复用相同的被测对象元素在所获取的测试脚本中的测试程序,节省修改原始测试脚本中所有被测对象元素的测试程序的环节,从而提高测试脚本生成速度,而所获取的测试脚本是通过测试的脚本,提高测试场景对应的测试脚本测试成功的几率,进而提高测试效率。

如果原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同,则根据所获取的测试脚本中的被测对象元素的测试程序修改原始测试脚本中的被测对象元素的测试程序,而所获取的测试脚本是通过测试的脚本,对应的所获取的测试脚本中的被测对象元素的测试程序也通过测试,这样对于原始测试脚本中与所获取的测试脚本中被测对象元素相同的被测对象元素来说,可以降低其对应测试程序的修改次数,从而提高测试脚本生成速度,提高测试效率。

而在本发明实施例中,当原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同时,对原始测试脚本中被测对象元素的测试程序的修改可以参阅图5所示,具体的,可以包括以下步骤:

501:如果原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同,获取第一元素集合,其中第一元素集合中的每个被测对象元素是同时存在于所述原始测试脚本和所获取的测试脚本中的被测对象元素。

在本发明实施例中,确定被测对象元素是否同时存在于原始测试脚本和所获取的测试脚本中的可行方式是:判断原始测试脚本中的被测对象元素的类型是否与所获取的测试脚本中被测对象元素的类型相同,如果是,则说明被测对象元素同时存在于原始测试脚本和所获取的测试脚本中,如果否,则说明被测对象元素仅存在于原始测试脚本中。

502:判断第一元素集合中的被测对象元素在原始测试脚本中的标识信息是否与在所获取的测试脚本中的标识信息相同,如果是,执行步骤503,如果否,执行步骤504。

在本发明实施例中,被测对象元素在脚本中的标识信息的一种可行方式是:被测对象元素在脚本中的位置序号,如上述图2至图4所示,具有相同属性信息的被测对象元素具有相同的标识信息,这样在判断被测对象元素是否相同时,就可以直接采用标识信息来比对确定,进而减少比对参数,提高效率。

503:如果第一元素集合中的被测对象元素在原始测试脚本中的标识信息与在所获取的测试脚本中的标识信息相同,则复用所获取的测试脚本中第一元素集合的测试程序。

如果第一元素集合中的被测对象元素在原始测试脚本中的标识信息与在所获取的测试脚本中的标识信息相同,说明第一元素集合中的每个被测对象元素在原始脚本中的属性信息与所获取的测试脚本中对应的被测对象元素的属性信息相同,因此可以复用所获取的测试脚本中第一元素集合的测试程序。

其中复用所获取的测试脚本中第一元素集合的测试程序的可行方式是:直接将原始测试脚本中位于第一元素集合中的被测对象元素的测试程序替换为所获取的测试脚本中对应的被测对象元素的测试程序,而所获取的测试脚本中对应的被测对象元素的测试程序已通过测试,因此在得到原始测试脚本针对的测试场景的测试脚本后,可以省去对第一元素集合中每个被测对象元素的测试程序的调试。

504:如果第一元素集合中的被测对象元素在原始测试脚本中的标识信息与在所获取的测试脚本中的标识信息不同,则复用所获取的测试脚本中第一元素集合的测试程序,并在测试程序中保留第一元素集合中的被测对象元素的位置信息。

如果第一元素集合中的被测对象元素在原始测试脚本中的标识信息与在所获取的测试脚本中的标识信息不同,说明第一元素集合中的每个被测对象元素在原始脚本中的属性信息与所获取的测试脚本中对应的被测对象元素的属性信息不同,此时在复用所获取的测试脚本中第一元素集合的测试程序后,需要在测试程序中保留第一元素集合中的被测对象元素的位置信息,以使得最终得到的测试脚本中第一元素集合中每个被测对象元素符合测试场景的要求。

其中复用所获取的测试脚本中第一元素集合的测试程序,并在测试程序中保留第一元素集合中的被测对象元素的位置信息的可行方式是:将所获取的测试脚本中被测对象元素的属性信息替换为第一元素集合中对应的被测对象元素的属性信息,并将替换属性信息后的被测对象元素的测试程序作为第一元素集合中对应的被测对象元素的测试程序。

而所获取的测试脚本中对应的被测对象元素的测试程序已通过测试,使得替换属性信息后的测试程序仍可以成功通过测试,因此在得到原始测试脚本针对的测试场景的测试脚本后,可以省去对第一元素集合中每个被测对象元素的测试程序的调试。

505:获取第二元素集合,第二元素集合中的被测对象元素是仅存在于原始测试脚本中的被测对象元素,如上述图4所示测试场景中的控件3来说,其可视为第二元素集合中的被测对象元素。

506:判断第二元素集合中的被测对象元素是否存在于被测对象库,如果是,执行步骤507,如果否,执行步骤508。

在本发明实施例中,判断第二元素集合中的被测对象元素是否存在于被测对象库的可行方式是:判断被测对象库中是否存在于第二元素集合中的被测对象元素的类型相同的被测对象元素,如果是,则说明第二元素集合中的被测对象元素存在于被测对象库中,如果否,则说明第二元素集合中的被测对象元素不存在于被测对象库中。

507:如果第二元素集合中的被测对象元素存在于被测对象库,则复用被测对象库中与第二元素集合中的被测对象元素的类型相同的被测对象元素的测试程序,并在测试程序中保留第二元素集合中的被测对象元素的位置信息。

如果第二元素集合中的被测对象元素存在于被测对象库,说明被测对象库中类型相同的被测对象元素的测试可以被第二元素集合中的被测对象元素使用,此时可以复用被测对象库中与第二元素集合中的被测对象元素的类型相同的被测对象元素的测试程序,并在测试程序中保留第二元素集合中的被测对象元素的位置信息。而之所以要在测试程序中保留第二元素集合中的被测对象元素的位置信息是为了防止两者的位置信息不同,以使得最终得到的测试脚本中第二元素集合中每个被测对象元素符合测试场景的要求。

其中复用被测对象库中与第二元素集合中的被测对象元素的类型相同的被测对象元素的测试程序,并在测试程序中保留第二元素集合中的被测对象元素的位置信息的可行方式是:将被测对象库中与第二元素集合中被测对象元素的类型相同的被测对象元素的属性信息替换为第二元素集合中对应的被测对象元素的属性信息,并将替换属性信息后的测试程序作为第二元素集合中对应的被测对象元素的测试程序。

因为被测对象库中被测对象元素的测试程序已通过测试,使得替换属性信息后的测试程序仍可以成功通过测试,因此在得到原始测试脚本针对的测试场景的测试脚本后,可以省去对第二元素集合中每个被测对象元素的测试程序的调试。

508:如果第二元素集合中的被测对象元素不存在于被测对象库中,则保留第二元素集合中的被测对象元素的测试程序。

经过上述步骤501至步骤508,完成对原始测试脚本中被测对象元素的修改,得到原始测试脚本针对的测试场景对应的测试脚本,并且在对测试脚本进行调试时,可以仅调试保留原始测试脚本中的测试程序,对于其他已通过测试的测试程序无需再次调试,从而提高调试效率。

可选的,如果第二元素集合中的被测对象元素不存在于被测对象库中,则将第二元素集合中的被测对象元素的测试程序同步到被测对象库中。

在这里需要说明的一点是:同步到被测对象库中的第二元素集合中的被测对象元素的测试程序是通过测试的程序,这样其他原始测试脚本可以复用通过测试的程序,如图6所示。

被测对象库中存储有多种类型的被测对象元素,每种被测对象元素对应的测试程序均已通过测试,这样得到原始测试脚本后可以从被测对象库中自动抽取与被测对象元素的类型相同的被测对象元素的测试程序,省去了再次修改调试类型相同的被测对象元素的测试程序的时间,大大缩短了维护测试脚本的工作量,而在确定被测对象库中被测对象元素的属性信息发生变化或者在确定被测对象库中不存在某个被测对象元素后,也可以对被测对象库进行更新,以完善被测对象库中存储的信息。

509:获取第三元素集合,其中第三元素集合中的被测对象元素是仅存在于所获取的测试脚本中的被测对象元素。

在本发明实施例中,确定被测对象元素是否仅存在于所获取的测试脚本中的可行方式是:判断所获取的测试脚本中的被测对象元素的类型是否与原始测试脚本中被测对象元素的类型相同,如果是,则说明被测对象元素同时存在于原始测试脚本和所获取的测试脚本中,如果否,则说明被测对象元素仅存在于所获取的测试脚本中。

510:判断第三元素集合中的被测对象元素是否存在于被测对象库,如果是,执行步骤511,如果否,执行步骤512。

511:如果第三元素集合中的被测对象元素存在于被测对象库,则舍弃第三元素集合中的被测对象元素的测试程序。

512:如果第三元素集合中的被测对象元素不存在于被测对象库中,则将第三元素集合中的被测对象元素的测试程序同步到被测对象库中,以将第三元素集合中的每个被测对象元素同步到被测对象库中,实现对被测对象库的完善。

在这里需要说明的一点是:对于第一元素集合、第二元素集合和第三元素集合来说,可以并行执行这三个集合中每个被测对象元素的处理过程,并在完成对原始测试脚本中被测对象元素的修改,得到原始测试脚本针对的测试场景对应的测试脚本后,可以仅调试保留原始测试脚本中的测试程序,对于其他已通过测试的测试程序无需再次调试,从而提高调试效率。

对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

请参阅图7,其示出了本发明实施例提供的测试脚本生成装置的一种结构,用以提高测试脚本生成速度,以提高测试效率。具体的,本发明实施例提供的测试脚本生成装置可以包括:第一获取单元11、第一判断单元12、第一处理单元13和第二处理单元14。

第一获取单元11,用于获取测试场景对应的原始测试脚本以及已通过测试的测试脚本。其中原始测试脚本是在确定产品的一个测试场景后,通过测试自动化工具自动生成的一个最初的测试脚本,如在对测试场景进行回归性测试时,可以通过回归性测试自动化工具来生成进行回归性测试的原始测试脚本。

而所获取的测试脚本是已通过测试,如已通过回归性测试的脚本,这个测试脚本针对的测试场景可以是任意一个测试场景,当然测试脚本针对的测试场景和原始测试脚本可以是针对产品不同阶段的测试场景,如测试脚本针对的测试场景是产品功能变更前的测试场景,而原始测试脚本针对的测试场景是产品功能变更后的测试场景。

第一判断单元12,用于判断原始测试脚本中的每个被测对象元素是否与所获取的测试脚本中对应的被测对象元素相同,以确定是否可以复用所获取的测试脚本中被测对象元素的测试程序,省去对原始测试脚本的修改,从而直接得到原始测试脚本针对的测试场景对应的测试脚本,具体判断方式请参阅方法实施例部分的相关说明,对此不再详述。

第一处理单元13,用于当原始测试脚本中的每个被测对象元素均与所获取的测试脚本中对应的被测对象元素相同时,复用相同的被测对象元素在所获取的测试脚本中的测试程序。

如果原始测试脚本中的每个被测对象元素均与所获取的测试脚本中对应的被测对象元素相同,则说明原始测试脚本中每个被测对象元素的测试程序可以直接采用对应的被测对象元素在所获取的测试脚本中的测试程序,此时第一处理单元13可以复用相同的被测对象元素在所获取的测试脚本中的测试程序。

在本发明实施例中,复用相同的被测对象元素在所获取的测试脚本中的测试程序是指直接将原始测试脚本中每个被测对象元素的测试程序替换为对应的被测对象元素在所获取的测试脚本中的测试程序。

在复用相同的被测对象元素在所获取的测试脚本中的测试程序后,第一处理单元13可以将相同的被测对象元素存储到被测对象库中,其中被测对象库中至少存储有通过测试的各种类型的被测对象元素,以被测对象元素是控件为例,被测对象库中存储有输入框控件、按键控件、下拉控件和单选控件等不同类型的控件,且每个控件均已通过测试,对于每个控件来说,被测对象库还存储有每个控件的测试程序,且每个控件的测试程序中的属性信息是每个控件的基本信息,在不同测试场景下控件的属性信息是在基本信息的基础上,增加某些信息或者更改某些信息。

第二处理单元14,用于当原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同时,根据所获取的测试脚本中的被测对象元素的测试程序,修改原始测试脚本中的被测对象元素的测试程序。

如果原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同,则说明不可以直接复用被测对象元素在所获取的测试脚本中的测试程序,此时第二处理单元14需要根据所获取的测试脚本中的被测对象元素的测试程序,修改原始测试脚本中的被测对象元素的测试程序。

可选的,第二处理单元14的结构如图8所示,可以包括:获取子单元141、判断子单元142、第一处理子单元143和第二处理子单元144。

获取子单元141,用于获取第一元素集合,第一元素集合中的每个被测对象元素是同时存在于原始测试脚本和所获取的测试脚本中的被测对象元素。

在本发明实施例中,确定被测对象元素是否同时存在于原始测试脚本和所获取的测试脚本中的可行方式是:判断原始测试脚本中的被测对象元素的类型是否与所获取的测试脚本中被测对象元素的类型相同,如果是,则说明被测对象元素同时存在于原始测试脚本和所获取的测试脚本中,如果否,则说明被测对象元素仅存在于原始测试脚本中。

判断子单元142,用于判断第一元素集合中的被测对象元素在原始测试脚本中的标识信息是否与在所获取的测试脚本中的标识信息相同。

在本发明实施例中,被测对象元素在脚本中的标识信息的一种可行方式是:被测对象元素在脚本中的位置序号,且具有相同属性信息的被测对象元素具有相同的标识信息,这样在判断被测对象元素是否相同时,就可以直接采用标识信息来比对确定,进而减少比对参数,提高效率。

第一处理子单元143,用于当第一元素集合中的被测对象元素在原始测试脚本中的标识信息与在所获取的测试脚本中的标识信息相同时,复用所获取的测试脚本中第一元素集合的测试程序。

如果第一元素集合中的被测对象元素在原始测试脚本中的标识信息与在所获取的测试脚本中的标识信息相同,说明第一元素集合中的每个被测对象元素在原始脚本中的属性信息与所获取的测试脚本中对应的被测对象元素的属性信息相同,因此第一处理子单元143可以复用所获取的测试脚本中第一元素集合的测试程序。

其中复用所获取的测试脚本中第一元素集合的测试程序的可行方式是:直接将原始测试脚本中位于第一元素集合中的被测对象元素的测试程序替换为所获取的测试脚本中对应的被测对象元素的测试程序,而所获取的测试脚本中对应的被测对象元素的测试程序已通过测试,因此在得到原始测试脚本针对的测试场景的测试脚本后,可以省去对第一元素集合中每个被测对象元素的测试程序的调试。

第二处理子单元144,用于当第一元素集合中的被测对象元素在原始测试脚本中的标识信息与在所获取的测试脚本中的标识信息不同时,复用所获取的测试脚本中第一元素集合的测试程序,并在测试程序中保留第一元素集合中的被测对象元素的位置信息。

如果第一元素集合中的被测对象元素在原始测试脚本中的标识信息与在所获取的测试脚本中的标识信息不同,说明第一元素集合中的每个被测对象元素在原始脚本中的属性信息与所获取的测试脚本中对应的被测对象元素的属性信息不同,此时第二处理子单元144在复用所获取的测试脚本中第一元素集合的测试程序后,需要在测试程序中保留第一元素集合中的被测对象元素的位置信息,以使得最终得到的测试脚本中第一元素集合中每个被测对象元素符合测试场景的要求。

其中复用所获取的测试脚本中第一元素集合的测试程序,并在测试程序中保留第一元素集合中的被测对象元素的位置信息的可行方式是:将所获取的测试脚本中被测对象元素的属性信息替换为第一元素集合中对应的被测对象元素的属性信息,并将替换属性信息后的被测对象元素的测试程序作为第一元素集合中对应的被测对象元素的测试程序。

藉由上述技术方案,在获取测试场景对应的原始测试脚本以及已通过测试的测试脚本后,如果原始测试脚本中的每个被测对象元素均与所获取的测试脚本中的对应的被测对象元素相同,则复用相同的被测对象元素在所获取的测试脚本中的测试程序,节省修改原始测试脚本中所有被测对象元素的测试程序的环节,从而提高测试脚本生成速度,而所获取的测试脚本是通过测试的脚本,提高测试场景对应的测试脚本测试成功的几率,进而提高测试效率。

如果原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同,则根据所获取的测试脚本中的被测对象元素的测试程序修改原始测试脚本中的被测对象元素的测试程序,而所获取的测试脚本是通过测试的脚本,对应的所获取的测试脚本中的被测对象元素的测试程序也通过测试,这样对于原始测试脚本中与所获取的测试脚本中被测对象元素相同的被测对象元素来说,可以降低其对应测试程序的修改次数,从而提高测试脚本生成速度,提高测试效率。

请参阅图9,其示出了本发明实施例提供的测试脚本生成装置的另一种结构,测试脚本生成装置还可以包括:第二获取单元15、第二判断单元16、第三处理单元17和第四处理单元18。

第二获取单元15,用于当原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同时,获取第二元素集合,第二元素集合中的被测对象元素是仅存在于原始测试脚本中的被测对象元素。

第二判断单元16,用于判断第二元素集合中的被测对象元素是否存在于被测对象库,被测对象库中至少存储有通过测试的各种类型的被测对象元素。

在本发明实施例中,判断第二元素集合中的被测对象元素是否存在于被测对象库的可行方式是:判断被测对象库中是否存在于第二元素集合中的被测对象元素的类型相同的被测对象元素,如果是,则说明第二元素集合中的被测对象元素存在于被测对象库中,如果否,则说明第二元素集合中的被测对象元素不存在于被测对象库中。

第三处理单元17,用于当第二元素集合中的被测对象元素存在于被测对象库时,复用被测对象库中与第二元素集合中的被测对象元素的类型相同的被测对象元素的测试程序,并在测试程序中保留第二元素集合中的被测对象元素的位置信息。

如果第二元素集合中的被测对象元素存在于被测对象库,说明被测对象库中类型相同的被测对象元素的测试可以被第二元素集合中的被测对象元素使用,此时第三处理单元17可以复用被测对象库中与第二元素集合中的被测对象元素的类型相同的被测对象元素的测试程序,并在测试程序中保留第二元素集合中的被测对象元素的位置信息。

其中复用被测对象库中与第二元素集合中的被测对象元素的类型相同的被测对象元素的测试程序,并在测试程序中保留第二元素集合中的被测对象元素的位置信息的可行方式是:将被测对象库中与第二元素集合中被测对象元素的类型相同的被测对象元素的属性信息替换为第二元素集合中对应的被测对象元素的属性信息,并将替换属性信息后的测试程序作为第二元素集合中对应的被测对象元素的测试程序。

第四处理单元18,用于当第二元素集合中的被测对象元素不存在于被测对象库中时,保留第二元素集合中的被测对象元素的测试程序。

经过本发明实施例中的第二处理单元14、第二获取单元15、第二判断单元16、第三处理单元17和第四处理单元18,完成对原始测试脚本中被测对象元素的修改,得到原始测试脚本针对的测试场景对应的测试脚本,并且在对测试脚本进行调试时,可以仅调试保留原始测试脚本中的测试程序,对于其他已通过测试的测试程序无需再次调试,从而提高调试效率。

可选的,第四处理单元18,还用于当第二元素集合中的被测对象元素不存在于被测对象库中时,将第二元素集合中的被测对象元素的测试程序同步到被测对象库中。在这里需要说明的一点是:同步到被测对象库中的第二元素集合中的被测对象元素的测试程序是通过测试的程序,这样其他原始测试脚本可以复用通过测试的程序。

请参阅图10,其示出了本发明实施例提供的测试脚本生成装置的再一种结果,所述测试脚本生成装置还可以包括:第三获取单元19、第三判断单元20、第五处理单元21和第六处理单元22。

第三获取单元19,用于当原始测试脚本中的至少一个被测对象元素与所获取的测试脚本中的被测对象元素不同时,获取第三元素集合,第三元素集合中的被测对象元素是仅存在于所获取的测试脚本中的被测对象元素。

在本发明实施例中,确定被测对象元素是否仅存在于所获取的测试脚本中的可行方式是:判断所获取的测试脚本中的被测对象元素的类型是否与原始测试脚本中被测对象元素的类型相同,如果是,则说明被测对象元素同时存在于原始测试脚本和所获取的测试脚本中,如果否,则说明被测对象元素仅存在于所获取的测试脚本中。

第三判断单元20,用于判断第三元素集合中的被测对象元素是否存在于被测对象库,被测对象库中至少存储有通过测试的各种类型的被测对象元素。

第五处理单元21,用于当第三元素集合中的被测对象元素存在于被测对象库时,舍弃第三元素集合中的被测对象元素的测试程序。

第六处理单元22,用于当第三元素集合中的被测对象元素不存在于被测对象库中时,将第三元素集合中的被测对象元素的测试程序同步到被测对象库中,以将第三元素集合中的每个被测对象元素同步到被测对象库中,实现对被测对象库的完善。

在这里需要说明的一点是:对于第一元素集合、第二元素集合和第三元素集合来说,可以并行执行这三个集合中每个被测对象元素的处理过程,并在完成对原始测试脚本中被测对象元素的修改,得到原始测试脚本针对的测试场景对应的测试脚本后,可以仅调试保留原始测试脚本中的测试程序,对于其他已通过测试的测试程序无需再次调试,从而提高调试效率。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相相同的最宽的范围。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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