测试方法、装置、存储介质及电子设备与流程

文档序号:33249564发布日期:2023-02-18 00:31阅读:24来源:国知局
测试方法、装置、存储介质及电子设备与流程

1.本公开涉及测试技术领域,具体地,涉及一种测试方法、装置、存储介质及电子设备。


背景技术:

2.健壮性测试(robustness testing)又称为容错性测试,用于测试系统在出现故障时,是否能够自动恢复或者忽略故障继续运行。相关技术中,客户端健壮性工具是在客户端进行自动化测试时,对服务端的返回数据进行了篡改,用来查看客户端在异常返回数据时的保护处理。如果客户端在接收到被篡改的异常返回数据后发生崩溃,需要开发人员对崩溃原因进行人工排查,会耗费大量的人力和时间,无法快速准确地定位到客户端崩溃原因。


技术实现要素:

3.提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
4.第一方面,本公开提供一种测试方法,所述方法包括:
5.获取一数据变异策略,并将获取到所述数据变异策略的时间作为所述数据变异策略的开始消费时间,所述数据变异策略用于修改网络请求的响应信息;
6.接收测试设备发送的第一网络请求,并将所述第一网络请求发送给服务器,接收所述服务器针对所述第一网络请求返回的请求响应信息;
7.通过第一线程基于所述数据变异策略修改所述请求响应信息,得到变异响应信息,并将所述变异响应信息发送给所述测试设备,对所述数据变异策略设置完成状态标识;
8.按照预设时间间隔运行第二线程,若在所述第二线程运行时读取到所述数据变异策略的完成状态标识,则将所述第二线程的运行时刻作为所述数据变异策略的消费成功时间,其中所述第二线程与所述第一线程并行运行;
9.若所述测试设备产生崩溃,则确定崩溃信息的时间戳,并根据所述时间戳表征的时间与所述数据变异策略的开始消费时间和消费成功时间的时间比对结果,建立所述崩溃信息与所述变异响应信息的关联关系。
10.第二方面,本公开提供一种测试装置,所述装置包括:
11.获取模块,用于获取一数据变异策略,并将获取所述数据变异策略的时间作为所述数据变异策略的开始消费时间,所述数据变异策略用于修改网络请求的响应信息;
12.第一接收模块,用于接收测试设备发送的第一网络请求,并将所述第一网络请求发送给服务器,接收所述服务器反馈针对所述第一网络请求返回的请求响应信息;
13.第一修改模块,用于通过第一线程基于所述数据变异策略修改所述请求响应信息,得到变异响应信息,并将所述变异响应信息发送给所述测试设备,对所述数据变异策略设置完成状态标识;
14.确定模块,用于按照预设时间间隔运行第二线程,若在所述第二线程运行时读取到所述数据变异策略的完成状态标识,则将所述第二线程的运行时刻作为所述数据变异策略的消费成功时间,其中所述第二线程与所述第一线程并行运行;
15.关联模块,用于当所述测试设备产生崩溃时,确定崩溃信息的时间戳,并根据所述时间戳表征的时间与所述数据变异策略的开始消费时间和消费成功时间的时间比对结果,建立所述崩溃信息与所述变异响应信息的关联关系。
16.第三方面,本公开提供一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理装置执行时实现第一方面中所述方法的步骤。
17.第四方面,本公开提供一种电子设备,包括:
18.存储装置,其上存储有计算机程序;
19.处理装置,用于执行所述存储装置中的所述计算机程序,以实现第一方面中所述方法的步骤。
20.通过上述技术方案,可以将获取到数据变异策略的时间作为数据变异策略的开始消费时间,并根据按照预设时间间隔运行的第二线程确定数据变异策略的消费成功时间。由此,若将变异响应信息发送给测试设备后测试设备发生崩溃,则可以将崩溃信息的时间戳与数据变异策略的开始消费时间和消费成功时间进行比对,从而根据该时间比对结果建立该崩溃信息与变异响应信息的关联关系。通过此种方式,可以根据该关联关系快速和准确地定位测试设备的崩溃原因,减少人工分析崩溃原因的时间,从而可以提高客户端健壮性测试的效率。并且,由于在崩溃后及时将崩溃信息与变异响应信息建立了关联,因此可以提高崩溃信息的数据消费能力和数据消费及时性。
21.本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
22.结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。在附图中:
23.图1是根据本公开一示例性实施例示出的一种测试方法的流程图;
24.图2是根据本公开一示例性实施例示出的一种测试方法的实施场景示意图;
25.图3是根据本公开另一示例性实施例示出的一种测试方法的实施场景示意图;
26.图4是根据本公开另一示例性实施例示出的一种测试方法的实施场景示意图;
27.图5是根据本公开一示例性实施例示出的一种测试装置的框图;
28.图6是根据本公开一示例性实施例示出的一种电子设备的框图。
具体实施方式
29.下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
30.应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,
和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
31.本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
32.需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。另外需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
33.本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
34.正如背景技术所言,相关技术中客户端健壮性工具是在客户端进行自动化测试时,对服务端的返回数据进行了篡改,用来查看客户端在异常返回数据时的保护处理。如果客户端在接收到被篡改的异常返回数据后发生崩溃,需要开发人员对崩溃原因进行人工排查,会耗费大量的人力和时间,无法快速准确地定位到客户端崩溃原因。
35.有鉴于此,本公开提供一种测试方法,以建立异常返回数据和客户端崩溃数据之间的关联,从而更加快速和准确地定位客户端崩溃原因,提高客户端健壮性测试的效率。
36.图1是根据本公开一示例性实施例示出的一种测试方法的流程图。该测试方法可以应用于测试场景下的代理服务器,参照图1,该测试方法包括如下步骤:
37.步骤101,获取一数据变异策略,并将获取到数据变异策略的时间作为该数据变异策略的开始消费时间。该数据变异策略用于修改网络请求的响应信息。
38.步骤102,接收测试设备发送的第一网络请求,并将第一网络请求发送给服务器,接收服务器针对第一网络请求返回的请求响应信息。
39.步骤103,通过第一线程基于数据变异策略修改请求响应信息,得到变异响应信息,并将变异响应信息发送给测试设备,对数据变异策略设置完成状态标识。
40.步骤104,按照预设时间间隔运行第二线程,若在第二线程运行时读取到数据变异策略的完成状态标识,则将第二线程的运行时刻作为所述数据变异策略的消费成功时间。其中第二线程与第一线程并行运行。
41.步骤105,若测试设备产生崩溃,则确定崩溃信息的时间戳,并根据时间戳表征的时间与数据变异策略的开始消费时间和消费成功时间的时间比对结果,建立崩溃信息与变异响应信息的关联关系。
42.通过上述方式,可以将获取到数据变异策略的时间作为数据变异策略的开始消费时间,并根据按照预设时间间隔运行的第二线程确定数据变异策略的消费成功时间。由此,若将变异响应信息发送给测试设备后测试设备发生崩溃,则可以将崩溃信息的时间戳与数据变异策略的开始消费时间和消费成功时间进行比对,从而根据时间比对结果建立崩溃信息与变异响应信息的关联关系。
43.在可能的方式中,可以在时间戳表征的时间位于开始消费时间和消费成功时间之间的情况下,建立崩溃信息与变异响应信息的关联关系;或者,在时间戳表征的时间没有位
于开始消费时间和消费成功时间之间的情况下,确定时间戳表征的时间是否位于数据变异策略的开始消费时间和下次获取到的另一数据变异策略的开始消费时间之间,若时间戳表征的时间位于数据变异策略的开始消费时间和下次获取到的另一数据变异策略的开始消费时间之间,则建立所述崩溃信息与所述变异响应信息的关联关系。
44.示例地,第二线程按照预设时间间隔运行,比如第二线程按照2秒的时间间隔运行,等等,本公开实施例对此不作限定。在获取到一数据变异策略后,通过第一线程基于数据变异策略修改请求响应信息得到变异响应信息,并将变异响应信息发送给测试设备,对数据变异策略设置完成状态标识,因此当与第一线程并行运行的第二线程运行时读取到完成状态标识,则可以将第二线程的本次运行时刻作为该数据变异策略的消费成功时间。
45.在一种可能的情况下,测试设备发生的崩溃可能产生于第二线程运行之前的邻近时刻,比如第二线程运行前1秒,那么在时间戳表征的时间位于开始消费时间和消费成功时间之间的情况下,可以建立崩溃信息与变异响应信息的关联关系。在另一种可能的情况下,测试设备发生的崩溃可能正好产生于第二线程的运行时刻,即时间戳表征的时间没有位于开始消费时间和消费成功时间之间,则可以进一步判断时间戳表征的时间是否位于数据变异策略的开始消费时间和下次获取到的另一数据变异策略的开始消费时间之间,若时间戳表征的时间位于数据变异策略的开始消费时间和下次获取到的另一数据变异策略的开始消费时间之间,则可以建立崩溃信息与变异响应信息的关联关系。
46.通过上述方式建立崩溃信息与变异响应信息的关联关系后,则可以根据该关联关系快速和准确地定位测试设备的崩溃原因,减少人工分析崩溃原因的时间,从而可以提高客户端健壮性测试的效率。并且,由于在崩溃后及时将崩溃信息与变异响应信息建立了关联,因此可以提高崩溃信息的数据消费能力和数据消费及时性。
47.为了使得本领域技术人员更加理解本公开提供的测试方法,下面对上述各步骤进行详细举例说明。
48.示例地,数据变异策略用于修改网络请求的响应信息,比如将响应信息中的数据修改为预设值。网络请求的响应信息通常为json格式,即包括由键名和对应值组成的多个数据,因此数据变异策略可以用于指定修改响应信息中某个键名对应的值为预设值。比如,网络请求的响应信息包括a和b两个键名,a对应的值为1,b对应的值为2。在此情况下,数据变异策略可以设定为:修改a的值为null。因此,执行该数据变异策略后,该响应信息中a的值会被修改为null,b的值保持不变。
49.在可能的方式中,数据变异策略可以通过如下方式得到:接收测试设备发送的第三网络请求,并将第三网络请求发送给服务器,接收服务器返回的路径对应关系,该路径对应关系用于表征第三网络请求的请求路径和第三网络请求的请求响应信息间的对应关系,然后将该路径对应关系发送给策略生成器,接收策略生成器发送的数据变异策略,该数据变异策略是策略生成将预设的数据修改规则与路径对应关系中的请求路径建立关联而得到的。相应地,基于数据变异策略修改请求响应信息可以是:确定第一网络请求的请求路径,若第一网络请求的请求路径与数据变异策略中的请求路径相同,则基于数据变异策略修改第一网络请求对应的请求响应信息。
50.应当理解的是,在实际应用中,每次健壮性测试通常针对一个测试场景,即每次健壮性测试通常获取一个数据变异策略来篡改某一个特定网络请求的响应信息。但客户端执
行一次自动化测试可能产生多个网络请求。因此,为了准确实现健壮性测试,可以先确定网络请求的请求路径是否与数据变异策略对应的请求路径相同。基于此种考虑,本公开实施例在确定数据变异策略的过程中,将预设的数据修改规则与对应的请求路径建立关联,由此得到的数据变异策略可以具有对应的请求路径,从而在后续过程中,可以通过请求路径的比对,准确基于数据变异策略修改对应网络请求的请求响应信息,提高测试准确性。
51.例如,可以基于图2所示的实施场景确定数据变异策略。其中,控制主机用于根据用户的指示下发不同的测试配置,以触发不同的自动化测试任务,并开启对应的代理服务器,同时将测试设备连接至对应的代理服务器。比如,可以通过adb工具包将控制主机与测试设备进行连接,以通过控制主机控制测试设备执行自动化测试。测试设备用于运行自动化测试。第三代理服务器用于转发测试设备发出的第三网络请求,该第三网络请求可以是测试设备上安装的应用程序发出的网络请求,本公开实施例对此不作限定。同时,第三代理服务器可以将公网服务器返回的、针对第三网络请求的请求响应信息(response)与第三网络请求的请求路径(path)间的对应关系转发至策略生成器,并将公网服务器返回的请求响应数据直接返回给测试设备。公网服务器为线上真实的服务器。策略生成器用于根据接收到的请求响应信息,根据预设的数据修改规则生成变异策略,并写入数据库。
52.参照图2,在具体实施时,控制主机可以在步骤1中开启第三代理服务器,并在步骤2中使用adb工具连接测试设备,触发对应的自动化测试任务。在步骤3中,测试设备发送第三网络请求至第三代理服务器。在步骤4中,第三代理服务器将该请求转发至公网服务器。在步骤5中,第三代理服务器接收公网服务器针对第三网络请求的请求响应信息。在步骤6中,第三代理服务器将第三网络请求的请求响应信息和请求路径间的对应关系发送给策略生成器。在步骤7中,第三代理服务器将请求响应信息返回给测试设备。在步骤8中,策略生成器根据预设的数据修改规则生成策略并写入数据库。
53.其中,预设的数据修改规则可以根据实际情况设定,本公开实施例对此不作限定。比如,预设的数据修改规则可以是针对网络请求的请求响应信息中的某一键名的数据,将该数据修改为预设的数据类型或数值。若公网服务器反馈的针对第三网络请求的请求响应信息中可以查找到该数据,则可以将该预设的数据修改规则与对应的请求路径建立关联,得到数据变异策略。
54.应当理解的是,在具体实施时,一个请求路径可以对应一个数据变异策略,或者也可以对应多个数据变异策略,本公开实施例对此不作限定,可以根据实际情况进行设定。
55.在可能的方式中,数据变异策略可以被写入数据库,相应地,获取数据变异策略,并将获取到数据变异策略的时间作为数据变异策略的开始消费时间可以是:从数据库中读取数据变异策略到代理服务器的内存,并将读取数据变异策略的时间作为数据变异策略的开始消费时间。
56.也即是说,在实施本公开提供的测试方法时,首先可以将数据变异策略从数据库初始化到代理服务器的内存中,由此代理服务器在后续过程中可以直接使用内存中的数据变异策略对请求响应信息进行修改,从而提高测试效率。在此种场景下,数据变异策略的开始消费时间则为从数据库中读取到该数据变异策略的时间。
57.在获取到数据变异策略后,参照图3,控制主机可以在步骤1中开启第一代理服务器。应当理解的是,该第一代理服务器可以为消费类型的代理服务器,用于关联崩溃信息和
变异响应信息的关联测试过程,而上文提及的第三代理服务器可以为收集类型的代理服务器,用于确定数据变异策略的过程。在实际应用中,可以将不同类型的代理服务器集中在设备平台,然后通过向设备平台发送代理服务器的唯一标识信息调用对应类型的代理服务器。另外应当理解的是,在第一次测试过程中,该第一代理服务器可以从数据库初始化本次需要执行的数据变异策略到内存,在执行步骤6和7后第一代理服务器需要执行的数据变异策略可以更新为另一数据变异策略,即在测试之前第一代理服务器初始化有本次需要执行的数据变异策略,从而测试过程可以从第一代理服务器的内存中直接获取数据变异策略,进而提高测试效率。
58.继续参照图3,控制主机可以在步骤2中使用adb工具连接测试设备,触发对应的自动化测试任务。在步骤3中,测试设备发送第一网络请求至第一代理服务器。在步骤4中,第一代理服务器将该请求转发至公网服务器。在步骤5中,第一代理服务器接收公网服务器针对第一网络请求的请求响应信息。在步骤6中,第一代理服务器向数据库请求下一次测试过程中需要执行的策略获取请求。在步骤7中,数据库可以将下一次测试过程中的数据变异策略发送给第一代理服务器,即通过步骤6和7可以初始化下一次测试过程需要执行的数据变异策略到第一代理服务器的内存,从而在下一次测试过程中可以直接从内存获取数据变异策略,提高测试效率。
59.应当理解的是,上文有所说明,数据变异策略可以是通过将请求路径和预设的数据修改规则进行关联而得到的,因此数据库返回的数据变异策略可以具有对应的请求路径。在此情况下,第一代理服务器可以判断第一网络请求的请求路径和该数据变异策略对应的请求路径是否一致,若一致,则可以基于数据变异策略修改第一网络请求的请求响应信息,得到变异响应信息。然后在步骤8中,将该变异响应信息发送给测试设备。
60.在此过程中,可以将获取到数据变异策略的时间作为数据变异策略的开始消费时间,并根据按照预设时间间隔运行的第二线程确定数据变异策略的消费成功时间。由此,若将变异响应信息发送给测试设备后测试设备发生崩溃,则可以在步骤9中将崩溃信息上报给控制主机。并且可以将崩溃信息的时间戳与数据变异策略的开始消费时间和消费成功时间进行比对,然后根据时间比对结果建立该崩溃信息与变异响应信息的关联关系,进而可以根据该关联关系快速和准确地定位测试设备的崩溃原因,减少人工分析崩溃原因的时间,提高客户端健壮性测试的效率。
61.在可能的方式中,还可以接收测试设备发送的第二网络请求,将第二网络请求发送给服务器,接收服务器针对第二网络请求返回的请求响应信息。然后,基于数据变异策略修改第二网络请求的请求响应信息,得到复现变异响应信息,并将复现变异响应信息发送给测试设备,若测试设备产生崩溃,则将测试设备当前的崩溃信息作为复现崩溃信息。相应地,建立所述崩溃信息与变异响应信息的关联关系可以是:若崩溃信息的堆栈信息与复现崩溃信息的堆栈信息一致,则可以建立崩溃信息与变异响应信息的关联关系。
62.在实际应用中,将变异响应信息发送给测试设备后测试设备发生崩溃可能是由于某种偶然原因导致的,而非测试设备本身的问题。此种情况下,为了保证测试准确性,可以进行崩溃复现测试。
63.例如,参照图4,控制主机可以在步骤1中开启第二代理服务器。应当理解的是,该第二代理服务器可以为复现类型的代理服务器,用于崩溃信息的复现测试过程。在实际应
用中,可以将不同类型的代理服务器集中在设备平台,然后通过向设备平台发送代理服务器的唯一标识信息调用对应类型的代理服务器。另外应当理解的是,在第一次测试过程中,该第二代理服务器可以从数据库初始化本次需要执行的数据变异策略到内存,在执行步骤6和7后第二代理服务器需要执行的数据变异策略可以更新为另一数据变异策略,即在测试之前第二代理服务器初始化有本次需要执行的数据变异策略,从而测试过程可以从第二代理服务器的内存中直接获取数据变异策略,进而可以提高测试效率。
64.继续参照图4,控制主机可以在步骤2中使用adb工具连接测试设备,触发对应的自动化测试任务。在步骤3中,测试设备发送第二网络请求至第二代理服务器。在步骤4中,第二代理服务器将该请求转发至公网服务器。在步骤5中,第二代理服务器接收公网服务器针对第二网络请求的请求响应信息。在步骤6中,第二代理服务器可以向数据库请求下一次测试过程中需要执行的策略获取请求。在步骤7中,数据库可以将下一次测试过程中的数据变异策略发送给第二代理服务器,即通过步骤6和7可以初始化下一次测试过程需要执行的数据变异策略到第二代理服务器的内存,从而在下一次测试过程中可以直接从内存获取数据变异策略,提高测试效率。
65.第二代理服务器可以基于数据变异策略修改第二网络请求的请求响应信息,得到复现变异响应信息。然后在步骤8中,将该复现变异响应信息发送给测试设备。若测试设备发生崩溃,则并且,可以在步骤9中将崩溃信息上报。可以将测试设备当前的崩溃信息作为复现崩溃信息。之后,可以比对该复现崩溃信息和测试设备在接收到变异响应信息后产生的崩溃信息的堆栈信息是否一致,若一致,则说明崩溃可复现,从而可以建立崩溃信息与变异响应信息的关联关系,以提高崩溃信息与变异响应信息的关联准确性,从而提高健壮性测试的准确性。
66.在可能的方式中,基于数据变异策略修改请求响应信息,得到变异响应信息可以是:先确定数据变异策略用于修改网络请求的响应信息中的目标数据,该目标数据的值包括由键名和对应值组成的至少一个子数据,然后将数据变异策略转换为针对每一子数据的子数据变异策略,最后根据每一子数据对应的子数据变异策略分别修改第一网络请求的请求响应信息,得到变异响应信息。
67.在实际应用中,网络请求的响应信息通常为json格式,即由键名和对应的值组成,而某个键名对应的值也可能是由键名和对应值组成的json格式的数据。比如,键名c对应的值可能包括键名为c1且值为1的第一子数据和键名为c2且值为2的第二子数据。在此种情况下,若数据变异策略可是针对键名c,比如将键名c的值修改为null。基于该数据变异策略修改响应请求信息可能是将键名c的值直接修改为null,但还有种可能是分别将第一子数据和第二子数据的值修改为null。对于后一种情况,若测试设备发生崩溃,则无法准确定位是由于第一子数据还是第二子数据修改后导致的崩溃。
68.因此,为了更加准确地定位崩溃原因,可以先将数据变异策略进行拆分,即将数据变异策略转换为针对每一子数据的子数据变异策略,然后根据每一子数据对应的子数据变异策略分别修改第一网络请求的请求响应信息,得到变异响应信息。应当理解的是,在此种情况下,可以得到多个变异响应信息,然后可以分别将该多个变异响应信息发送给测试设备,确定测试设备是否发生崩溃,若测试设备发生崩溃,则可以将对应的变异响应信息与崩溃信息建立关联关系。由此,可以将崩溃信息定位到更细粒度的数据层面,从而更准确地定
位测试设备的崩溃原因,提高测试准确性。
69.在建立崩溃信息和变异响应信息的关联关系后,还可以将崩溃信息以及崩溃信息与变异响应信息的关联关系上报到目标服务器,以通过目标服务器的数据获取接口获取崩溃信息和关联关系来确定测试设备的崩溃原因。
70.示例地,目标服务器可以是根据实际情况指定的http server服务器,可以将崩溃相关的详细信息(即崩溃信息)以及崩溃信息与变异响应信息的关联关系上报到目标服务器,从而通过目标服务器的数据获取接口则可以获取到相应的信息来确定测试设备的崩溃原因。相较于相关技术中只上报崩溃信息然后再由开发人员人工分析崩溃原因的方式,本公开实施例提供的方式,可以使得开发人员根据上报的关联关系更快速地定位崩溃原因,从而可以提高测试效率。
71.应当理解的是,在本公开提供的测试方法具体实施时,可以包括数据收集、数据消费和数据复现三个过程。其中,数据收集可以参照图2所示的实施过程,通过第三代理服务器和测试设备进行测试过程,以便确定数据变异策略,具体过程可以参照上文。数据消费可以参照图3所示的实施过程,通过第一代理服务器和测试设备进行测试过程,以便遍历数据收集过程中确定的数据变异策略,初步建立崩溃信息和变异响应信息的关联关系。数据复现可以参照图4所示的实施过程,通过第二代理服务器和测试设备进行测试过程,若该过程基于同一数据变异策略产生的崩溃与数据消费过程产生的崩溃一致,则可以将崩溃信息和变异响应信息的关联关系进行上报,便于根据该关联关系进行崩溃原因的分析,提高健壮性测试的效率。
72.基于同一构思,本公开还提供一种测试装置,该装置可以通过软件、硬件或者两者结合的方式成为电子设备的部分或全部。参照图5,该测试装置500可以包括:
73.获取模块501,用于获取一数据变异策略,并将获取所述数据变异策略的时间作为所述数据变异策略的开始消费时间,所述数据变异策略用于修改网络请求的响应信息;
74.第一接收模块502,用于接收测试设备发送的第一网络请求,并将所述第一网络请求发送给服务器,接收所述服务器针对所述第一网络请求返回的请求响应信息;
75.第一修改模块503,用于通过第一线程基于所述数据变异策略修改所述请求响应信息,得到变异响应信息,并将所述变异响应信息发送给所述测试设备,对所述数据变异策略设置完成状态标识;
76.确定模块504,用于按照预设时间间隔运行第二线程,若在所述第二线程运行时读取到所述数据变异策略的完成状态标识,则将所述第二线程的运行时刻作为所述数据变异策略的消费成功时间,其中所述第二线程与所述第一线程并行运行;
77.关联模块505,用于当所述测试设备产生崩溃时,确定崩溃信息的时间戳,并根据所述时间戳表征的时间与所述数据变异策略的开始消费时间和消费成功时间的时间比对结果,建立所述崩溃信息与所述变异响应信息的关联关系。
78.可选地,所述关联模块505用于:
79.在所述时间戳表征的时间位于所述开始消费时间和所述消费成功时间之间的情况下,建立所述崩溃信息与所述变异响应信息的关联关系;或者
80.在所述时间戳表征的时间没有位于所述开始消费时间和所述消费成功时间之间的情况下,确定所述时间戳表征的时间是否位于所述数据变异策略的开始消费时间和下次
获取到的另一数据变异策略的开始消费时间之间;
81.在所述时间戳表征的时间位于所述数据变异策略的开始消费时间和下次获取到的另一数据变异策略的开始消费时间之间的情况下,建立所述崩溃信息与所述变异响应信息的关联关系。
82.可选地,所述装置500还包括:
83.第二接收模块,用于接收所述测试设备发送的第二网络请求,将所述第二网络请求发送给服务器,接收所述服务器针对所述第二网络请求返回的请求响应信息;
84.第二修改模块,用于通过所述第一线程基于所述数据变异策略修改所述第二网络请求的请求响应信息,得到复现变异响应信息,并通过所述第一线程将所述复现变异响应信息发送给所述测试设备,当所述测试设备产生崩溃时,将所述测试设备当前的崩溃信息作为复现崩溃信息;
85.所述关联模块505用于:
86.当所述崩溃信息的堆栈信息与所述复现崩溃信息的堆栈信息一致时,建立所述崩溃信息与所述变异响应信息的关联关系。
87.可选地,所述第一修改模块503用于:
88.确定所述数据变异策略用于修改网络请求的响应信息中的目标数据,所述目标数据的值包括由键名和对应值组成的至少一个子数据;
89.将所述数据变异策略转换为针对每一子数据的子数据变异策略;
90.根据每一子数据对应的所述子数据变异策略分别修改所述第一网络请求的请求响应信息,得到变异响应信息。
91.可选地,所述装置还包括数据收集模块,用于:
92.接收测试设备发送的第三网络请求,并将所述第三网络请求发送给所述服务器,接收所述服务器返回的路径对应关系,所述路径对应关系用于表征所述第三网络请求的请求路径和所述第三网络请求的请求响应信息间的对应关系;
93.将所述路径对应关系发送给策略生成器,接收所述策略生成器返回的数据变异策略,所述数据变异策略是所述策略生成器将预设的数据修改规则与所述对应关系中的请求路径建立关联而得到的;
94.所述第一修改模块503用于:
95.确定所述第一网络请求的请求路径,当所述第一网络请求的请求路径与所述数据变异策略对应的请求路径相同时,基于所述数据变异策略修改所述第一网络请求对应的请求响应信息。
96.可选地,所述数据变异策略预先被写入数据库,所述获取模块501用于:
97.从数据库中读取所述数据变异策略到代理服务器的内存,并将读取所述数据变异策略的时间作为所述数据变异策略的开始消费时间。
98.可选地,所述装置500还包括:
99.上报模块,用于将所述崩溃信息以及所述崩溃信息与所述变异响应信息的关联关系上报到目标服务器,以通过所述目标服务器的数据获取接口获取所述崩溃信息和所述关联关系来确定所述测试设备的崩溃原因。
100.关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法
的实施例中进行了详细描述,此处将不做详细阐述说明。
101.基于同一构思,本公开实施例还提供一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理装置执行时实现上述任一测试方法的步骤。
102.基于同一构思,本公开实施例还提供一种电子设备,包括:
103.存储装置,其上存储有计算机程序;
104.处理装置,用于执行所述存储装置中的所述计算机程序,以实现上述任一测试方法的步骤。
105.下面参考图6,其示出了适于用来实现本公开实施例的电子设备600的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
106.如图6所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储装置608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在ram 603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、rom 602以及ram 603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。
107.通常,以下装置可以连接至i/o接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
108.特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从rom 602被安装。在该计算机程序被处理装置601执行时,执行本公开实施例的方法中限定的上述功能。
109.需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于
电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
110.在一些实施方式中,可以利用诸如http(hypertext transfer protocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“lan”),广域网(“wan”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
111.上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
112.上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取一数据变异策略,并将获取到所述数据变异策略的时间作为所述数据变异策略的开始消费时间,所述数据变异策略用于修改网络请求的响应信息;接收测试设备发送的第一网络请求,并将所述第一网络请求发送给服务器,接收所述服务器针对所述第一网络请求返回的请求响应信息;通过第一线程基于所述数据变异策略修改所述请求响应信息,得到变异响应信息,并将所述变异响应信息发送给所述测试设备,对所述数据变异策略设置完成状态标识;按照预设时间间隔运行第二线程,若在所述第二线程运行时读取到所述数据变异策略的完成状态标识,则将所述第二线程的运行时刻作为所述数据变异策略的消费成功时间,其中所述第二线程与所述第一线程并行运行;若所述测试设备产生崩溃,则确定崩溃信息的时间戳,并所述时间戳表征的时间与所述数据变异策略的开始消费时间和消费成功时间的时间比对结果,建立所述崩溃信息与所述变异响应信息的关联关系。
113.可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言——诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
114.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执
行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
115.描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该模块本身的限定。
116.本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑设备(cpld)等等。
117.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
118.根据本公开的一个或多个实施例,示例1提供了一种测试方法,包括:
119.获取一数据变异策略,并将获取到所述数据变异策略的时间作为所述数据变异策略的开始消费时间,所述数据变异策略用于修改网络请求的响应信息;
120.接收测试设备发送的第一网络请求,并将所述第一网络请求发送给服务器,接收所述服务器针对所述第一网络请求返回的请求响应信息;
121.通过第一线程基于所述数据变异策略修改所述请求响应信息,得到变异响应信息,并将所述变异响应信息发送给所述测试设备,对所述数据变异策略设置完成状态标识;
122.按照预设时间间隔运行第二线程,若在所述第二线程运行时读取到所述数据变异策略的完成状态标识,则将所述第二线程的运行时刻作为所述数据变异策略的消费成功时间,其中所述第二线程与所述第一线程并行运行;
123.若所述测试设备产生崩溃,则确定崩溃信息的时间戳,并根据所述时间戳表征的时间与所述数据变异策略的开始消费时间和消费成功时间的时间比对结果,建立所述崩溃信息与所述变异响应信息的关联关系。
124.根据本公开的一个或多个实施例,示例2提供了示例1的方法,所述根据所述时间戳表征的时间与所述数据变异策略的开始消费时间和消费成功时间的时间比对结果,建立所述崩溃信息与所述变异响应信息的关联关系,包括:
125.在所述时间戳表征的时间位于所述开始消费时间和所述消费成功时间之间的情况下,建立所述崩溃信息与所述变异响应信息的关联关系;或者
126.在所述时间戳表征的时间没有位于所述开始消费时间和所述消费成功时间之间的情况下,确定所述时间戳表征的时间是否位于所述数据变异策略的开始消费时间和下次获取到的另一数据变异策略的开始消费时间之间;
127.若所述时间戳表征的时间位于所述数据变异策略的开始消费时间和下次获取到的另一数据变异策略的开始消费时间之间,则建立所述崩溃信息与所述变异响应信息的关
联关系。
128.根据本公开的一个或多个实施例,示例3提供了示例1或2的方法,所述方法还包括:
129.接收所述测试设备发送的第二网络请求,将所述第二网络请求发送给所述服务器,接收所述服务器针对所述第二网络请求返回的请求响应信息;
130.通过所述第一线程基于所述数据变异策略修改所述第二网络请求的请求响应信息,得到复现变异响应信息,并通过所述第一线程将所述复现变异响应信息发送给所述测试设备,若所述测试设备产生崩溃,则将所述测试设备当前的崩溃信息作为复现崩溃信息;
131.所述建立所述崩溃信息与所述变异响应信息的关联关系,包括:
132.若所述崩溃信息的堆栈信息与所述复现崩溃信息的堆栈信息一致,则建立所述崩溃信息与所述变异响应信息的关联关系。
133.根据本公开的一个或多个实施例,示例4提供了示例1或2的方法,所述基于所述数据变异策略修改所述请求响应信息,得到变异响应信息,包括:
134.确定所述数据变异策略用于修改网络请求的响应信息中的目标数据,所述目标数据的值包括由键名和对应值组成的至少一个子数据;
135.将所述数据变异策略转换为针对每一子数据的子数据变异策略;
136.根据每一子数据对应的所述子数据变异策略分别修改所述第一网络请求的请求响应信息,得到变异响应信息。
137.根据本公开的一个或多个实施例,示例5提供了示例1或2的方法,所述数据变异策略是通过如下方式得到的:
138.接收测试设备发送的第三网络请求,并将所述第三网络请求发送给所述服务器,接收所述服务器返回的路径对应关系,所述路径对应关系用于表征所述第三网络请求的请求路径和所述第三网络请求的请求响应信息间的对应关系;
139.将所述路径对应关系发送给策略生成器,接收所述策略生成器返回的数据变异策略,所述数据变异策略是所述策略生成器将预设的数据修改规则与所述对应关系中的请求路径建立关联而得到的;;
140.所述基于所述数据变异策略修改所述请求响应信息,包括:
141.确定所述第一网络请求的请求路径,若所述第一网络请求的请求路径与所述数据变异策略对应的请求路径相同,则基于所述数据变异策略修改所述第一网络请求对应的请求响应信息。
142.根据本公开的一个或多个实施例,示例6提供了示例1或2的方法,所述数据变异策略预先被写入数据库,所述获取数据变异策略,并将获取到所述数据变异策略的时间作为所述数据变异策略的开始消费时间,包括:
143.从数据库中读取所述数据变异策略到代理服务器的内存,并将读取所述数据变异策略的时间作为所述数据变异策略的开始消费时间。
144.根据本公开的一个或多个实施例,示例7提供了示例1或2的方法,还包括:
145.将所述崩溃信息以及所述崩溃信息与所述变异响应信息的关联关系上报到目标服务器,以通过所述目标服务器的数据获取接口获取所述崩溃信息和所述关联关系来确定所述测试设备的崩溃原因。
146.根据本公开的一个或多个实施例,示例8提供了一种测试装置,所述装置包括:
147.获取模块,用于获取一数据变异策略,并将获取所述数据变异策略的时间作为所述数据变异策略的开始消费时间,所述数据变异策略用于修改网络请求的响应信息;
148.第一接收模块,用于接收测试设备发送的第一网络请求,并将所述第一网络请求发送给服务器,接收所述服务器针对所述第一网络请求返回的请求响应信息;
149.第一修改模块,用于通过第一线程基于所述数据变异策略修改所述请求响应信息,得到变异响应信息,并将所述变异响应信息发送给所述测试设备,对所述数据变异策略设置完成状态标识;
150.确定模块,用于按照预设时间间隔运行第二线程,若在所述第二线程运行时读取到所述数据变异策略的完成状态标识,则将所述第二线程的运行时刻作为所述数据变异策略的消费成功时间,其中所述第二线程与所述第一线程并行运行;
151.关联模块,用于当所述测试设备产生崩溃时,确定崩溃信息的时间戳,并根据所述时间戳表征的时间与所述数据变异策略的开始消费时间和消费成功时间的时间比对结果,建立所述崩溃信息与所述变异响应信息的关联关系。
152.根据本公开的一个或多个实施例,示例9提供了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理装置执行时实现示例1-7中任一项所述方法的步骤。
153.根据本公开的一个或多个实施例,示例10提供了一种电子设备,包括:
154.存储装置,其上存储有计算机程序;
155.处理装置,用于执行所述存储装置中的所述计算机程序,以实现示例1-7中任一项所述方法的步骤。
156.以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
157.此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
158.尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1