具体实施方式
为了更好的理解上述技术方案,下面通过附图以及具体实施例对本说明书实施例的技术方案做详细的说明,应当理解本说明书实施例以及实施例中的具体特征是对本说明书实施例技术方案的详细的说明,而不是对本说明书技术方案的限定,在不冲突的情况下,本说明书实施例以及实施例中的技术特征可以相互组合。
请参见图1,为适用于本说明书实施例的一种运行环境示意图。如图1所示,一个或多个终端设备100(图1中仅示出四个)可通过网络200与一个或多个服务器300(图1中仅示出一个)相连,以进行数据通信或交互。其中,终端设备100可以是个人电脑(PersonalComputer,PC)、笔记本电脑、平板电脑、智能手机、电子阅读器、车载设备、网络电视和可穿戴设备等具有网络功能的智能设备。
本说明书实施例中,录制并提交待测应用程序对应的测试脚本的第一终端设备、运行测试脚本对待测应用程序进行测试的第二终端设备可以为任一类型的终端设备,其可以安装有网页浏览器或应用客户端。本发明实施例中,第一终端设备、第二终端设备以及服务器之间能够通过通信网络直接连接。第一终端设备、第二终端设备以及服务器之间可以在Wi-Fi(无线保真)网络、2G/3G/4G/5G网络或局域网中建立无线远程通信连接。
本说明书实施例中,第一终端设备和第二终端设备可以优选为移动终端,例如智能手机。
以下本说明书各实施例提出的应用程序测试方法、装置、电子设备及可读存储介质,第一终端设备在检测到用户触发第一预设指令时,监听用户通过第一终端设备对待测应用程序执行的第一用户操作,并基于第一用户操作生成测试脚本,将测试脚本发送到服务器;由服务器将测试脚本发送给一个或多个当前处于空闲状态的第二终端设备,以使得第二终端设备回放测试脚本,实现对待测应用程序的测试。其中,所述第二终端设备为预先通过将设备信息注册到服务器与服务器建立通信连接的终端设备。这样极大地方便了用户录制测试脚本,有利于简化用户操作,并且相比于服务器通过数据线连接测试设备的方式,本方案的设备管理更加灵活,有利于提高资源的利用率。下面将结合具体的实施例对本发明进行详细的说明。
第一方面,本说明书实施例提供了一种应用程序测试方法,本实施例为第一终端设备所执行的应用程序测试方法。本说明书实施例提供的应用程序测试方法包括第一测试过程。请参见图2,第一测试过程至少可以包括步骤S201-步骤S204。
步骤S201,检测用户是否触发第一预设指令。
第一测试过程为用户录制待测应用程序对应的测试脚本,上传给服务器,由服务器下发给当前处于空闲状态的第二终端设备,由第二终端设备回放测试脚本,从而实现对待测应用程序的测试的过程。
本说明书实施例中,第一预设指令用于开启第一测试过程。举例来讲,用户可以通过触发用于启动脚本录制功能的按钮触发第一预设指令。
步骤S202,当检测到所述用户触发第一预设指令时,监听所述用户对待测应用程序执行的第一用户操作,并基于所述第一用户操作生成测试脚本。
当检测到用户触发第一预设指令时,开始第一测试过程,并启动脚本录制功能。用户可以通过第一终端设备打开待测应用程序,针对需要测试的业务模块执行相应的第一用户操作。监听在第一终端设备上执行的第一用户操作,并基于第一用户操作生成测试脚本,保存到本地。其中,需要测试的业务模块可以根据实际需要选定,例如,可以是待测应用程序的登录模块。
举例来讲,当第一终端设备为智能手机时,以安装有安卓***的智能手机为例,可以利用辅助功能(AccessibilityService)监听第一用户操作,AccessibilityService为运行在手机后台,能够监听***发出的事件的服务。
具体来讲,基于第一用户操作生成测试脚本的过程可以采用将操作转换为为json的算法,具体可以为:依次记录第一用户操作所触发的控件的文字、坐标、大小、结构信息以及操作的类型(例如点击、滑动、输入等)与参数,构建成json数据,将所构建的json数据作为测试脚本。其中,结构信息是指基于页面结构构建出该节点的Xpath树结构以及子节点的文字、坐标、大小信息。相应地,可以采用根据json进行回放的算法对测试脚本进行回放,具体可以基于json传过来的文字、坐标、大小和结构信息,在当前页面结构上进行匹配,查找匹配度最高的控件,然后基于json传来的操作类型和参数执行相关操作,实现测试脚本的回放。
当然,在本说明书其他实施例中也可以采用其他方式实现基于第一用户操作生成测试脚本,此处不作限制。
需要说明的是,用户可以在启动脚本录制功能之前,预先在第一终端设备中下载并安装待测应用程序;或者,用户也可以预先将待测应用程序存储在指定位置如服务器或其他云端存储平台,在启动脚本录制功能之后,通过待测应用程序的存储路径下载并安装待测应用程序,然后再打开待测应用程序,针对需要测试的功能模块执行相应的第一用户操作,这样就可以将待测应用程序的下载及安装过程也录制为脚本。
作为一种可选的实施方式,除了录制测试脚本以外,还需要获取所录制的测试脚本对应的特征信息,在脚本录制完成后,将所录制的测试脚本以及该测试脚本对应的特征信息一并上传给服务器,以便于服务器对接收到的测试脚本进行管理。具体来讲,特征信息可以包括但不限于测试脚本对应的待测应用程序的名称、业务模块的名称以及测试脚本的名称。所录制的测试脚本对应的特征信息可以是在录制开始前或者是录制完成后由用户输入。
步骤S203,将所述测试脚本发送到服务器,以使得所述服务器将所述测试脚本发送给一个或多个当前处于空闲状态的第二终端设备执行,其中,所述第二终端设备为预先通过将设备信息注册到所述服务器与所述服务器建立通信连接的终端设备。
本说明书实施例中,服务器可以存储接收到的测试脚本,并对测试脚本进行管理。具体来讲,可以根据测试脚本对应的特征信息对测试脚本进行管理,并基于接收到的测试脚本,创建测试任务。测试任务可以包括测试需求信息以及一个或多个测试脚本。其中,测试需求信息可以包括测试项目和测试时间。目标测试设备的机型和数量具体可以根据测试项目确定。例如,测试项目可以包括兼容性测试或回归测试等。测试时间为控制目标测试设备执行测试脚本的时间。
确定测试任务后,获取当前处于空闲状态的第二终端设备,基于测试需求信息从当前处于空闲状态的第二终端设备中选定一个或多个第二终端设备。在一种具体应用场景中,用户可以通过注册或登录服务器的前端云测平台,查看与该用户相关的测试脚本,并基于这些测试脚本在云测平台上创建测试任务,进而,从云测平台展示的当前处于空闲状态的第二终端设备中选定一个或多个第二终端设备。
当然,在本说明书实施例的其他应用场景中,上述特征信息还可以包括上述测试需求信息,服务器可以基于接收到测试脚本以及测试脚本对应的特征信息创建测试任务,进而根据相应测试需求信息中包括的测试项目以及与该测试项目对应的预设匹配规则,从当前处于空闲状态的第二终端设备中选定一个或多个第二终端设备。预设匹配规则可以根据实际需要设置,例如,可以预先针对手机应用软件的兼容性测试,设置选定的第二终端设备需要覆盖的手机品牌、操作***版本以及分辨率等。
进一步地,将测试任务包括的测试脚本发送给所确定的一个或多个当前处于空闲状态的第二终端设备。第二终端设备对接收到的测试脚本进行回放,实现对待测应用程序的测试,并将运行结果和日志相关数据发送给服务器。
可以理解的是,在通过第一终端设备向服务器发送测试脚本之前,需要先建立第一终端设备与服务器之间的通信连接。因此,本说明书实施例提供的应用程序测试方法还包括通信连接步骤。具体来讲,通信连接步骤可以包括:第一终端设备向所述服务器发起注册请求,所述注册请求包括所述第一终端设备的设备信息,以使得所述服务器将第一终端设备的设备信息存储在预先设置的设备信息库中;服务器接收到注册请求后,验证通过后将第一终端设备的设备信息存储在预设设置的设备信息库中,并向第一终端设备反馈注册成功确认信息;当第一终端设备接收到注册成功确认信息时,建立所述第一终端设备与所述服务器之间的通信连接,并向用户展示注册成功确认信息。
本说明书实施例中,设备信息可以包括IP地址。可选的,设备信息还可以包括但不限于机型配置信息,例如,机型配置信息可以包括品牌、分辨率、内存以及操作***的版本等。具体来讲,对注册请求进行验证的实施方式可以根据实际需要设置,例如,可以验证注册请求中的设备信息是否满足预设的注册条件。
同理,第二终端设备预先通过将设备信息注册到所述服务器与所述服务器建立通信连接的过程具体可以包括:第二终端设备向服务器发送注册请求,注册请求包括第二终端设备的设备信息;服务器对该注册请求进行验证,验证通过后,获取注册请求中的设备信息,将设备信息添加到设备信息库中,并向第二终端设备注册成功确认信息;第二终端设备当第二终端设备接收到注册成功确认信息时,建立与所述服务器之间的通信连接,并向用户展示注册成功确认信息。这样,第二终端设备对应的用户只需要在第二终端设备闲置时,将第二终端设备的设备信息通过无线网络注册到服务器,就能与服务器建立通信连接,从而被服务器控制使用来对待测应用程序进行测试,而在非云测时间第二终端设备则可用于他用,设备可用率大大提升。
可选的,本说明书实施例中,注册请求除了包括设备信息以外,还可以包括但不限于用户名以及密码,以便于后续可以通过用户名以及密码执行登录操作,与服务器建立通信连接。
可以理解的是,第二终端设备与服务器之间建立通信连接之后,服务器就可以对建立连接的第二终端设备进行管理。此时,服务器可以监听第二终端设备的当前状态,并根据监听到的第二终端设备的当前状态更新预先设置的状态信息表。其中,状态信息表中存储有注册到服务器的第二终端设备对应的状态信息。第二终端设备的当前状态为空闲状态或忙碌状态,只有处于空闲状态的第二终端设备才能用于执行测试任务。
举例来讲,当第二终端设备为智能手机时,以安装有安卓***的智能手机为例,可以利用AccessibilityService监听第二用户是否在第二终端设备上执行用户操作如点击操作界面,若是,表明第二终端设备处于忙碌状态,若否,表明第二终端设备处于空闲状态。
可选的,本说明书实施例提供的应用程序测试方法除了包括第一测试过程以外,还可以包括第二测试过程,以实现一机多控的效果,便于用户通过对第二终端设备进行实时控制,来实现对待测应用程序的测试。用户可以根据需求选择采用第一测试过程还是第二测试过程。具体来讲,第二测试过程为第一终端设备与获取目标测试设备之间建立通信连接后,由第一终端设备控制目标测试设备执行相应的第二用户操作,以实现对待测应用程序的测试。如图3所示,第二测试过程至少可以包括步骤S301-步骤S302:
步骤S301,检测所述用户是否触发第二预设指令,当所述用户触发第二预设指令时,建立与目标测试设备之间的通信连接,其中,所述目标测试设备包括一个或多个当前处于空闲状态的第二终端设备。
本说明书实施例中,第二预设指令用于开启第二测试过程。举例来讲,用户可以通过触发用于启动第二测试过程的按钮触发第二预设指令。
当用户触发第二预设指令时,第一终端设备进入第二测试过程。具体来讲,建立与目标测试设备之间的通信连接的具体实施过程可以包括:获取目标测试设备的设备信息;基于目标测试设备的设备信息,向目标测试设备发送通信连接请求,以建立与目标测试设备之间的通信连接。
作为一种可选的实施方式,上述获取目标测试设备的设备信息的具体过程可以包括:向服务器发送设备信息获取请求;接收服务器基于设备信息获取请求反馈的目标测试设备的设备信息。
在具体实施过程中,上述向服务器发送设备信息获取请求的方式有多种,下面列举其中的两种进行介绍,当然,在具体实施过程中,不限于以下两种情况,另外,在不冲突的情况下,以下两种情况可以组合使用。
第一种,可以获取并展示服务器下发的可用设备列表,可用设备列表中包括多个当前处于空闲状态的第二终端设备的标识信息。此时,用户可以根据测试需求从可用设备列表中选择一个或多个第二终端设备。然后,基于用户对可用设备列表中的一个或多个第二终端设备的触发操作,从可用设备列表中确定目标测试设备。接着,基于目标测试设备的标识信息,生成设备信息获取请求;将设备信息获取请求发送到服务器,以使得服务器可以基于目标测试设备的标识信息在设备信息库中查找目标测试设备的设备信息,并向第一终端设备反馈目标测试设备的设备信息。
本说明书实施例中,标识信息用于唯一标识将设备信息注册到服务器的终端设备,具体根据实际需要设置,不同终端设备的标识信息不同。例如,标识信息可以是服务器基于注册到服务器的终端设备的机型配置信息如品牌、操作***、内存以及分辨率等为终端设备定义的名称。
第二种,服务器可以预先对注册到服务器的且当前处于空闲状态的第二终端设备进行分组,生成分组列表。分组列表中每个分组包括一个或多个当前处于空闲状态的第二终端设备的标识信息。具体分组方式可以根据实际需要设置,例如可以随机进行分组,或者,也可以按照目前的测试需求进行分组。当用户触发第二预设指令时,第一终端设备可以从服务器获取并展示分组列表,此时,用户可以根据需要从分组列表中选择一个分组作为目标分组。基于用户从分组列表中选择的目标分组,生成设备信息获取请求并将设备信息获取请求发送给服务器。此时,目标分组中包括的第二终端设备即为目标测试设备。服务器将目标分组中包括的第二终端设备的设备信息反馈给第一终端设备。
当然,在本说明书其他实施例中,也可以采用其他方式获取目标测试设备的设备信息,例如,用户可以直接在第一终端设备中添加一个或多个设备信息,将这些设备信息对应的第二终端设备作为目标测试设备。
举例来讲,在获取到目标测试设备的设备信息的情况下,第一终端设备可以通过Socket通信协议与目标测试设备之间建立通信连接。当然,在本说明书其他实施例中,第一终端设备也可以采用其他通信协议与目标测试设备之间建立通信连接。
可以理解的是,当目标测试设备包括多个第二终端设备时,第一终端设备需要向目标测试设备中每个第二终端设备均发送通信连接请求,从而与目标测试设备中每个第二终端设备均建立通信连接。
步骤S302,监听所述用户对所述待测应用程序执行的第二用户操作,当监听到所述第二用户操作时,控制所述目标测试设备对所述待测应用程序执行与所述第二用户操作相同的操作,以实时对所述待测应用程序进行测试。
举例来讲,当第一终端设备为智能手机时,以安装有安卓***的智能手机为例,可以利用AccessibilityService监听用户通过第一终端设备对待测应用程序执行的第二用户操作。
用户每对待测应用程序执行一步操作,就实时控制目标测试设备执行同样的操作,当目标测试设备完成该操作时,用户再对待测应用程序执行下一步操作。例如,当监听到用户从指定存储位置下载待测应用程序,并在第一终端设备中安装下载的待测应用程序时,则控制目标测试设备从指定存储位置下载待测应用程序,并在目标测试设备中安装下载的待测应用程序;当监听到用户触发待测应用程序的登录按钮时,则控制目标测试设备执行触发待测应用程序的登录按钮的操作。例如,可以利用ADB(Android Debug Bridge,Android调试桥)实现非Root环境下高权限操作,控制目标测试设备执行与第一终端设备同样的操作。
具体来讲,上述控制所述目标测试设备对所述待测应用程序执行与所述第二用户操作相同的操作的过程可以包括:针对监听到的每个第二用户操作,执行以下步骤:将所述第二用户操作转换为实时指令,并发送给所述目标测试设备,以使得所述目标测试设备执行所述实时指令;接收所述目标测试设备反馈的对所述实时指令的执行结果。其中,执行结果可以是完成或未完成,对于目标测试设备中的每个第二终端设备,当完成实时指令时,该实时指令的执行结果为完成,当未完成实时指令时,该实时指令的执行结果为未完成。
作为一种可选的实施方式,第二测试过程还可以包括:步骤S303,当检测到所述用户触发的第三预设指令,向所述目标测试设备发送结束指令,以结束本次测试。
上述步骤S303在上述步骤S302之后执行,即在需要结束第二测试过程时执行。需要说明的是,结束本次测试后,可以控制目标测试设备执行初始化操作,即使得目标测试设备恢复到执行测试任务之前的状态,例如,初始化操作可以包括卸载在执行测试任务过程中安装的应用程序和/或删除执行测试任务过程中生成的相关日志数据等。
在一种具体应用场景中,在用户通过第一终端设备执行第二测试过程时,第一终端设备与目标测试设备中的每个第二终端设备均可以建立Socket通信连接。如图4所示,Socket通信过程具体可以包括:第一终端设备向第二终端设备发送FIND请求申请建立连接;第二终端设备向主机返回CONNECT表示确认建立连接;第一终端设备向第二终端设备发送ASSIGN设置从机角色;第一终端设备向第二终端设备发送REALTIME_COMMAND消息,通知第二终端设备进行实时操作,第二终端设备向第一终端设备发送REALTIME_RESULT消息,返回执行结果;第一终端设备接收到REALTIME_RESULT消息后,继续向第二终端设备发送下一条REALTIME_COMMAND消息,以此类推,直至第一终端设备向第二终端设备发送REALTIME_FINISH消息,通知第二终端设备结束实时操作。
本说明书实施例提供的应用程序测试方法,极大地方便了用户录制测试脚本,有利于简化用户操作。此外,第二终端设备通过将设备信息注册到服务器,实现与服务器之间的通信连接,相比于通过数据线连接的方式,设备管理更加灵活,有利于提高资源的利用率。
第二方面,本说明书实施例提供了一种应用程序测试方法,本实施例为第二终端设备所执行的应用程序测试方法。请参见图5,本说明书实施例提供的应用程序测试方法至少可以包括以下步骤S501-步骤S503。
步骤S501,向服务器发送注册请求,所述注册请求包括第二终端设备的设备信息,以使得所述服务器将所述设备信息存储在预先设置的设备信息库中。
步骤S502,当接收到所述服务器基于所述注册请求反馈的注册成功确认信息时,建立所述第二终端设备与所述服务器之间的通信连接。
可以理解的是,第二终端设备与服务器之间建立通信连接之后,服务器需要能够实时获取第二终端设备的当前状态,以便于为第二终端设备分配测试任务。因此,本说明书实施例提供的应用程序测试方法还包括:监听所述第二终端设备的当前状态,所述当前状态为空闲状态或忙碌状态;将所述当前状态发送给所述服务器,以使得所述服务器根据所述当前状态更新预先设置的状态信息表,所述状态信息表存储有注册到所述服务器的第二终端设备对应的状态信息。具体实施过程可以参照上述第一方面中的相应描述,此处不再赘述。
步骤S503,当接收到所述服务器下发的对应于待测应用程序的测试脚本时,执行所述测试脚本。
具体来讲,步骤S501至步骤S503的具体实施过程可以参照上述第一方面中的相应描述,此处不再赘述。
可以理解的是,上述步骤S503中,第二终端设备被用于执行上述第一方面所述的第一测试过程。第二终端设备执行完测试脚本后,会得到测试脚本对应的运行结果以及相关日志数据,并将运行结果以及日志数据发送给服务器,以便于服务器向用户展示测试结果。
本说明书实施例中,服务器与用于执行测试脚本的第二终端设备之间通过无线网络进行通信连接,第二终端设备对应的用户只需要在第二终端设备闲置时,将第二终端设备的设备信息通过无线网络注册到服务器,就能与服务器建立通信连接,从而被服务器控制使用来对待测应用程序进行测试,而在非云测时间第二终端设备则可用于他用,设备可用率大大提升。
可选的,注册到服务器的第二终端设备还可以用于执行上述第一方面所述的第二测试过程。如图6所示,本说明书实施例提供的应用程序测试方法还可以包括以下步骤S601-步骤S602。
步骤S601,当接收到第一终端设备发送的通信连接请求时,基于所述通信连接请求建立与所述第一终端设备之间的通信连接;
步骤S602,控制所述第二终端设备对所述待测应用程序执行与所述第一终端设备监听到的第二用户操作相同的操作,以实时对所述待测应用程序进行测试。
具体来讲,控制所述第二终端设备对所述待测应用程序执行与所述第一终端设备监听到的第二用户操作相同的操作的过程可以包括:当接收到所述第一终端设备发送的实时指令时,控制所述第二终端设备执行所述实时指令,并得到对所述实时指令的执行结果;将所述执行结果返回给所述第一终端设备。具体实施过程可以参照上述第一方面的相关描述,此处不再赘述。
为了便于用户获取第二测试过程的测试结果,可选的,上述控制所述第二终端设备对所述待测应用程序执行与所述第一终端设备监听到的第二用户操作相同的操作之后,还包括:生成测试结果,并将所述测试结果发送给所述服务器,以使得所述服务器将所述测试结果展示给所述用户。其中,测试结果可以根据具体测试需求确定,例如,测试结果可以包括界面截图,第二终端设备每跟随第一终端设备执行一步操作,就对操作界面进行截图并保存,以便于用于可以获得第二终端设备跟随第一终端设备执行的每一步操作的执行情况。
作为一种可选的实施方式,在图6所示的应用程序测试方法的基础上,该方法还可以包括:步骤S603,当接收到所述第一终端设备发送的结束指令时,结束本次测试。
可选的,根据实际应用场景需要,也可以将一个第二终端设备设置为主控机,通过从服务器获取需要控制的从机的设备信息,用户通过主控机控制从机的方式实现对待测应用程序的测试。此时,本说明书实施例提供的应用程序测试方法还可以包括:当检测到用户触发的第四预设指令时,将第二终端设备设置为主控机,并建立所述主控机与从机之间的通信连接;监听用户对待测应用程序执行的第三用户操作,当监听到所述第三用户操作时,控制所述从机对所述待测应用程序执行与所述第三用户操作相同的操作,以实时对所述待测应用程序进行测试。其中,所述从机包括一个或多个预先将设备信息注册到所述服务器且当前处于空闲状态的其他第二终端设备。可以理解的是,其他第二终端设备不包括设置为主控机的第二终端设备。进一步地,当检测到所述用户触发的第五预设指令时,向所述从机发送结束指令,以结束本次测试。
具体来讲,建立所述主控机与从机之间的通信连接可以包括:向服务器发送设备信息获取请求,以使得服务器基于设备信息获取请求下发从机的设备信息;接收所述服务器下发的从机的设备信息,基于所述从机的设备信息,向所述从机发送通信连接请求,以建立与所述从机之间的通信连接。
需要说明的是,上述将第二终端设备作为主控机,用户通过主控机控制从机的方式实现对待测应用程序的测试的具体实施过程与用户通过第一终端设备控制目标测试设备的实施过程类似,具体可以参照上述第一方面中的相应描述,此处不再赘述。
本说明书实施例中,无论是用户通过第一终端设备控制目标测试设备的方式,还是用户将一个第二终端设备设置为主控机,通过主控机控制从机的方式来实现对待测应用程序的测试,测试主控方均可以不再是指定服务器,提升了设备管理的容灾能力。
第三方面,本说明书实施例提供了一种应用程序测试方法,本实施例为服务器所执行的应用程序测试方法。请参见图7,本说明书实施例提供的应用程序测试方法至少可以包括以下步骤S701-步骤S702。
步骤S701,当接收到第一终端设备发送的测试脚本时,基于所述测试脚本,确定一个或多个当前处于空闲状态的第二终端设备,其中,所述第二终端设备为预先通过向所述服务器发送注册请求与所述服务器之间建立通信连接的终端设备;
步骤S702,将所述测试脚本发送给所述一个或多个当前处于空闲状态的第二终端设备,以使得所述第二终端设备执行所述测试脚本。
具体来讲,第二终端设备预先通过将设备信息注册到所述服务器与所述服务器建立通信连接的过程具体可以包括:接收第二终端设备发送的注册请求,注册请求包括第二终端设备的设备信息;对所述注册请求进行验证,当验证通过时,将所述设备信息存储在预先设置的设备信息库中,并向所述第二终端设备反馈注册成功确认信息,以建立所述第二终端设备与所述服务器之间的通信连接。
可以理解的是,第二终端设备与服务器之间建立通信连接之后,服务器就可以对建立连接的第二终端设备进行管理。此时,服务器可以接收第二终端设备反馈的当前状态,所述当前状态为空闲状态或忙碌状态,并根据第二终端设备的当前状态更新预先设置的状态信息表。其中,状态信息表中存储有注册到服务器的第二终端设备对应的状态信息。需要说明的是,只有处于空闲状态的第二终端设备才能用于执行测试任务。此时,服务器可以根据状态信息表确定一个或多个当前处于空闲状态的第二终端设备。
作为一种可选的实施方式,服务器可以基于所述状态信息表生成可用设备列表。可用设备列表包括多个当前处于空闲状态的第二终端设备。需要说明的是,可用设备列表可以是在接收到第一终端设备发送的请求时,实时生成的,具有即时性。
同理,在第一终端设备向服务器发送测试脚本之前,需要先建立第一终端设备与服务器之间的通信连接。因此,本说明书实施例提供的应用程序测试方法还包括:接收第一终端设备发送的注册请求,注册请求包括第一终端设备的设备信息;对所述注册请求进行验证,当验证通过时,将所述设备信息存储在预先设置的设备信息库中,并向所述第一终端设备反馈注册成功确认信息,以建立所述第一终端设备与所述服务器之间的通信连接。
本说明书实施例中,设备信息可以包括IP地址。可选的,设备信息还可以包括但不限于机型配置信息,例如,机型配置信息可以包括品牌、分辨率、内存以及操作***的版本等。
可选的,用户可以通过第一终端设备执行上述第一方面所述的第二测试过程。当用户通过第一终端设备执行上述第二测试过程时,本说明书实施例提供的应用程序测试方法还包括:当接收到所述第一终端设备发送的设备信息获取请求时,基于所述设备信息获取请求向所述第一终端设备反馈目标测试设备的设备信息。具体实施过程可以参照上述第一方面中的相应描述,此处不再赘述。
可选的,用户还可以根据实际应用场景需要,将一个第二终端设备设置为主控机。此时,作为主控机的第二终端设备会向服务器请求从机的设备信息。这种情况下,本说明书实施例提供的应用程序测试方法还包括:当接收到第二终端设备发送的设备信息获取请求时,基于设备信息获取请求向该第二终端设备反馈从机的设备信息。其中,从机包括一个或多个预先将设备信息注册到服务器且当前处于空闲状态的其他第二终端设备。
本说明书实施例提供的应用程序测试方法,极大地方便了用户录制测试脚本,有利于简化用户操作。此外,第二终端设备通过将设备信息注册到服务器,实现与服务器之间的通信连接,相比于通过数据线连接的方式,设备管理更加灵活,有利于提高资源的利用率。
第四方面,基于与第一方面提供的应用程序测试方法同一发明构思,本说明书实施例还提供了一种应用程序测试装置,本实施例提供的装置可运行于第一终端设备。请参考图8,该应用程序测试装置81可以包括:
第一检测模块811,用于检测用户是否触发第一预设指令;
脚本生成模块812,用于当检测到所述用户触发第一预设指令时,监听所述用户通过所述第一终端设备对待测应用程序执行的第一用户操作,并基于所述第一用户操作生成测试脚本;
第一脚本发送模块813,用于将所述测试脚本发送到服务器,以使得所述服务器将所述测试脚本发送给一个或多个当前处于空闲状态的第二终端设备执行,其中,所述第二终端设备为预先通过将设备信息注册到所述服务器与所述服务器建立通信连接的终端设备。
作为一种可选的实施方式,该应用程序测试装置81还包括:
第一注册模块,用于向所述服务器发起注册请求,所述注册请求包括所述第一终端设备的设备信息,以使得所述服务器将所述设备信息存储在预先设置的设备信息库中;当接收到所述服务器基于所述注册请求反馈的注册成功确认信息时,建立所述第一终端设备与所述服务器之间的通信连接。
作为一种可选的实施方式,该应用程序测试装置81还包括:
第二检测模块814,用于检测所述用户是否触发第二预设指令,当所述用户触发第二预设指令时,建立与目标测试设备之间的通信连接,其中,所述目标测试设备包括一个或多个当前处于空闲状态的第二终端设备;
第一控制模块815,用于监听所述用户对所述待测应用程序执行的第二用户操作,当监听到所述第二用户操作时,控制所述目标测试设备对所述待测应用程序执行与所述第二用户操作相同的操作,以实时对所述待测应用程序进行测试。
作为一种可选的实施方式,第二检测模块814包括:获取子模块8141,用于获取所述目标测试设备的设备信息;连接子模块8142,用于基于所述目标测试设备的设备信息,向所述目标测试设备发送通信连接请求,以建立与所述目标测试设备之间的通信连接。
作为一种可选的实施方式,所述获取子模块8141用于:向所述服务器发送设备信息获取请求;接收所述服务器基于所述设备信息获取请求反馈的所述目标测试设备的设备信息。
作为一种可选的实施方式,所述获取子模块8141用于:获取并展示所述服务器下发的可用设备列表,所述可用设备列表包括多个当前处于空闲状态的第二终端设备的标识信息;基于所述用户对所述可用设备列表中的一个或多个第二终端设备的触发操作,从所述可用设备列表中确定所述目标测试设备;基于所述目标测试设备的标识信息,生成设备信息获取请求并将所述设备信息获取请求发送到所述服务器。
作为一种可选的实施方式,该应用程序测试装置81还包括:第一结束模块,用于当检测到所述用户触发的第三预设指令时,向所述目标测试设备发送结束指令,以结束本次测试。
作为一种可选的实施方式,所述第一控制模块815具体用于:针对监听到的每个第二用户操作,执行以下步骤:将所述第二用户操作转换为实时指令,并发送给所述目标测试设备,以使得所述目标测试设备执行所述实时指令;接收所述目标测试设备反馈的对所述实时指令的执行结果。
需要说明的是,本说明书实施例所提供的应用程序测试装置81,其中各个单元执行操作的具体方式已经在上述第一方面提供的方法实施例中进行了详细描述,此处将不做详细阐述说明。
第五方面,基于与第二方面提供的应用程序测试方法同一发明构思,本说明书实施例还提供了一种应用程序测试装置,本实施例提供的装置可运行于第二终端设备。请参考图9,该应用程序测试装置82可以包括:
第二注册模块821,用于向服务器发送注册请求,所述注册请求包括第二终端设备的设备信息,以使得所述服务器将所述设备信息存储在预先设置的设备信息库中;
第一连接模块822,用于当接收到所述服务器基于所述注册请求反馈的注册成功确认信息时,建立所述第二终端设备与所述服务器之间的通信连接;
执行模块823,用于当接收到所述服务器下发的对应于待测应用程序的测试脚本时,执行所述测试脚本。
作为一种可选的实施方式,该应用程序测试装置82还包括:
第二连接模块824,用于当接收到第一终端设备发送的通信连接请求时,基于所述通信连接请求建立与所述第一终端设备之间的通信连接;
第二控制模块825,用于控制所述第二终端设备对所述待测应用程序执行与所述第一终端设备监听到的第二用户操作相同的操作,以实时对所述待测应用程序进行测试。
作为一种可选的实施方式,该应用程序测试装置82还包括:第二结束模块,用于当接收到所述第一终端设备发送的结束指令时,结束本次测试。
作为一种可选的实施方式,所述第二控制模块825具体用于:当接收到所述第一终端设备发送的实时指令时,控制所述第二终端设备执行所述实时指令,并得到对所述实时指令的执行结果;将所述执行结果返回给所述第一终端设备。
作为一种可选的实施方式,该应用程序测试装置82还包括:测试结果生成模块,用于生成测试结果,并将所述测试结果发送给所述服务器,以使得所述服务器将所述测试结果展示给所述用户。
作为一种可选的实施方式,该应用程序测试装置82还包括:
状态监听模块,用于监听所述第二终端设备的当前状态,所述当前状态为空闲状态或忙碌状态;
状态发送模块,用于将所述当前状态发送给所述服务器,以使得所述服务器根据所述当前状态更新预先设置的状态信息表,所述状态信息表存储有注册到所述服务器的第二终端设备对应的状态信息。
作为一种可选的实施方式,该应用程序测试装置82还包括:
设置模块,用于当检测到用户触发的第四预设指令时,将所述第二终端设备设置为主控机,并建立所述主控机与从机之间的通信连接,其中,所述从机包括一个或多个预先将设备信息注册到所述服务器且当前处于空闲状态的其他第二终端设备;
第三控制模块,用于监听用户对待测应用程序执行的第三用户操作,当监听到所述第三用户操作时,控制所述从机对所述待测应用程序执行与所述第三用户操作相同的操作,以实时对所述待测应用程序进行测试。
作为一种可选的实施方式,所述设置模块用于:向所述服务器发送设备信息获取请求,以使得所述服务器基于所述设备信息获取请求下发从机的设备信息;接收所述服务器下发的从机的设备信息,基于所述从机的设备信息,向所述从机发送通信连接请求,以建立与所述从机之间的通信连接。
作为一种可选的实施方式,该应用程序测试装置82还包括:第三结束模块,用于当检测到所述用户触发的第五预设指令时,向所述从机发送结束指令,以结束本次测试。
需要说明的是,本说明书实施例所提供的应用程序测试装置82,其中各个单元执行操作的具体方式已经在上述第二方面提供的方法实施例中进行了详细描述,此处将不做详细阐述说明。
第六方面,基于与第三方面提供的应用程序测试方法同一发明构思,本说明书实施例还提供了一种应用程序测试装置,本实施例提供的装置可运行于服务器。请参考图10,该应用程序测试装置83可以包括:
脚本接收模块831,用于当接收到第一终端设备发送的测试脚本时,基于所述测试脚本,确定一个或多个当前处于空闲状态的第二终端设备,其中,所述第二终端设备为预先通过向所述服务器发送注册请求与所述服务器之间建立通信连接的终端设备;
第二脚本发送模块832,用于将所述测试脚本发送给所述一个或多个当前处于空闲状态的第二终端设备,以使得所述第二终端设备执行所述测试脚本。
作为一种可选的实施方式,该应用程序测试装置83还包括:
注册请求接收模块833,用于接收第二终端设备发送的注册请求,注册请求包括第二终端设备的设备信息;
第三注册模块834,用于对所述注册请求进行验证,当验证通过时,将所述设备信息存储在预先设置的设备信息库中,并向所述第二终端设备反馈注册成功确认信息,以建立所述第二终端设备与所述服务器之间的通信连接。
作为一种可选的实施方式,该应用程序测试装置83还包括:
状态接收模块,用于接收第二终端设备反馈的当前状态,所述当前状态为空闲状态或忙碌状态;
状态更新模块,用于根据所述当前状态更新预先设置的状态信息表,所述状态信息表存储有注册到所述服务器的第二终端设备对应的状态信息。
作为一种可选的实施方式,该应用程序测试装置83还包括:列表生成模块,用于基于所述状态信息表生成可用设备列表,所述可用设备列表包括多个当前处于空闲状态的第二终端设备。
需要说明的是,本说明书实施例所提供的应用程序测试装置83,其中各个单元执行操作的具体方式已经在上述第三方面提供的方法实施例中进行了详细描述,此处将不做详细阐述说明。
第七方面,基于同一发明构思,如图11所示,本说明书实施例还提供了一种云测试***90,包括:服务器91、第一终端设备92以及一个或多个第二终端设备93。
其中,第一终端设备92,用于检测用户是否触发第一预设指令;当检测到所述用户触发第一预设指令时,监听所述用户通过所述第一终端设备对待测应用程序执行的第一用户操作,并基于所述第一用户操作生成测试脚本;将所述测试脚本发送到服务器91;
服务器91,用于基于所述测试脚本,确定一个或多个当前处于空闲状态的第二终端设备93;将所述测试脚本发送给所述一个或多个当前处于空闲状态的第二终端设备93;其中,所述第二终端设备93为预先通过向所述服务器91发送注册请求与所述服务器91之间建立通信连接的终端设备;
第二终端设备93,用于当接收到对应于待测应用程序的测试脚本时,执行所述测试脚本。
需要说明的是,本说明书实施例所提供的云测试***90中,第一终端设备92用于执行上述第一方面提供的应用程序测试方法,第二终端设备93用于执行上述第二方面提供的应用程序测试方法,服务器91用于执行上述第三方面提供的应用程序测试方法,具体实现及产生的技术效果和前述方法实施例相同,为简要描述,本实施例未提及之处可参考前述方法实施例中相应内容。
第八方面,基于同一发明构思,本发明还提供一种电子设备,如图12所示,包括存储器904、一个或多个处理器902及存储在存储器904上并可在处理器902上运行的计算机程序。当处理器902执行所述计算机程序时实现上述第一方面提供的应用程序测试方法或上述第二方面提供的应用程序测试方法或上述第三方面提供的应用程序测试方法的步骤。
其中,在图12中,总线架构(用总线900来代表),总线900可以包括任意数量的互联的总线和桥,总线900将包括由处理器902代表的一个或多个处理器和存储器904代表的存储器的各种电路链接在一起。总线900还可以将诸如***设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口905在总线900和接收器901和发送器903之间提供接口。接收器901和发送器903可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器902负责管理总线900和通常的处理,而存储器904可以被用于存储处理器902在执行操作时所使用的数据。
可以理解的是,图12所示的结构仅为示意,上述电子设备还可包括比图12中所示更多或者更少的组件,或者具有与图12所示不同的配置。图12中所示的各组件可以采用硬件、软件或其组合实现。
第九方面,基于与前述第一方面提供的实施例中应用程序测试方法同样的发明构思,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文第一方面提供的应用程序测试方法的步骤。
第十方面,基于与前述第二方面提供的实施例中应用程序测试方法同样的发明构思,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文第二方面提供的应用程序测试方法的步骤。
第十一方面,基于与前述第三方面提供的实施例中应用程序测试方法同样的发明构思,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文第三方面提供的应用程序测试方法的步骤。
本说明书是参照根据本说明书实施例的方法、设备、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本说明书的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本说明书范围的所有变更和修改。
显然,本领域的技术人员可以对本说明书进行各种改动和变型而不脱离本说明书的精神和范围。这样,倘若本说明书的这些修改和变型属于本说明书权利要求及其等同技术的范围之内,则本说明书也意图包含这些改动和变型在内。