本公开涉及软件测试领域,具体而言,涉及一种服务端接口测试系统以及服务端接口测试方法。
背景技术:
在网络系统中,客户端往往负责信息(例如,文字、图像等)的表现,而服务端通常涉及与信息相关的逻辑处理。例如,在网络游戏中,客户端主要负责游戏画面的表现,而服务端通常负责对涉及游戏画面和/或游戏操作的数据进行逻辑计算。此外,服务端可以通过各个接口来实现对客户端信息的处理,因此,服务端接口在整个网络系统中占据重要的位置,对服务端接口的测试也成为整个网络系统测试中的重要内容。
目前,以网络游戏为例,测试人员对服务端接口进行测试的方法可以包括:编写无客户端的机器人代码并登录游戏;了解各待测接口的参数含义和语法规则;编写测试脚本代码并通过执行所述测试脚本代码来发送RPC(Remote Procedure Call,远程过程调用)信息,以进行接口测试;以及根据日志判断测试结果是否符合预期。这种对服务端接口进行测试的方法的缺点在于:测试人员无法直观地了解到待测试接口的参数规范,并且测试结果需要根据日志来判断,无法得到更直观的反馈信息,同时,测试人员需要编写大量的测试脚本且测试的灵活较差。
鉴于此,需要一种新的服务端接口测试系统以及服务端接口测试方法。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现要素:
本公开的目的在于提供一种服务端接口测试系统以及服务端接口测试方法,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。
根据本公开的一个方面,提供一种服务端接口测试系统,包括一中间模块和一前端模块,其中:
所述中间模块用于将一客户端的针对待测试接口的预设操作过程中的RPC信息发送至所述前端模块,并且/或者接收一服务器对所述RPC信息进行响应而获得的反馈结果并将所述RPC信息的反馈结果发送至所述前端模块;
所述前端模块用于接收并显示来自所述中间模块的所述RPC信息和/或所述RPC信息的反馈结果。
在本公开的一种示例性实施例中,其中:
所述前端模块还用于在接收来自所述中间模块的所述RPC信息后,响应一修改请求对所述RPC信息进行修改以获得修改后的RPC信息,并将所述修改后的RPC信息发送至所述中间模块;
所述中间模块还用于将接收到的所述修改后的RPC信息发送至所述服务器,并且接收所述服务器对所述修改后的RPC信息进行响应而获得的反馈结果,并将所述该反馈结果发送至所述前端模块并由所述前端模块显示。
在本公开的一种示例性实施例中,所述服务端接口测试系统还包括:
第一判断模块,用于判断所述RPC信息的反馈结果和/或所述修改后的RPC信息的反馈结果是否满足预设要求。
在本公开的一种示例性实施例中,所述判断所述RPC信息的反馈结果和/或所述修改后的RPC信息的反馈结果是否满足预设要求包括:
通过所述客户端对所述RPC信息的反馈结果和/或所述修改后的RPC信息的反馈结果进行代码处理,以得到所述客户端的响应结果,并且根据所述客户端的响应结果判断所述RPC信息的反馈结果和/或所述修改后的RPC信息的反馈结果是否满足预设要求。
在本公开的一种示例性实施例中,所述判断所述RPC信息的反馈结果和/或所述修改后的RPC信息的反馈结果是否满足预设要求包括:
通过所述前端模块接收并显示所述RPC信息的反馈结果和/或所述修改后的RPC信息的反馈结果,并在所述前端模块处判断所述RPC信息的反馈结果和/或所述修改后的RPC信息的反馈结果是否满足预设要求。
在本公开的一种示例性实施例中,所述服务端接口测试系统还包括:
第二判断模块,用于判断是否完成对所述待测试接口的测试,其中:
在判断出已完成对所述待测试接口的测试时,所述服务端接口测试系统进入下一服务端接口测试过程;
在判断出未完成对所述待测试接口的测试时,所述前端模块在接收来自所述中间模块的所述RPC信息后,响应一修改请求对所述RPC信息进行修改以获得修改后的RPC信息,并将所述修改后的RPC信息发送至所述中间模块,并且所述中间模块将接收到的所述修改后的RPC信息发送至所述服务器,并接收所述服务器对所述修改后的RPC信息进行响应而获得的反馈结果,并将所述该反馈结果发送至所述前端模块并由所述前端模块显示。
在本公开的一种示例性实施例中,所述服务端接口测试系统还包括:
第三判断模块,用于判断所述服务器的所有接口是否已完成测试,并且在判断出所述服务器的所有接口已完成测试时,关闭所述客户端和所述前端模块。
在本公开的一种示例性实施例中,所述中间模块嵌入在所述客户端中。
在本公开的一种示例性实施例中,所述RPC信息包括函数名、参数、发送/接收信息;
其中,所述RPC信息在所述前端模块中以树状表格的形式显示。
根据本公开的一个方面,提供一种服务端接口测试方法,所述服务端接口测试方法应用于包括一中间模块以及一前端模块的服务端接口测试系统;所述服务端接口测试方法包括:
通过所述中间模块将一客户端的针对待测试接口的预设操作过程中的RPC信息发送至所述前端模块,并且/或者接收一服务器对所述RPC信息进行响应而获得的反馈结果并将所述RPC信息的反馈结果发送至所述前端模块;
通过所述前端模块接收并显示来自所述中间模块的所述RPC信息和/或所述RPC信息的反馈结果。
在本公开的一种示例性实施例中,其中:
通过所述前端模块在接收来自所述中间模块的所述RPC信息后响应一修改请求对所述RPC信息进行修改来获得修改后的RPC信息,并将所述修改后的RPC信息发送至所述中间模块;
通过所述中间模块将接收到的所述修改后的RPC信息发送至所述服务器,并且接收所述服务器对所述修改后的RPC信息进行响应而获得的反馈结果,并将所述该反馈结果发送至所述前端模块并由所述前端模块显示。
在本公开的一些实施例所提供的技术方案中,通过配置一中间模块和一前端模块,由该中间模块将客户端的预设操作过程中的RPC信息发送至该前端模块,并由该前端模块显示RPC信息,以及由该中间模块将服务器对RPC信息进行响应而获得反馈结果发送至该前端模块并显示所述该反馈结果,实现了测试的可视化,有助于测试人员了解服务端接口的参数规范,减少了测试人员对源代码的阅读,提高了测试效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示意性示出了根据本公开的示例性实施方式的服务端接口测试系统以及其实施场景的整体架构图;
图2示出了根据本公开的示例性实施方式的RPC信息的显示示意图;以及
图3示意性示出了根据本公开的示例性实施方式的服务端接口测试方法的流程图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
根据本公开的示例性实施方式的服务端接口测试系统可以包括一中间模块和一前端模块,其中:
所述中间模块用于将一客户端的针对待测试接口的预设操作过程中的RPC信息发送至所述前端模块,并且/或者接收一服务器对所述RPC信息进行响应而获得的反馈结果并将所述RPC信息的反馈结果发送至所述前端模块;
所述前端模块用于接收并显示来自所述中间模块的所述RPC信息和/或所述RPC信息的反馈结果。
在本公开的一些实施例所提供的技术方案中,通过配置一中间模块和一前端模块,由该中间模块将客户端的预设操作过程中的RPC信息发送至该前端模块,并由该前端模块显示RPC信息,以及由该中间模块将服务器对RPC信息进行响应而获得反馈结果发送至该前端模块并显示所述该反馈结果,实现了测试的可视化,有助于测试人员了解服务端接口的参数规范,减少了对源代码的阅读,提高了测试效率。
下面将参考图1对根据本公开的示例性实施方式的服务端接口测试系统进行详细描述。
参考图1,根据本公开的示例性实施方式的服务端接口测试系统可以包括中间模块3和前端模块4,所述服务端接口测试系统的实施场景可以包括客户端1和服务器2。
根据本公开的一些实施例,客户端1可以与服务器2连接,中间模块3可以嵌入在客户端1中并且与前端模块4连接。然而,根据本公开的另一些实施例,中间模块3还可以在客户端1外部且能够与客户端1进行数据交互。
以网络游戏为例,客户端1可以是游戏客户端,用于提供游戏所需的本地服务程序。在测试人员对客户端1进行操作的过程中,客户端1可以产生RPC信息;服务器2可以是游戏服务器,用于对客户端1产生的RPC信息以及其他信息进行响应,并且在响应后可以得到反馈结果并将反馈结果发送至客户端1。
此外,中间模块3可以是Web服务器,前端模块4可以是与中间模块对应的Web浏览器。然而,本公开不限于此,中间模块3还可以是与客户端1匹配并具有接收/发送功能的其他单元,而前端模块4还可以是与中间模块3匹配并具有显示以及相应输入功能的接收/发送单元,本示例性实施方式中对此不做特殊限定。
根据本公开的一些实施例,中间模块3可以将客户端1产生的RPC信息发送至前端模块4,由前端模块4实时显示RPC信息。
图2示出了根据本公开的示例性实施方式的RPC信息的显示示意图。参考图2,本公开的示例性实施方式中的RPC信息可以包括函数名、参数以及接收/发送信息等,并且所述RPC信息可以采用树状表格的形式显示。然而,RPC信息还可以包括与游戏操作过程相关的其他信息,并且采用树状表格的形式显示旨在便于测试人员直观的了解到RPC信息,本领域技术人员容易理解的是,RPC信息还可以采用其他显示形式。
根据另外一些实施例,首先,客户端1可以将产生的RPC信息发送至待测试的服务端接口,由服务器2对RPC信息进行响应并得到反馈结果,接下来,客户端1接收所述反馈结果,并由中间模块3将所述反馈结果发送至前端模块4,随后,前端模块4可以显示所述反馈结果。
通过上述过程,测试人员可以通过前端模块4的显示内容,直观地了解到客户端1产生的RPC信息以及/或者由服务器2对RPC信息进行响应后的反馈结果。显然,相比于阅读源代码,测试人员阅读这些信息更容易。在一些源代码复杂的情况下,能够大大提高测试效率。
在本公开的示例性实施方式中,前端模块4在接收到来自中间模块3的RPC信息之后,可以响应于来自测试人员的修改请求对所述RPC信息进行修改,以获得并显示修改后的RPC信息。随后,前端模块4可以将所述修改后的RPC信息发送至中间模块3。
接下来,中间模块3可以通过客户端1的端口将所述修改后的RPC信息发送至服务器2,由服务器2对所述修改后的RPC信息进行响应而获得与其对应的反馈结果。随后,客户端1可以接收所述该反馈结果,并通过中间模块3将所述该反馈结果发送至前端模块4,由前端模块4显示所述该反馈结果,此时,测试人员可以直观地阅读所述该反馈结果,并对所述该反馈结果进行判断,以确定是否满足预设要求。
在本公开的示例性实施方式中,根据本公开的示例性实施方式的服务端接口测试系统还可以包括第一判断模块(图中未示出),第一判断模块可以用于判断RPC信息的反馈结果和/或修改后的RPC信息的反馈结果是否满足预设要求。
根据本公开的一些实施例,客户端1在接收到RPC信息的反馈结果和/或修改后的RPC信息的反馈结果之后可以对它们进行代码处理,以得到客户端1的响应结果,测试人员可以根据客户端1的响应结果来判断测试是否满足预设要求。例如,在网络游戏中,对客户端1的操作可以是针对一虚拟对象点击装备盔甲的控件,此时,如果客户端1上的虚拟对象装备上盔甲,则该测试满足预设要求。
根据另外一些实施例,可以通过中间模块3将RPC信息的反馈结果和/或修改后的RPC信息的反馈结果发送至前端模块4,测试人员可以通过在前端模块4处阅读上述信息来确定接口测试是否满足预设要求。
在本公开的示例性实施方式中,根据本公开的示例性实施方式的服务端接口测试系统还可以包括第二判断模块(图中未示出),第二判断模块可以用于判断是否完成对所述待测试接口的测试。
具体的,在判断出已完成对待测试接口的测试时,服务端接口测试系统将进入下一服务端接口的测试过程。
此外,在判断出未完成对待测试接口的测试时,可以在前端模块4处响应于修改请求对RPC信息进行修改,并将修改后的RPC信息经由中间模块3发送至服务器2,由服务器2对修改后的RPC信息进行响应,并将响应后的反馈结果通过中间模块3发送至前端模块4并显示。
本领域技术人员应当理解的是,测试人员可以对RPC信息中的各种参数进行修改,以满足测试需求。
在本公开的示例性实施方式中,根据本公开的示例性实施方式的服务端接口测试系统还可以包括第三判断模块(图中未示出),第三模块可以用于判断服务器2的所有接口是否已完成测试,并在判断出服务器2的所有接口已完成测试时,可以关闭客户端1和前端模块4。
通过本公开的示例性实施方式的服务端接口测试系统,一方面,通过实时显示RPC信息以及服务器对RPC信息的反馈结果,有助于测试人员直观地了解服务端接口的参数规范,避免了阅读源代码的过程;另一方面,通过在前端模块处修改RPC信息,可以使测试人员在无需编写测试脚本的情况下完成接口测试,在降低了测试人员代码能力的要求的同时,提高了测试的效率和灵活度;再一方面,通过在客户端处观察响应效果来判断测试结果是否满足预设要求,相比于查询日志,测试人员能够得到较直观的反馈。
应当注意,尽管在上文详细描述中提及了程序运行性能分析装置的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
进一步的,本示例实施方式中还提供了一种服务端接口测试方法,该服务端接口测试方法应用于包括中间模块和前端模块的服务端接口测试系统。所述服务端接口测试方法可以包括:
通过所述中间模块将一客户端的针对待测试接口的预设操作过程中的RPC信息发送至所述前端模块,并且/或者接收一服务器对所述RPC信息进行响应而获得的反馈结果并将所述RPC信息的反馈结果发送至所述前端模块;
通过所述前端模块接收并显示来自所述中间模块的所述RPC信息和/或所述RPC信息的反馈结果。
根据本公开的示例性实施方式,在所述服务端接口测试方法中,通过所述前端模块在接收来自所述中间模块的所述RPC信息后响应一修改请求对所述RPC信息进行修改来获得修改后的RPC信息,并将所述修改后的RPC信息发送至所述中间模块;通过所述中间模块将接收到的所述修改后的RPC信息发送至所述服务器,并且接收所述服务器对所述修改后的RPC信息进行响应而获得的反馈结果,并将所述该反馈结果发送至所述前端模块并由所述前端模块显示。
本公开的方法发明实施方式与上述程序运行性能分析装置的各个功能模块相同,因此在此不再赘述。
接下来,将以网络游戏为例并参考图3对根据本公开的示例性实施方式的服务端接口测试方法进行示例性描述。
以网络游戏为例的服务端接口测试方法可以包括以下步骤:
S102.启动游戏,开启接口测试功能。
在启动游戏客户端并登录游戏界面后,可以通过输入指定的GM(Game Master,游戏管理者)指令来开启接口测试功能。另外,对于一些游戏界面上存在开启接口测试功能控件的游戏,测试人员直接点击该控件即可。此外,可以将开启接口测试功能配置为登录后自动开启。本示例性实施方式中对此不做特殊限定。
根据本公开的一些实施例,开启接口测试功能可以包括:启动Web服务器,同时改写游戏客户端的Tick函数逻辑,具体的,在Tick函数逻辑中加入Web服务器的网络循环,也就是说,针对游戏中的每一帧,在处理原有的游戏逻辑的同时,还需执行Web服务器的一次网络循环。另外,可以采用轻量级的Web服务器,在这种情况下,Web服务器不会对游戏客户端的程序逻辑产生较大影响。
另外,开启接口测试功能还可以包括:改写游戏客户端RPC信息中的相关函数(例如,接收/发送信息),使得改写后的函数不仅要执行改写前函数的逻辑,还要将函数信息(包括RPC信息)发送至Web浏览器。
此外,开启接口测试功能还可以包括:定义Web服务器接收消息的函数,使游戏客户端可以发送修改后的RPC信息。
S104.打开Web浏览器,与Web服务器建立连接。
Web服务器定义了与其相匹配的Web地址和端口号,打开Web浏览器后,可以输入与Web服务器相匹配的Web地址和端口号,即可与Web服务器建立连接。然而,本公开的Web浏览器还可以是与Web服务器匹配的浏览器,在这种情况下,打开Web浏览器的同时即与Web服务器建立了联系,无需输入Web地址和端口号。
S106.操作游戏客户端,Web浏览器上实时显示RPC信息。
测试人员可以对游戏客户端进行操作,游戏客户端会产生RPC信息,Web服务器将RPC信息发送至Web浏览器,并由Web浏览器实时显示所述RPC信息。
S108.修改RPC信息,点击Web浏览器上的重新发送控件。
测试人员可以对Web浏览器上的RPC信息进行修改,修改完成后,点击Web浏览器上的重新发送控件,以将修改后的RPC信息发送至Web服务器,接下来,Web服务器通过游戏客户端的端口将修改后的RPC信息发送至游戏服务器,由游戏服务器对修改后的RPC信息进行响应以得到反馈结果,随后,游戏服务器将该反馈结果发送至游戏客户端。
S110.根据游戏客户端表现和/或Web浏览器上显示的信息判断测试结果。
游戏客户端在接收步骤S108中生成的反馈结果之后,可以产生一响应效果(即,游戏客户端表现),并且测试人员可以根据响应效果来判断测试结果。另外,Web服务器可以将步骤S108中生成的反馈结果发送至Web浏览器并由Web浏览器显示所述反馈结果,测试人员可以根据Web浏览器此时显示的信息判断测试结果。
S112.判断接口测试是否完成。
在判断出接口测试完成的情况下,服务端接口测试方法跳转至步骤S106,以进行下一接口的测试过程;在判断出接口测试未完成的情况下,服务端接口测试方法跳转至步骤S108,以进行对RPC信息的修改及对应的响应操作。
此外,示例性的服务端接口测试方法还可以包括判断所有接口是否测试完成的步骤,在此不再赘述。
应当注意,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本公开实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方式。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。