一种测试请求处理方法及装置
技术领域
本发明涉及软件测试技术领域,尤其涉及一种测试请求处理方法及装置。
背景技术
智能家居系统的硬件组成中一般包括云平台、移动终端和智能设备。云平台运行于服务器上,用于远程接入、控制设备、账户管理、云存储和数据统计分析。移动终端上设置有控制软件。如图1所示,移动终端侧的控制软件通常具有内部的分层结构:从上到下分别为APP应用层、开发SDK的客户端(Client)层、开发SDK的服务器(Server)层。此种软件分层结构用于区分软件自上而下的层次调用,通过分层达到解构复杂软件的依赖关系,进行模块划分。其中移动终端使用测试代码调用测试目标的API,进行功能和性能测试,并验证测试结果是否正确及性能是否达标。
在上述系统中基于配置文件的自动化测试都是根据配置文件与测试目标软件的应用程序编程接口(Application Programming Interface,简称API)对应关系,配置好调用顺序及参数,从而进行软件调用测试并验证测试结果是否正确。但它仅能对测试目标软件系统进行完整的统一测试,无法从目标系统中拆分出独立的部分进行单独测试和验证,例如无法对分层架构的软件系统中的某一层进行单独测试和验证。现有技术中必须提供各层级软件所组成的整体系统才能进行测试的方式,费事费力,容易受外部环境干扰,无法满足对系统中某一部分进行单独测试的需求。
同时,现在的软件系统会比较复杂,在架构上拆分成不同的模块,整个系统并由不同的小组或团队并行开发,测试联调需要各个团队进行进度同步,当系统还不完善时,各个模块的测试经常会受限于其所依赖的其他模块的功能和质量的不完善,而无法进行充分的测试;当各个团队进度不同步时,还会影响到软件的并行开发速度,互相牵制。
发明内容
为了解决上述技术问题,本发明提供了一种针对客户端层进行自动化测试的方法及装置。
本发明提供的测试请求处理方法包括:
测试设备从移动终端接收所述移动终端上的应用软件发送的第一测试请求消息,其中所述第一测试请求消息是所述移动终端向服务器发送的远程操作请求信息;
所述测试设备读取与所述测试请求消息对应的第一测试响应文件,其中所述测试响应文件为服务器对所述远程操作请求信息处理的处理策略;
所述测试设备根据此第一测试响应文件生成符合预设格式的第一测试响应消息,将此第一测试响应消息发送至所述移动终端。
上述测试请求处理方法还具有以下特点:
所述测试设备从移动终端接收所述移动终端上的应用软件发送的第一测试请求消息之前,还包括:所述测试设备与移动终端建立无线连接。
上述测试请求处理方法还具有以下特点:
所述方法还包括:
所述测试设备获取预先存储的消息生成策略,根据所述消息生成策略生成第二测试请求消息,其中所述第二测试请求消息是所述服务器向所述移动终端发送的远程操作请求消息;
所述测试设备向所述移动终端发送第二测试请求消息;
所述测试设备从所述移动终端接收所述第二测试响应消息。
上述测试请求处理方法还具有以下特点:
所述预设格式为字符串格式。
上述测试请求处理方法还具有以下特点:
所述字符串格式为JAVA脚本对像标识JSON。
本发明还提供了一种测试请求处理装置,应用于测试设备,此处理装置包括:通信模块、读取模块和生成模块;
通信模块,用于从移动终端接收所述移动终端上应用软件发送的第一测试请求消息,其中所述第一测试请求消息是所述移动终端向服务器发送的远程操作请求信息;还用于将所述生成模块生成的第一测试响应消息发送至所述移动终端;
读取模块,用于读取与所述测试请求消息对应的第一测试响应文件,其中所述测试响应文件为服务器对所述远程操作请求信息处理的处理策略;
第一生成模块,用于根据此第一测试响应文件生成符合预设格式的第一测试响应消息。
上述测试请求处理装置还具有以下特点:
所述通信模块用于从移动终端接收所述移动终端上的应用软件发送的第一测试请求消息之前与所述移动终端建立无线连接。
上述测试请求处理装置还具有以下特点:
存储模块,用于存储消息生成策略;
第二生成模块,用于获取所述消息生成策略,根据所述消息生成策略生成第二测试请求消息,其中所述第二测试请求消息是所述服务器向所述移动终端发送的远程操作请求消息;
所述通信模块,用于向所述移动终端发送第二测试请求消息,还用于从所述移动终端接收所述第二测试响应消息。。
上述测试请求处理装置还具有以下特点:
所述预设格式为字符串格式。
上述测试请求处理装置还具有以下特点:
所述字符串格式为JAVA脚本对像标识JSON。
本发明在分层结构的复杂软件系统中针对“开发SDK的客户端层”代码的自动化测试,解耦复杂软件系统中的上层代码,摆脱测试复杂软件系统时各个组成部分的整体依赖,剥离测试目标软件模块所依赖的其他软硬件环境,在测试时不需要与智能设备和云平台进行通信,解除了对智能设备和云平台的限制。本发明在实现快速且有针对性的局部软件模块的自动化测试的同时,在测试时仅依赖于测试目标软件模块,当测试目标软件和其所依赖的其他软硬件进行并行开发时,其测试的范围和进度仅受限于测试目标软件模块,而不受其所依赖的其他软硬件的开发进度影响。
本发明还具有以下优点:
1、测试目标明确,测试环境部署简单。
2、测试消息的响应不依赖于真实的硬件反馈,可随意模拟不同的响应结果,从而充分验证测试目标软件在各种情况下的正确运行。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是现有技术中的测试方案的分层结构示意图;
图2是实施例中测试方案的分层结构示意图;
图3是实施例中针对客户端层进行自动化测试装置中测试服务程序模块的结构图;
图4是实施例中针对客户端层进行自动化测试方法的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
如图2所示,在分层结构上,本发明中使用运行于测试设备(例如PC机)中的模拟测试环境替代现有技术的测试目标依赖的其他软硬件。整个结构中包括测试模块和测试目标软件模块,以及测试服务程序模块。其中,测试模块和测试目标软件模块位于移动终端内,测试服务程序模块位于测试设备(例如PC机)内。
其中,
测试模块用于测试目标软件模块发送接口调用请求;还用于从所述测试目标软件模块接收接口调用结果,根据此接口调用结果生成测试结论;
测试目标软件模块用于接收接口调用请求后,根据所述调用接口请求建立符合预设格式的调用接口请求消息,向测试服务程序模块发送此调用接口请求消息;用于从测试服务程序模块接收响应消息后,根据所述响应消息生成接口调用结果并发送至所述测试模块;
测试服务程序模块使用测试服务程序模拟分层结构软件系统中测试目标依赖的模拟测试环境提供各种约定好的消息处理及响应。如图3所示,测试服务程序模块包括接收模块、读取模块、响应消息构建模块和发送模块。
接收模块用于从移动终端接收针对智能设备的符合预设格式的调用接口请求消息;
读取模块用于从预先生成的配置文件中读取与所述调用接口请求消息对应的响应文件;
响应消息构建模块用于根据此响应文件生成符合所述预设格式的响应消息;
发送模块用于将此响应消息发送至所述移动终端。
其中,预设格式为字符串格式,字符串格式典型为JAVA脚本对像标识JSON。
此装置还包括配置文件生成模块和配置文件存储模块。此配置文件生成模块位于测试设备内。配置文件生成模块用于为各调用接口请求消息创建相应的响应文件并存储至所述配置文件,所述调用接口请求消息包括不同场景下的不同接口的调用接口请求消息。配置文件包括不同场景下的不同接口的调用接口请求消息下的调用接口请求消息以及与此调用接口请求消息对应的响应信息。此配置文件生成模块事先为不同场景下的不同接口的调用接口请求消息生成相应的响应文件,可以通过响应文件生成模块进行灵活设置和定义。
发送模块还用于向所述移动终端发送测试请求消息;接收模块还用于从所述移动终端接收对此测试请求消息的响应。
测试模块还用于调用所述测试目标软件模块的启动接口,所述启动接口包括连接参数;其中,连接参数包括IP和/或端口。测试目标软件模块还用于接收所述测试模块对所述启动接口的调用后,根据所述连接参数与所述测试服务程序模块建立连接。此启动接口为启动SDK接口。测试代码模块通过调用测试目标代码模块的启动接口与测试服务程序模块进行连接,从而实现对多层结构的软件系统进行测试时,仅依赖于客户端测试目标代码的实现,摆脱了对下层服务器侧代码以及对测试设备及云平台的依赖。达到了对客户端层进行独立测试且不依赖其他软件模块的目的。
图4是针对客户端自动化测试的方法的流程图,此方法的执行主体为上述装置中测试服务模块,此方法包括:
步骤401,从移动终端接收针对智能设备的符合预设格式的调用接口请求消息;
步骤402,从预先生成的配置文件中读取与所述调用接口请求消息对应的响应文件;
步骤403,根据此响应文件生成符合所述预设格式的响应消息;
步骤404,将此响应消息发送至所述移动终端。
其中,
本方法中的配置文件是提前生成的,相应的,步骤401前还包括:为各调用接口请求消息创建相应的响应文件并存储至所述配置文件,所述调用接口请求消息包括不同场景下的不同接口的调用接口请求消息。
为了在需要测试时触发移动终端发送测试请求,步骤401之前还包括:向所述移动终端发送测试请求消息,从所述移动终端接收对此测试请求消息的响应。
步骤401前还包括:测试模块调用所述测试目标软件模块的启动接口,所述启动接口包括连接参数,所述测试目标软件模块接收所述测试模块对所述启动接口的调用后,根据所述连接参数与所述测试服务程序模块建立连接;所述连接参数包括IP和/或端口。此连接典型为传输控制协议(Transmission Control Protocol,简称TCP)连接。测试代码模块通过调用测试目标代码模块的启动接口与测试服务程序模块进行连接,从而实现对多层结构的软件系统进行测试时,仅依赖于客户端测试目标代码的实现,摆脱了对下层服务器侧代码以及对测试设备及云平台的依赖,达到了对客户端层进行独立测试且不依赖其他软件模块的目的。
本方法中,预设格式为字符串格式。此字符串格式典型为JAVA脚本对像标识JSON。
本发明在分层结构的复杂软件系统中针对“开发SDK的客户端层”代码的自动化测试,解耦复杂软件系统中的上层代码,摆脱测试复杂软件系统时各个组成部分的整体依赖,剥离测试目标软件模块所依赖的其他软硬件环境,在测试时不需要与智能设备和云平台进行通信,解除了对智能设备和云平台的限制。本发明在实现快速且有针对性的局部软件模块的自动化测试的同时,在测试时仅依赖于测试目标软件模块,当测试目标软件和其所依赖的其他软硬件进行并行开发时,其测试的范围和进度仅受限于测试目标软件模块,而不受不受其所依赖的其他软硬件的开发进度影响。
本发明还具有以下优点:
1、测试目标明确,测试环境部署简单。
2、测试消息的响应不依赖于真实的硬件反馈,可随意模拟不同的响应结果,从而充分验证测试目标软件在各种情况下的正确运行。
上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型方式都在本发明的保护范围之内。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。
以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。