发明内容
本申请提供一种应用程序的测试方法、装置及服务器,以解决现有技术中使用测试数据库对应用程序进行测试时,测试效率很低,测试场景单一的问题。
根据本申请实施例的第一方面,提供一种应用程序的测试方法,所述方法应用于Mock代理服务器上,包括:
接收应用程序发送的访问待访问的数据库的访问请求,所述访问请求中携带有所述应用程序的测试需求;
对所述访问请求进行协议解析,得到所述访问请求对应的协议类型;
根据所述协议类型获取与所述应用程序的测试需求对应的访问结果,并将所述访问结果发送至所述应用程序,以使所述应用程序根据所述访问结果进行测试。
根据本申请实施例的第二方面,提供一种应用程序的测试装置,所述装置应用于Mock代理服务器上,包括:
接收单元,用于接收应用程序发送的访问待访问的数据库的访问请求,所述访问请求中携带有所述应用程序的测试需求;
解析单元,用于对所述访问请求进行协议解析,得到所述访问请求对应的协议类型;
获取单元,用于根据所述协议类型获取与所述应用程序的测试需求对应的访问结果,并将所述访问结果发送至所述应用程序,以使所述应用程序根据所述访问结果进行测试。
根据本申请实施例的第三方面,提供一种Mock代理服务器,包括:
处理器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为:
接收应用程序发送的访问待访问的数据库的访问请求,所述访问请求中携带有所述应用程序的测试需求;
对所述访问请求进行协议解析,得到所述访问请求对应的协议类型;
根据所述协议类型获取与所述应用程序的测试需求对应的访问结果,并将所述访问结果发送至所述应用程序,以使所述应用程序根据所述访问结果进行测试。
本申请实施例中在对应用程序测试时,Mock代理服务器接收应用程序发送的访问待访问的数据库的访问请求,所述访问请求中携带有所述应用程序的测试需求;对所述访问请求进行协议解析,得到所述访问请求对应的协议类型;根据所述协议类型获取与所述应用程序的测试需求对应的访问结果,并将所述访问结果发送至所述应用程序,以使所述应用程序根据所述访问结果进行测试,从而实现了根据不同的协议类型采用不同的获取访问结果的方式,进而提高了测试效率,而且还可以应用于多种测试场景。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了保证应用程序的性能和有效扩展性,需要对应用程序进行多个场景下的测试。尤其在测试过程中,可能涉及到同数据库的交互。但是,现有技术中,在使用测试数据库对应用程序进行测试时,测试过程中伪造数据很麻烦,每次测试用例执行完后还要清理测试数据库,尤其不同测试场景下共有一套测试数据库,很容易造成数据重复,而且有些测试场景还不能模拟。因此,使用测试数据库对应用程序进行测试时,测试效率很低,测试场景单一。
基于此,参见图1,为本申请实施例的应用程序的测试场景示意图:
如图1所示,在应用程序测试端对应用程序进行测试时,应用程序不是直接与数据库进行交互,而是通过代理服务器与数据库进行交互。
本申请实施例中,应用程序指的是广义的应用程序,包括运行在服务器上的某个服务程序和在本地启动的测试程序,也可以是一个服务器集群。
数据库指的是分布式数据库,可以是单台,也可以是集群,是部署在跟应用程序不同服务器上的持久化结构。
代理服务器指的是Mock代理服务器,能够实现Mock测试。其中,Mock测试指的是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。
在应用程序的测试过程中,应用程序会向Mock代理服务器发送访问数据库的访问请求,对于该访问请求对应的访问结果不容易构造或不容易获取时,可以不去访问实际的数据库,而是由Mock代理服务器直接生成应用程序希望得到的访问结果,并将该直接生成的访问结果发送给应用程序用于测试;也可以访问实际的数据库,但对实际的数据库返回的访问结果进行修改,得到应用程序希望得到的访问结果,并将该修改后的访问结果发送给应用程序用于测试。
由于Mock代理服务器可以创建一个虚拟的对象,并向应用程序返回希望得到的访问结果,比如,一个空的结果集,所以可以应用于不需要实际的数据库的测试场景。
由于Mock代理服务器可以对实际的数据库返回的访问结果进行修改,所以不会出现数据冲突的问题,而且还可以应用于数据库访问延迟等特殊场景。
因此,采用Mock代理服务器配合测试应用程序时,能够提高测试效率,而且还可以应用于多种测试场景。
参见图2,为本申请应用程序的测试方法的一个实施例流程图,该实施例从Mock代理服务器侧进行描述:
步骤210:接收应用程序发送的访问待访问的数据库的访问请求,该访问请求中携带有应用程序的测试需求。
具体地,应用程序发送的访问请求可以有很多种,比如:查询请求,更新请求,插入请求,删除请求,获取数据库表结构信息请求,开启事务请求,提交事务请求等。
另外,上述应用程序的访问请求携带的测试需求可能包括应用程序希望得到的访问结果,还可能包括需要Mock代理服务器对待访问的数据库返回的访问结果中的某些数据进行修改的修改指示和具体的修改内容。
步骤220:对应用程序发送的访问请求进行协议解析,得到该访问请求对应的协议类型。其中,访问请求对应的协议类型包括Mock协议类型或控制协议类型。
具体地,应用程序向Mock代理服务器发送访问请求时,可以采用不同的协议类型,当访问请求对应的协议类型为Mock协议,表明应用程序需要Mock代理服务器直接返回应用程序所希望的访问结果;当访问请求对应的协议类型为控制协议(control protocol),表明应用程序需要Mock代理服务器将访问请求转发至待访问的数据,并需要Mock代理服务器对待访问的数据库返回的访问结果进行修改,从而达到应用程序所希望的访问结果。
步骤230:根据访问请求的协议类型获取与应用程序的测试需求对应的访问结果,并将获取到的访问结果发送至应用程序,以使应用程序根据接收到的访问结果进行测试。
具体地,Mock代理服务器会根据协议类型不同,采用不同的获取方式,以期获取应用程序希望得到的访问结果。
因此,本申请实施例中在对应用程序测试时,通过接收应用程序发送的访问待访问的数据库的访问请求,该访问请求中携带有应用程序的测试需求;对访问请求进行协议解析,得到访问请求对应的协议类型;根据协议类型获取与应用程序的测试需求对应的访问结果,并将访问结果发送至应用程序,以使应用程序根据访问结果进行测试,从而实现了根据不同的协议类型采用不同的获取访问结果的方式,进而提高了测试效率,而且还可以应用于多种测试场景。
参见图3,为本申请应用程序的测试方法的另一个实施例流程图,该实施例从Mock代理服务器侧进行描述:
步骤310:接收应用程序发送的访问待访问的数据库的访问请求,该访问请求中携带有应用程序的测试需求。
其中,应用程序的测试需求包括应用程序需要得到的第一访问结果,或者应用程序需要得到的第一访问结果对应的修改指示和修改内容。
步骤320:对应用程序发送的访问请求进行协议解析,得到该访问请求对应的协议类型。
其中,访问请求对应的协议类型包括Mock协议类型或控制协议类型。
步骤330:判断访问请求对应的协议类型是Mock协议类型还是控制协议类型,当访问请求对应的协议类型是Mock协议类型执行步骤340至步骤350;当访问请求对应的协议类型是控制协议类型执行步骤360至步骤390。
步骤340:根据应用程序的测试需求生成第二访问结果,该第二访问结果与第一访问结果相同或相应。
步骤350:将第二访问结果发送至应用程序,以使应用程序根据第二访问结果进行测试,流程结束。
比如,应用程序的测试需求中应用程序需要得到的第一访问结果为一个空的结果集,则Mock代理服务器向应用程序返回一个空的访问结果。
步骤360:将应用程序的访问请求转发至待访问的数据库。
步骤370:接收待访问的数据库返回的第二访问结果。
步骤380:根据应用程序需要得到的第一访问结果对应的修改指示和修改内容对第二访问结果进行修改。
步骤390:将修改后的第二访问结果发送至应用程序,以使应用程序根据修改后的第二访问结果进行测试,流程结束。
因此,本申请实施例中在对应用程序测试时,通过接收应用程序发送的访问待访问的数据库的访问请求,该访问请求中携带有应用程序的测试需求,以及该应用程序的测试需求包括应用程序需要得到的第一访问结果,或者应用程序需要得到的第一访问结果对应的修改指示和修改内容;对访问请求进行协议解析,得到访问请求对应的协议类型;当协议类型为Mock协议类型时,直接根据应用程序的测试需求生成第二访问结果,该第二访问结果是应用程序希望得到的访问结果,当协议类型为控制协议类型时,对待访问的数据库返回的第二访问结果进行修改,修改后的第二访问结果是应用程序希望得到的访问结果,并将应用程序希望得到的访问结果发送至应用程序用于测试,从而实现了根据应用程序的需要返回应用程序希望得到的访问结果,进而提高了测试效率,而且还可以应用于多种测试场景。
与本申请应用程序的测试方法的实施例相对应,本申请还提供了应用程序的测试装置的实施例。
本申请应用程序的测试装置的实施例可以分别应用在Mock代理服务器上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本申请应用程序的测试装置所在设备的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常根据该设备的实际功能,还可以包括其他硬件,如对于终端来说,可能包括摄像头、触摸屏子、通信组件等,对于服务器来说,可能包括负责处理报文的转发芯片等等。
参见图5,为本申请应用程序的测试装置的一个实施例框图,该应用程序的测试装置可以应用在Mock代理服务器上,该装置包括:接收单元51、解析单元52和获取单元53。
其中,接收单元51用于接收应用程序发送的访问待访问的数据库的访问请求,所述访问请求中携带有所述应用程序的测试需求。
解析单元52用于对所述访问请求进行协议解析,得到所述访问请求对应的协议类型。
获取单元53用于根据所述协议类型获取与所述应用程序的测试需求对应的访问结果,并将所述访问结果发送至所述应用程序,以使所述应用程序根据所述访问结果进行测试。
在一个可选的实现方式中:
所述应用程序的测试需求包括所述应用程序需要得到的第一访问结果,所述协议类型为Mock协议类型,所述获取单元53包括:生成子单元和第一发送子单元(图5中未示出)。
其中,生成子单元用于根据所述测试需求生成第二访问结果,所述第二访问结果与所述第一访问结果相同或相应;
第一发送子单元用于将所述第二访问结果发送至应用程序,以使所述应用程序根据所述第二访问结果进行测试。
在另一个可选的实现方式中:
所述应用程序的测试需求包括所述应用程序需要得到的第一访问结果对应的修改指示和修改内容,所述协议类型为控制协议类型,,所述获取单元53包括:接收子单元、修改子单元和第二发送子单元(图5中未示出)。
其中,接收子单元用于接收所述待访问的数据库返回的第二访问结果;
修改子单元用于根据所述修改指示和修改内容对所述待访问的数据库返回的第二访问结果进行修改;
第二发送子单元用于将所述修改后的第二访问结果发送至应用程序,以使所述应用程序根据所述修改后的第二访问结果进行测试。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请实施例还提供了一种Mock代理服务器,包括:
处理器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为:
接收应用程序发送的访问待访问的数据库的访问请求,所述访问请求中携带有所述应用程序的测试需求;
对所述访问请求进行协议解析,得到所述访问请求对应的协议类型;
根据所述协议类型获取与所述应用程序的测试需求对应的访问结果,并将所述访问结果发送至所述应用程序,以使所述应用程序根据所述访问结果进行测试。
由上述实施例可见,本申请实施例中在对应用程序测试时,通过接收应用程序发送的访问待访问的数据库的访问请求,该访问请求中携带有应用程序的测试需求;对访问请求进行协议解析,得到访问请求对应的协议类型;根据协议类型获取与应用程序的测试需求对应的访问结果,并将访问结果发送至应用程序,以使应用程序根据访问结果进行测试,从而实现了根据不同的协议类型采用不同的获取访问结果的方式,进而提高了测试效率,而且还可以应用于多种测试场景。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。