发明内容
有鉴于此,本公开至少提供一种测试用例生成方法及装置。
第一方面,本公开提供了一种测试用例生成方法,包括:
确定从第一页面状态切换至第二页面状态的过程中,客户端所需响应的多个顺序关联的动作,和所述客户端执行每个所述动作之后,所述客户端所处于的中间页面状态;
针对所述多个动作中的每个动作,建立该动作与其顺序关联的前一个动作之间的映射关系,作为第一映射关系;其中,所述第一映射关系用于在针对所述客户端进行测试路径回放时提供动作与其顺序前向相关的历史动作;
建立所述动作与执行完该动作之后所述客户端所处于的中间页面状态之间的第二映射关系;
基于所述第一页面状态、所述第二页面状态、多个所述动作、多个所述中间页面状态、所述第一映射关系和所述第二映射关系,建立与所述第一页面状态和所述第二页面状态对应的测试用例。
在一种可能的实施方式中,所述方法还包括:
获取与所述测试用例相关的每个动作各自对应的动作配置信息,所述动作配置信息携带动作所操控的控件对应的控件属性信息;
基于所述动作配置信息对所述测试用例进行测试路径回放。
在一种可能的实施方式中,所述控件属性信息包括全路径信息和相对路径信息;
所述基于所述动作配置信息对所述测试用例进行测试路径回放,包括:优先基于所述控件属性信息中的全路径信息为所述测试用例中的动作进行控件匹配,当全路径信息匹配失败时,基于所述控件属性信息中的相对路径信息进行控件匹配;
基于匹配的目标控件针对所述客户端执行所述测试用例中的动作。
在一种可能的实施方式中,所述方法还包括:
若基于所述控件属性信息进行控件匹配失败时,基于动作所操控的控件对应的父控件属性信息进行控件匹配。
第二方面,本公开提供了一种测试用例生成装置,包括:
状态动作确定模块,用于确定从第一页面状态切换至第二页面状态的过程中,客户端所需响应的多个顺序关联的动作,和所述客户端执行每个所述动作之后,所述客户端所处于的中间页面状态;
关系处理模块,用于针对所述多个动作中的每个动作,建立该动作与其顺序关联的前一个动作之间的映射关系,作为第一映射关系;其中,所述第一映射关系用于在针对所述客户端进行测试路径回放时提供动作与其顺序前向相关的历史动作;以及建立所述动作与执行完该动作之后所述客户端所处于的中间页面状态之间的第二映射关系;
用例建立模块,用于基于所述第一页面状态、所述第二页面状态、多个所述动作、多个所述中间页面状态、所述第一映射关系和所述第二映射关系,建立与所述第一页面状态和所述第二页面状态对应的测试用例。
在一种可能的实施方式中,上述装置还包括路径回放模块,用于:
获取与所述测试用例相关的每个动作各自对应的动作配置信息,所述动作配置信息携带动作所操控的控件对应的控件属性信息;
基于所述动作配置信息对所述测试用例进行测试路径回放。
在一种可能的实施方式中,所述控件属性信息包括全路径信息和相对路径信息;
所述路径回放模块在基于所述动作配置信息对所述测试用例进行测试路径回放时,用于:优先基于所述控件属性信息中的全路径信息为所述测试用例中的动作进行控件匹配,当全路径信息匹配失败时,基于所述控件属性信息中的相对路径信息进行控件匹配;
基于匹配的目标控件针对所述客户端执行所述测试用例中的动作。
在一种可能的实施方式中,所述路径回放模块用于:
若基于所述控件属性信息进行控件匹配失败时,基于动作所操控的控件对应的父控件属性信息进行控件匹配。
第三方面,本公开提供了一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如上述测试用例生成方法的步骤。
第四方面,本公开还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述测试用例生成方法的步骤。
本公开上述装置、电子设备、和计算机可读存储介质,至少包含与本公开上述方法的任一方面或任一方面的任一实施方式的技术特征实质相同或相似的技术特征。
本公开提供的测试用例生成方法及装置,其中,首先确定从第一页面状态切换至第二页面状态的过程中,客户端所需响应的多个顺序关联的动作,和客户端执行每个所述动作之后,客户端所处于的中间页面状态;之后,建立每个动作与其顺序关联的前一个动作之间的第一映射关系,以及建立每个动作与执行完该动作之后客户端所处于的中间页面状态之间的第二映射关系;最后,基于第一页面状态、第二页面状态、多个动作、多个中间页面状态、第一映射关系和第二映射关系,建立与第一页面状态和第二页面状态对应的测试用例。本公开利用上述映射关系能够确定每个动作的前一个动作和执行每个动作后的页面状态,基于上述映射关系在执行返回操作的时候,能够执行正确的返回动作,以及返回到正确的页面状态,从而提高了测试路径回放的成功率。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,应当理解,本公开中附图仅起到说明和描述的目的,并不用于限定本公开的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本公开中使用的流程图示出了根据本公开的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本公开内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明的是,本公开实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
为了为客户端生成尽可能多的相关输入,即生成尽可能多的测试用例,一般采用自动测试生成技术中基于模型的测试生成方法(model based testing),通过生成用户界面事件来生成尽可能多的测试用例。具体地,客户端上每个页面可以作为一个状态state,页面与页面之间由多个动作action连接。在测试的过程中,可以看做是一个有向图的模型,如图1所示,基于该模型,可以记录不同页面状态之间的一串连续的动作序列,利用该动作序列能够回放用户的操作场景,以实现对客户端的功能测试。
上述有向图模型中还记录有每个动作action的属性信息以及每个页面状态station的属性信息,如图1中,记录有动作的输入类型Type等,页面状态的图形用户界面信息GUI等。
上述自动测试生成技术生成的测试用例,由于相邻动作的关联性差存在回放成功率低的缺陷。针对该缺陷,本公开提供了一种测试用例生成方法及装置,该方法或装置利用动作与执行该动作之前执行的动作之间的第一映射关系以及动作与执行该动作之后客户端所处于的页面状态之间的第二映射关系,能够确定每个动作的前一个动作和执行每个动作后的页面状态,基于上述映射关系在执行返回操作的时候,能够执行正确的返回动作,以及返回到正确的页面状态,从而提高了测试路径回放的成功率。
下面通过具体的实施例对本公开提高了的测试用例生成方法及装置进行详细说明。
本公开实施例提供了一种测试用例生成方法,该方法应用于对客户端进行功能测试的终端设备上,或应用于生成测试用例的终端设备上。具体地,如图2所示,上述测试用例生成方法可以包括如下步骤:
S210、确定从第一页面状态切换至第二页面状态的过程中,客户端所需响应的多个顺序关联的动作,和所述客户端执行每个所述动作之后,所述客户端所处于的中间页面状态。
上述,第一页面状态可以是所要测试功能的初始的页面状态,第二页面状态可以是所要测试功能的终止的页面状态,例如,测试客户端的登录功能,第一页面状态为客户端开始登录时对应的页面状态,第二页面状态为客户端登录成功时对应的页面状态。
本实施例的目的是生成第一页面状态到第二页面状态之间的测试用例,即确定第一页面状态到第二页面状态之间的一系列动作以及执行每个动作之后客户端所处于的页面状态。在生成该测试用例之后,在客户端上进行测试路径回放,即在客户端上执行该测试用例,来检测或展示上需要检测的功能,例如检测上述登录功能。
这里,多个顺序关联的动作是从所述第一页面状态运行到第二页面状态的一个有序的动作序列,在具体实施时,可以利用广度优先搜索或深度优先搜索来确定上述动作序列。例如,如图3所示,利用广度优先搜索或深度优先搜索来确定的从第一页面状态g19s14运行到第二页面状态g14s9之间需要执行两个动作g19a377和g19a398,并且经历一个中间页面状态g19s15。
上述确定的每个动作都包含actionType、bounds、target、full等属性,其中actionType指示动作的操作类型,bounds指在页面上执行动作的位置,由于不同客户端屏幕的尺寸存在差异,该属性在回放时不采用,target属性是指动作要操作的控件在页面上的相对路径信息,full指动作要操作的控件在页面上的全路径信息。
S220、针对所述多个动作中的每个动作,建立该动作与其顺序关联的前一个动作之间的映射关系,作为第一映射关系;其中,所述第一映射关系用于在针对所述客户端进行测试路径回放时提供动作与其顺序前向相关的历史动作。
S230、建立所述动作与执行完该动作之后所述客户端所处于的中间页面状态之间的第二映射关系。
客户端在执行每个动作之后,页面状态都会随之改变,因此,本步骤建立了动作与执行完该动作之后客户端所处于的中间页面状态之间的第二映射关系,基于上述第一映射关系和第二映射关系能够建立更加完整的测试用例。
S240、基于所述第一页面状态、所述第二页面状态、多个所述动作、多个所述中间页面状态、所述第一映射关系和所述第二映射关系,建立与所述第一页面状态和所述第二页面状态对应的测试用例。
上述将动作与其顺序关联的前一个动作之间的第一映射关系以及动作与执行完该动作之后所述客户端所处于的中间页面状态之间的第二映射关系,因此在该动作执行之后,进行返回操作的时候,就能够准确找到前一个动作以及客户端所要呈现的页面状态,从而提高了测试路径回放的准确率或成功率。
例如,如图4A所示,利用广度优先搜索或深度优先搜索来确定的从第一页面状态g0s1运行到第二页面状态g0s20之间需要执行两个动作,动作1和动作2,并且经历一个中间页面状态g0s5。以计算器对应的客户端应用程序为例,图4B对应第一页面状态g0s1,具体可以是计算页面;图4C对应中间页面状态g0s5,具体可以是设置页面;图4D对应第二页面状态g0s20,具体可以是税贷页面。
从图4A中可以确定,从第一页面状态g0s1执行动作动作1可以运行到中间页面状态g0s5,之后,从中间页面状态g0s5执行动作动作2可以运行到第二页面状态g0s20。但是实际中或理想情况下,操作图4B中的设置按钮41可以到达图4C对应的中间页面状态g0s5,但此时操作图4C中的返回按钮42,不应该到达图4D对应的第二页面状态g0s20,而应该返回图4B对应的第一页面状态g0s1。可见,只利用各个动作建立的测试用例在客户端进行测试路径回放时会出现失败或错误,因此,此步骤建立了动作与其顺序关联的前一个动作之间的映射关系以及动作与执行完该动作客户端所处于的页面状态的映射关系,以保证执行返回操作的时候,能够准确的找到该动作的前一个动作,以及客户端所要呈现的正确的页面状态,从而提高了测试路径回放的成功率。
下面再通过一个实施例对本公开中的测试用例生成方法进行说明。如图5所示,该方法可以包括如下步骤:
步骤一、确定客户端的第一页面状态state-begin和第二页面状态state-end;
步骤二、确定从第一页面状态state-begin运行到第二页面状态state-end,需要执行的动作序列;
步骤三、确定动作序列中第一个动作edge-i作执行完成后,客户端的页面状态state-t;
步骤四、将第一个动作edge-i加入到测试用例中;
步骤五、判断页面状态state-t是否与第二页面状态state-end相同;
步骤六、若页面状态state-t与第二页面状态state-end相同,则基于第一页面状态state-begin、第二页面状态state-end、第一个动作edge-i生成并输出测试用例s;
步骤七、若页面状态state-t与第二页面状态state-end不相同,则从与state-t连接的所有第二个动作edge-j中,筛选设置有上述第一映射关系的第二个动作edge-j,以及确定筛选得到的第二个动作edge-j执行后,客户端的页面状态state,构建第二映射关系;
步骤八、将筛选得到的第二个动作edge-j、对应的第一映射关系以及构建的第二映射关系加入到测试用例中,并返回步骤六,判断页面状态state与第二页面状态state-end是否相同,直到生成并输出测试用例s。
上述实施例,同样利用动作与其顺序关联的前一个动作之间的第一映射关系以及动作与执行完该动作之后所述客户端所处于的中间页面状态之间的第二映射关系,在返回操作的时候,就能够准确找到前一个动作以及客户端所要呈现的页面状态,从而提高了测试路径回放的准确率或成功率。
上述测试用例生成方法在生成测试用例之后,基于生成的测试用例在客户端进行测试路径回放时,需要定位执行动作的控件,再进行测试路径回放。在具体实施时,如图6所示,可以利用如下步骤进行测试路径回放:
S610、获取与所述测试用例相关的每个动作各自对应的动作配置信息,所述动作配置信息携带动作所操控的控件对应的控件属性信息。
这里的动作配置信息可以包括actionType、bounds、target、full等信息。
S620、基于所述动作配置信息对所述测试用例进行测试路径回放。
在具体实施时,可以利用如下子步骤进行测试路径回放:
优先基于所述控件属性信息中的全路径信息full为所述测试用例中的动作进行控件匹配,当全路径信息匹配失败时,基于所述控件属性信息中的相对路径信息target进行控件匹配;基于匹配的目标控件针对所述客户端执行所述测试用例中的动作。
上述在进行控件匹配时,是从客户端的当前页面的所有控件中,利用控件属性信息进行控件的筛选,得到执行每个动作的目标控件。
另外,在进行控件匹配的时候,还可以利用全路径信息full进行全路径匹配,同时利用相对路径信息target进行相对路径匹配。只要其中一个匹配成功就能定位执行动作的目标控件。
上述,全路径匹配是指当客户端当前页面上控件的全路径信息与测试路径回放过程要执行的动作action中控件的全路径信息相同。这里的全路径信息是指控件相对当前页面的一个路径,理想情况下测试路径回放过程中执行每个action的控件都应该全路径匹配成功,但是实际情况下终端设备型号不同会导致全路径匹配不成功,为了避免这种情况,本公开添加相对路径匹配,该相对路径是指控件相对于其父控件的路径,相对路径匹配是指当客户端上当前页面上的控件的相对路径信息与测试路径回放过程要执行的动作action中控件的相对路径信息相同。这样在测试路径回放过程中如果控件的全路径匹配不成功,但是相对路径匹配成功,则同样能够执行利用该控件执行对应的action,大大的提高了测试路径回放的准确性和成功率。
在生成测试用例的时候,不仅基于上述第一页面状态、第二页面状态、多个动作、第一映射关系、第二映射关系、中间页面状态,还可以结合每个所述动作对应的动作配置信息,建立更加完整的,与第一页面状态和第二页面状态对应的测试用例。
在客户端进行测试路径回放时,如果客户端当前所处的页面状态state中有些控件的属性均相同,例如,图7A和7B中,控件71和控件72的class、text、resource_id、package等属性均相同,定位执行动作的目标控件时,如果定位到控件,会出现定位错误,导致回放失败。此时,可以基于动作所操控的控件对应的父控件的控件属性信息进行控件匹配。一般情况下,同一个父控件下的各个子控件的控件属性信息不会相同,控件属性信息相同的每个子控件的父控件的控件属性信息不会相同,因此,这里在定位到多个控件属性信息相同的控件时,可以基于其父控件的控件属性信息定位执行动作的目标控件。上述父控件的控件属性信息还可以包括父控件的身份标识符,即可以利用父控件的身份标识符定位到目标控件的父控件,再利用目标控件的控件属性信息,从该父控件的子控件中查找该目标控件。
对应于上述测试用例生成方法,本公开实施例还提供了一种测试用例生成装置,该装置应用于对客户端进行功能测试的终端设备上,或应用于生成测试用例的终端设备上,并且该装置及其各个模块能够执行与上述测试用例生成方法相同的方法步骤,并且能够达到相同或相似的有益效果,因此对于重复的部分不再赘述。
如图8所示,本公开提供的测试用例生成装置包括:
状态动作确定模块810,用于确定从第一页面状态切换至第二页面状态的过程中,客户端所需响应的多个顺序关联的动作,和所述客户端执行每个所述动作之后,所述客户端所处于的中间页面状态。
关系处理模块820,用于针对所述多个动作中的每个动作,建立该动作与其顺序关联的前一个动作之间的映射关系,作为第一映射关系;其中,所述第一映射关系用于在针对所述客户端进行测试路径回放时提供动作与其顺序前向相关的历史动作;以及建立所述动作与执行完该动作之后所述客户端所处于的中间页面状态之间的第二映射关系。
用例建立模块830,用于基于所述第一页面状态、所述第二页面状态、多个所述动作、多个所述中间页面状态、所述第一映射关系和所述第二映射关系,建立与所述第一页面状态和所述第二页面状态对应的测试用例。
在一些实施例中,上述装置还包括路径回放模块840,用于:
获取与所述测试用例相关的每个动作各自对应的动作配置信息,所述动作配置信息携带动作所操控的控件对应的控件属性信息;
基于所述动作配置信息对所述测试用例进行测试路径回放。
在一些实施例中,所述控件属性信息包括全路径信息和相对路径信息;
所述路径回放模块840在基于所述动作配置信息对所述测试用例进行测试路径回放时,用于:优先基于所述控件属性信息中的全路径信息为所述测试用例中的动作进行控件匹配,当全路径信息匹配失败时,基于所述控件属性信息中的相对路径信息进行控件匹配;
基于匹配的目标控件针对所述客户端执行所述测试用例中的动作。
在一些实施例中,所述路径回放模块840用于:
若基于所述控件属性信息进行控件匹配失败时,基于动作所操控的控件对应的父控件的控件属性信息进行控件匹配。
本公开实施例公开了一种电子设备,如图9所示,包括:处理器901、存储器902和总线903,所述存储器902存储有所述处理器901可执行的机器可读指令,当电子设备运行时,所述处理器901与所述存储器902之间通过总线903通信。
所述机器可读指令被所述处理器901执行时执行以下测试用例生成方法的步骤:
确定从第一页面状态切换至第二页面状态的过程中,客户端所需响应的多个顺序关联的动作,和所述客户端执行每个所述动作之后,所述客户端所处于的中间页面状态;
针对所述多个动作中的每个动作,建立该动作与其顺序关联的前一个动作之间的映射关系,作为第一映射关系;其中,所述第一映射关系用于在针对所述客户端进行测试路径回放时提供动作与其顺序前向相关的历史动作;
建立所述动作与执行完该动作之后所述客户端所处于的中间页面状态之间的第二映射关系;
基于所述第一页面状态、所述第二页面状态、多个所述动作、多个所述中间页面状态、所述第一映射关系和所述第二映射关系,建立与所述第一页面状态和所述第二页面状态对应的测试用例。
除此之外,机器可读指令被处理器901执行时,还可以执行上述方法部分描述的任一实施方式中的方法内容,这里不再赘述。
本公开实施例还提供的一种对应于上述方法及装置的计算机程序产品,包括存储了程序代码的计算机可读存储介质,程序代码包括的指令可用于执行前面方法实施例中的方法,具体实现可参见方法实施例,在此不再赘述。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,本文不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本公开中不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。