一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

异步通信的测试方法、装置及电子设备与流程

2022-06-05 14:16:46 来源:中国专利 TAG:


1.本发明涉及系统测试技术领域,具体而言,涉及一种异步通信的测试方法、装置及电子设备。


背景技术:

2.在用户通过客户端操作网络游戏时,通常需要与网络游戏系统的服务端进行通信,以实现游戏操作。客户端与服务端的通信主要通过rpc(remote procedure call,远程过程调用)技术实现。因而在网络游戏系统的测试中,需要对rpc进行测试。相关技术中,在对rpc进行测试时,通常采用同步监听服务端和客户端的异步通信的方式。该方式在等待服务端对客户端的请求的响应消息过程中,产生了较长的等待时间,导致测试效率较低。


技术实现要素:

3.有鉴于此,本发明的目的在于提供一种异步通信的测试方法、装置及电子设备,以减少远程过程调用测试过程中,主线程对响应消息的等待时间,提高测试效率。
4.第一方面,本发明实施例提供了一种异步通信的测试方法,该方法应用于客户端;客户端与预设的服务端通信连接;服务端运行有待测系统;该方法包括:获取待测系统的测试用例;向服务端发送测试用例对应的远程过程调用请求,以及,生成远程过程调用请求对应的协程;通过协程监听服务端返回的针对远程过程调用请求的响应消息,基于响应消息,确定测试用例对应的测试结果。
5.上述测试用例包括待测参数、待测参数对应的条件参数及预设结果;获取待测系统的测试用例的步骤,包括:获取待测系统的测试参数;根据目标需求,从测试参数中选择待测参数及待测参数对应的条件参数;将待测参数、待测参数对应的条件参数以及目标需求对应的预设结果确定为待测系统的测试用例。
6.上述测试用例包括待测参数及条件参数;向服务端发送测试用例对应的远程过程调用请求的步骤之前,上述方法还包括:基于条件参数生成测试用例对应的测试环境;基于待测参数以及测试环境,生成测试用例对应的远程过程调用请求。
7.上述远程过程调用请求包括基于测试用例生成的请求参数;生成远程过程调用请求对应的协程的步骤,包括:将远程过程调用请求的请求参数传递给待分配的初始协程的初始参数,将参数传递后的初始协程确定为远程过程调用请求对应的协程;初始协程通过预设的生成器生成。
8.上述远程过程调用请求包括请求标识;服务端返回的针对远程过程调用请求的响应消息包括远程过程调用请求的请求标识;通过协程监听服务端返回的针对远程过程调用请求的响应消息的步骤,包括:如果监听到的服务端发送的消息中包括预先获取的远程过程调用请求的请求标识,将监听到的消息确定为针对远程过程调用请求的响应消息。
9.上述测试用例包括预设结果;测试结果包括测试成功或测试失败;基于响应消息,确定测试用例对应的测试结果的步骤,包括:通过协程对响应消息进行解析,得到测试参数
对应的反馈结果;判断反馈结果与预设结果是否一致;如果一致,确定测试用例的测试结果为测试成功;如果不一致,确定测试用例的测试结果为测试失败。
10.上述测试参数包括多个;测试参数对应多种类型;目标需求对应于目标类型;根据目标需求,从测试参数中选择待测参数及待测参数对应的条件参数的步骤,包括:从测试参数中选取类型与目标类型相同的测试参数作为待测参数;如果待测参数为多个,按照设定顺序,依次从测试参数中选取待测参数对应的条件参数。
11.上述通过协程基于服务端返回的针对远程过程调用请求的响应消息,确定测试用例对应的测试结果的步骤之后,方法还包括:将测试用例及测试用例对应的测试结果保存至预设的存储位置。
12.第二方面,本发明实施例提供了一种异步通信的测试装置,该装置设置于客户端;客户端与预设的服务端通信连接;服务端运行有待测系统;该装置包括:测试用例获取模块,用于获取待测系统的测试用例;请求发送及协程生成模块,用于向服务端发送测试用例对应的远程过程调用请求,以及,生成远程过程调用请求对应的协程;测试结果确定模块,用于通过协程监听服务端返回的针对远程过程调用请求的响应消息,基于响应消息,确定测试用例对应的测试结果。
13.第三方面,本发明实施例提供了一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述的异步通信的测试方法。
14.第四方面,本发明实施例提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述的异步通信的测试方法。
15.本发明实施例带来了以下有益效果:
16.上述一种异步通信的测试方法、装置及电子设备,其中,该方法应用于客户端;客户端与预设的服务端通信连接;服务端运行有待测系统;在获取待测系统的测试用例后,向服务端发送测试用例对应的远程过程调用请求,以及,生成远程过程调用请求对应的协程;并通过协程监听服务端返回的针对远程过程调用请求的响应消息,基于响应消息,确定测试用例对应的测试结果。该方式生远程过程调用请求的协程,用来监听对请求的响应消息,主线程无需等待服务端对客户端的请求的响应,可以直接进行接下来的测试流程,节省了测试时间,提高了测试效率。
17.本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
18.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
19.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,
还可以根据这些附图获得其他的附图。
20.图1为本发明实施例提供的一种异步通信的测试方法的流程图;
21.图2为本发明实施例提供的另一种异步通信的测试方法的流程图;
22.图3为本发明实施例提供的一种客户端与服务器进行rpc测试的交互过程示意图;
23.图4为本发明实施例提供的一种异步通信的测试装置的结构示意图;
24.图5为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
25.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
26.在用户通过客户端操作网络游戏时,通常需要与网络游戏系统的服务端进行通信,以实现游戏操作。例如,用户通过客户端向服务端发送虚拟资源购买的请求,服务端接收到请求后,判断当前的用户对应的虚拟角色是否能够购买该虚拟资源,并将购买结果返回给用户。当客户端运行在手机上时,也称为用户通过手机端对网络游戏进行操作。当网络游戏具有多人在线的核心玩法时,服务端和客户端之前的消息传递和转发需求更是随着游戏系统的发展而不断增加。
27.在具体实现时,客户端与服务端的通信主要通过rpc(remote procedure call,远程过程调用)实现。因此,rpc作为网络通信的主要协议,是游戏团队在测试新玩法,或迭代旧系统过程中必须要重点关注的内容。例如,一个商城系统的迭代,就需要测试原本游戏项目内所有商品购买过程中的rpc通信质量;一个活动玩法的开发,就需要测试所有新增的rpc方法是否能够成功实现客户端与服务端的通信。
28.而网络游戏最大的特点就是更新迭代较快,通常需要对游戏系统进行较高频率的更新,如每周均进行系统更新。基于大量的rpc测试需求,通常采用一下两种方式进行测试:第一种以手动测试为主,该方式通常生成包括各个rpc测试的界面,该界面具有显示各个测试的调用时间,参数设置,以及返回结果的图标,以界面化的方式全面地监听每一个rpc方法的测试过程;第二种以脚本代替人力进行测试,首先针对某一个测试任务或者某一种rpc方法编写测试脚本,然后进行测试,该方式可以用较短的时间跑完大量的测试任务,同时帮助测试人员核对效果。然而上述方法具有如下缺点:
29.(1)手动测试的方式中,采用人力手动调整rpc方法中的参数,不能更全面和高效地测试大量数据和众多rpc方法,且这种重复单一的过程很容易出现测试遗漏;
30.(2)通过脚本编写专用的rpc测试脚本,其通用性不高,当rpc方法修改时,脚本也需要做对应的修改。不仅如此,每次进行新的rpc测试的时候,需要测试人员再按照新的方法重新写所有流程的方式也很低效,使得大量的时间浪费在代码的调试,而不是核心的测试需求。
31.(3)上述人为测试和专用脚本测试的方式本质上都是通过同步方式取监听服务端和客户端的异步通信,也就是在客户端发送一个rpc请求,然后放弃其他测试工作,持续等待服务端返回的消息。这样的方式强制阻塞主流程,造成了大量冗余的等待时间,拖延了测
试进度。
32.基于此,本发明实施例提供的一种异步通信的测试方法、装置及电子设备,该技术可以应用于网络游戏系统或其他需要客户端与服务端交互的系统的远程过程调用的测试过程。
33.为便于对本实施例进行理解,首先对本发明实施例所公开的一种异步通信的测试方法进行详细介绍,该方法应用于客户端;客户端与预设的服务端通信连接;服务端运行有待测系统;如图1所示,该方法包括如下步骤:
34.步骤s102,获取待测系统的测试用例。
35.上述待测系统可以为网络游戏的系统或其他业务系统。待测系统运行在服务端,客户端运行有待测系统对应的应用程序。用户可以通过客户端向服务端发送远程过程调用请求,以使待测系统实现其请求对应的功能,如将请求对应的资源发送给客户端或对待测系统的参数进行设置等。上述测试用例主要用于对待测系统的测试任务进行描述。由于测试任务为测试待测系统对客户端发送的远程过程调用请求的响应效果,因此上述测试用例需要包括生成远程过程调用请求的参数以及待测系统对远程过程调用请求的预设响应结果。
36.由于待测系统通常包括多种与客户端交互从而能够实现的功能,对应地远程调用请求通常也包括多种。例如,当待测系统为游戏系统时,其具有的功能可以包括:购买虚拟资源,更改虚拟角色的设置等。各个功能的实现通常具备一定的条件,如当玩家对应的虚拟角色的等级达到预设等级,且玩家的虚拟资产满足设定的数量时,才能购买该虚拟角色的某个皮肤。
37.针对于某个功能,在客户端发送的该功能的远程过程调用请求满足预设的条件时,待测系统向客户端发送远程过程调用请求对应的响应消息,该响应消息指示该远程过程调用请求对应的功能已实现;如果客户端发送远程过程调用请求不满足预设的条件时,待测系统向客户端发送的响应消息指示该功能未实现。为测试各个条件对待测系统实现功能的影响,还需要为各个条件对应的测试参数设置不同的参数值,如将一次购买皮肤的远程调用请求中玩家的虚拟角色等级设定为高于预设等级,在另一次请求中将其等级设定为低于预设等级,这些测试参数、以及不同测试参数的参数值组成的远程调用请求对应的预设响应结果通常构成了待测系统的测试用例。
38.步骤s104,向服务端发送测试用例对应的远程过程调用请求,以及,生成远程过程调用请求对应的协程。
39.上述远程过程调用请求是客户端基于远程过程调用协议生成的针对于预设服务端的请求。客户端通常预先在该服务端进行了注册,服务端已保存客户端的标识信息。客户端在发送远程过程调用请求时,通常会携带自身的标识信息,以便于服务端进行通信权限的校验。
40.由于上述远程过程调用请求是与测试用例相对应的,因此该请求是基于测试用例中的各个测试参数生成的。例如,如果远程过程调用请求对应于虚拟角色的皮肤购买测试用例,假设该测试用例中虚拟角色的等级、对应的玩家资产为测试参数,而预先为虚拟角色等级这个参数设置了两个参数值,一个参数值高于预设等级,另一个参数值低于预设等级;为玩家资产也设定了两个参数值,一个参数值高于预设数量,一个参数值低于预设数量,则
这两个测试参数的测试参数两两组合,构成可以生成四个远程过程调用请求的测试用例。当将一个测试参数作为待测参数时,另一个测试参数可以视为环境参数。环境参数的参数值可以保持不变,改变待测参数的参数值,从而确定待测参数在prc请求中是否起到预设需求对应的作用。
41.基于远程过程调用协议以及各个测试参数及对应的参数值,即可生成测试用例对应的远程过程调用请求。在生成远程过程调用请求后,向服务端发送该请求。如果主线程在发送了远程过程调用请求后,等待服务端返回的响应消息,会阻塞当前线程,导致测试进程停滞。而此时通过生成该请求的协程的方式,在线程的基础之上通过分时复用的方式运行协程,不会阻塞主线程的运行,主线程可以继续发送其他的远程过程调用请求,或者记录测试结果等。
42.由于协程需要监听远程过程调用请求对应的响应消息,而客户端通常会基于测试用例发送多个远程过程调用请求,并针对每个远程调用过程生成对应的协程,因此每个协程需要确定监听到的消息为对应的响应消息。针对各个编程环境,协程的实现方式可能基于环境中的初始函数有所不同。如在python2.x(如python2.7)环境中,用户可以根据对协程的应用需求,通过yield和send函数的组合,编写初始协程的程序。在生成远程过程调用请求对应的协程的过程中,可以调用初始协程,并将生成远程过程调用请求的请求标识或请求参数等可以识别该请求对应的响应消息的参数传递给初始协程,从而生成该请求对应的协程。不同的系统环境中,可以分配的协程的数量也有所不同。
43.步骤s106,通过协程监听服务端返回的针对远程过程调用请求的响应消息,基于响应消息,确定测试用例对应的测试结果。
44.由于协程是与远程过程调用请求相对应的,且协程的参数中包括可以识别远程过程调用请求对应的响应消息的参数。协程可以从监听到的消息中查找远程过程调用请求的识别参数,从而确定监听到的消息是否为目标远程过程调用请求对应的效应消息。为简化主线程的工作流程,还可以通过协程确定测试用例对应的测试结果,在这种情况下,需要预先将远程过程调用请求对应的测试用例的预设结果传递至协程的预设参数中,从而使得协程可以基于rpc协议对响应消息进行解析,得到此时请求的结果后,将得到的结果与预设结果进行比较,从而确定测试用例对应的测试结果。
45.上述一种异步通信的测试方法,该方法应用于客户端;客户端与预设的服务端通信连接;服务端运行有待测系统;在获取待测系统的测试用例后,向服务端发送测试用例对应的远程过程调用请求,以及,生成远程过程调用请求对应的协程;并通过协程监听服务端返回的针对远程过程调用请求的响应消息,基于响应消息,确定测试用例对应的测试结果。该方式生远程过程调用请求的协程,用来监听对请求的响应消息,主线程无需等待服务端对客户端的请求的响应,可以直接进行接下来的测试流程,节省了测试时间,提高了测试效率。
46.下述实施例提供一获取待测系统的测试用例的实现方式。
47.上述测试用例通常包括待测参数、待测参数对应的条件参数及预设结果;在获取待测系统的测试用例的过程中,首先获取待测系统的测试参数;然后根据目标需求,从测试参数中选择待测参数及待测参数对应的条件参数;最后将待测参数、待测参数对应的条件参数以及目标需求对应的预设结果确定为待测系统的测试用例。
48.上述测试参数通常为待测系统的待测功能的相关参数;以游戏系统的商城部分测试过程中,购买商品的测试用例为例。
49.(1)首先可以导入商品列表数据,从而获得商城系统的测试参数,如商品编号,打折后商品价格(item_discount),商品原价(item_count)、购买渠道(货币编号,item id)、限购条件(基于商品类型确定,skin类商品只能购买一次)等信息。商品列表数据如表1所示:
50.表1
[0051][0052]
由上述论述可知,测试参数通常包括多个,且测试参数具有多种类型。
[0053]
(2)具体可以根据用户的需求,筛选本次测试需要包含哪些测试用例。用户的目标需求通常对应于测试参数的目标类型;根据目标需求,从测试参数中选择待测参数及待测参数对应的条件参数,生成测试用例的过程中,可以从测试参数中选取类型与目标类型相同的测试参数作为待测参数;如果待测参数为多个,按照设定顺序,依次从测试参数中选取待测参数对应的条件参数。例如,如果测试购买商品的购买渠道,则将货币编号作为待测参数,将购买商品需要用到的其他参数作为条件参数,如商品编号,打折后商品价格,商品原价、购买渠道、限购条件等,可以将这些参数设置为满足购买商品的需求的参数值,然后结合不同的货币编号作为测试参数对应的参数值生成对应的测试用例。针对大量测试数据的任务,上述方法通过读取项目表格或数据库的方式,再根据用户需求,筛选测试数据的类型并归类,具体可以总结为数据库读取,数据类型筛选,测试用例三步流程,获得实际可用的数据集作为测试用例,可以快速生成多个测试用例,满足大量数据的测试需求。
[0054]
基于上述方法实施例,本实施例提供另一具体的异步通信的测试方法,该方法具体介绍了生成测试用例对应的远程过程调用请求及协程的过程,以及通过协程监听远程过程调用请求对应的响应消息,并确定测试结果的过程。如图2所示,该方法主要包括下述步骤:
[0055]
步骤s202,获取待测系统的测试用例。
[0056]
本步骤的具体实现过程与步骤s102相同,在此不再赘述。获取到的测试用例通常包括待测参数及条件参数。
[0057]
步骤s204,基于条件参数生成测试用例对应的测试环境。
[0058]
通常情况下,如果客户端想向待测系统请求一定的服务时,需要满足一定的条件。例如,待测系统为游戏系统时,客户端想要购买游戏系统中的某个虚拟商品,在购买时需要一些前置条件,例如用户需要的等级,货币的数量等,这些条件可以通过条件参数在发送rpc购买请求前进行设置。测试用例中的条件参数通常由文字描述或由数值表示,可以基于待测系统的系统环境语言将这些条件参数“翻译”成环境语言,从而构成测试用例对应的测试环境。在该测试用例对应的测试完成后,还需要将这些测试环境重置为初始化的环境。
[0059]
步骤s206,基于待测参数以及测试环境,生成测试用例对应的远程过程调用请求。
[0060]
上述远程过程调用请求包括基于测试用例生成的请求参数,该请求参数包括待测参数对应的参数,以及上述测试环境对应的参数,按照远程过程调用协议生成远程过程调用请求。例如,游戏系统的商城中,每种商品都有自己的购买渠道和价格,同时也有自己的限购条件,需要依次做不同处理,生成对应的请求参数,然后基于这些参数生成商品购买请求。
[0061]
步骤s208,向服务端发送测试用例对应的远程过程调用请求。该过程通过客户端将生成的测试用例对应的远程过程调用请求发送至服务端。
[0062]
步骤s210,将远程过程调用请求的请求参数传递给待分配的初始协程的初始参数,将参数传递后的初始协程确定为远程过程调用请求对应的协程。
[0063]
上述步骤s210与上述步骤s208同时进行。上述初始协程可以通过编程环境中预设的生成器生成。生成器是一次生成一个值的特殊类型函数。可以将其视为可恢复函数。简单的说就是在函数的执行过程中,yield语句会把需要的值返回给调用生成器的地方,然后退出函数,下一次调用生成器函数的时候又从上次中断的地方开始执行,而生成器内的所有变量参数都会被保存下来供下一次使用,从而可以实现协程随时中断执行过程,且能返回至中断处的功能。
[0064]
步骤s212,通过协程判断监听到的服务端发送的消息中是否包括预先获取的远程过程调用请求的请求标识;如果包括,执行步骤s214;如果不包括,执行步骤s212。通常情况下,上述远程过程调用请求包括请求标识;该请求标识可以为客户端的标识信息,还可以包括部分或全部请求参数。服务端返回的针对远程过程调用请求的响应消息需要包括远程过程调用请求的请求标识,以使得客户端识别该响应消息对应的请求。
[0065]
步骤s214,将监听到的消息确定为针对远程过程调用请求的响应消息。
[0066]
步骤s216,通过协程对响应消息进行解析,得到测试参数对应的反馈结果。具体而言,可以基于rpc协议对响应消息进行解析,得到响应消息中测试参数对应的反馈结果。例如,在游戏系统的商品购买中,购买记录如表2所示,服务端校验完成并返回购买结果,购买
结果通常包括成功或失败,负责监听的协程会与本次测试用例设定的结果对比,核对测试是否通过。
[0067]
表2
[0068]
info-[newstore pc.py:110][normal buy][mylog]buy 111900032info-[newstore pc.py:110][normal buy][mylog]buy 111900033info-[newstore pc.py:110][normal buy][mylog]buy 111900034info-[newstore pc.py:110][normal buy][mylog]buy 111900035info-[newstore pc.py:110][normal buy][mylog]buy 111900036info-[newstore pc.py:110][normal buy][mylog]buy 111900037info-[newstore pc.py:110][normal buy][mylog]buy 111900038info-[newstore pc.py:110][normal buy][mylog]buy 111900039info-[newstore pc.py:110][normal buy][mylog]buy 111900040info-[newstore pc.py:110][normal buy][mylog]buy 111900041info-[newstore pc.py:110][normal buy][mylog]buy 111900042
[0069]
步骤s218,判断反馈结果与预设结果是否一致;如果一致,执行步骤s220;如果不一致,执行步骤s222。上述测试用例包括通常预设结果。测试的成功或失败与预设结果和反馈结果的一致性相关。
[0070]
步骤s220,确定测试用例的测试结果为测试成功。例如,测试用例设定的结果为购买成功,响应消息对应的反馈结果也为购买成功,则测试结果为测试成功。
[0071]
步骤s222,确定测试用例的测试结果为测试失败。例如,测试用例设定的结果为购买成功,而响应消息对应的反馈结果为购买失败,则测试结果为测试失败。
[0072]
步骤s224,将测试用例及测试用例对应的测试结果保存至预设的存储位置。在获得测试结果后,可以通过主线程将测试用例和对应的测试结果保存下来,通常保存至全局变量中,以进行后续的系统功能分析。游戏系统的商城中购买皮肤商品的测试用例的部分测试结果如表3所示:
[0073]
表3
[0074]
皮肤商品112900677测试通过皮肤商品112900688测试不通过皮肤商品112900232测试通过皮肤商品112900611测试通过皮肤商品112900180测试通过皮肤商品112900301测试通过皮肤商品112900350测试通过皮肤商品112900240测试通过皮肤商品112900201测试通过皮肤商品112900188测试通过
[0075]
上述方法可以通过如图3所示的客户端与服务器进行rpc测试的交互过程示意图表示。客户端在通过主流程发送rpc请求的同时,通过生成器创建异步监听协程,然后主流程进行其他操作,服务端处理接收到的rpc请求后,将响应消息返回给独立的协程,协程核
对rpc结果,并输出本次rpc请求是否通过,客户端通过主流程保存本次rpc请求的结果。
[0076]
在具体实现过程中,为了保证自动化测试的效率和质量,同时提供用户足够的选择性,该方法可以设置三个自定义选项,来最大程度满足不同测试环境的需求:
[0077]
(1)该方法可以选择异步或同步模式来监听服务端返回的结果。在异步模式下,客户端发送rpc请求后,会开启一个协程去单独监听服务端消息,主流程无需等待且可以执行其他操作逻辑。在收到结果后,单独开启的协程会处理消息内容并将结果及时反馈给主流程;在同步模式下,客户端发送请求的同时会阻塞主流程,迫使所有进度停滞,等待服务端返回的消息。在收到结果后,主流程会亲自处理消息,并进行下一步测试。异步模式可以节省大量的碎片时间,提高自动化测试的效率。但相对同步模式,其结果的处理和流程分配更复杂,用户可以根据个人能力选择其中一个模式测试。这种模式的选择只能在本方法这类基于异步监听的底层原理下实现,而以同步监听为原理的方法是无法做到模式切换的。具体可通过在该方法对应的程序中改变代码实现同步或异步监听。
[0078]
(2)该方法可以选择某一种rpc方法单独监听或多种方法同时监听。rpc监听的数量取决于用户测试任务的类型,比如大型活动玩法中,客户端和服务端就可能会有多个rpc通信方式。该方法提供了一个通用的接口,用户只需要提供rpc返回的函数名,便能够启动一个独立的协程去专门监听这一个rpc。rpc在通信过程中,服务端有一个函数名a,客户端在发送请求过程中,需要在消息中携带a。客户端也有一个函数名b,是服务端在完成处理后,返回消息中携带的,相当于上述实施例中的请求标识。当多个这样的协程同时运行时,它们不会相互影响,在收到服务端消息时,对应的监听协程会返回结果给主流程并停止监听,从而实现同时监听。
[0079]
(3)该方法可以一次性选择多个自定义条件测试。这里测试条件包括测试数据的类型和rpc的参数。该方法会在用户指定的数据类型中,遍历每一个数据,并对每个数据取其中一个rpc参数测试。比如,在测试购买类rpc过程中,该方法会在指定商品类中,循环取出每一个商品的价格,数量和限购条件,先针对商品的价格做单独测试,完成后重置环境,再测试商品数量,限购条件以及其他用户自定义的参数配置。
[0080]
上述方法具有以下优点:
[0081]
(1)针对多种rpc方法的测试任务,提供了一个通用的监听接口,能够最大程度减少用户在rpc方法切换时的代码修改及其他工作量。
[0082]
(2)在python2.7的环境下,提供一种异步模式,在客户端发送rpc请求后,另外通过生成器产生一个独立的协程监听服务端返回消息,而主流程可以进行其他逻辑操作。
[0083]
(4)提供了多种rpc参数修改的方案,可以在测试过程中,一次性跑测多种测试条件,最大化节省跑测的时间。
[0084]
(5)每次测试过程中,可以根据不同的测试条件,先配置好游戏环境,并在测试完成后重置测试环境。
[0085]
(6)通过脚本自动化跑测的方式,缩短rpc跑测的时间,节省测试人力及等待时间,且更高效地完成测试任务。
[0086]
(5)根据用户的需求,提供同步和异步监听两种方式。异步模式能更快完成跑测,而同步模式的代码修改更简单,对用户代码能力要求不高。
[0087]
(6)提供一种通用的rpc接口,在监听不同的rpc方法时,需要提供rpc名称就能够
实现切换监听。用户在接到新的测试任务时,只需要修改监听的rpc名称(相当于上述传递给协程的请求参数)就可以完成监听。
[0088]
对于上述方法实施例,参见图4所示的一种异步通信的测试装置,该装置设置于客户端;客户端与预设的服务端通信连接;服务端运行有待测系统;该装置包括:
[0089]
测试用例获取模块402,用于获取待测系统的测试用例;
[0090]
请求发送及协程生成模块404,用于向服务端发送测试用例对应的远程过程调用请求,以及,生成远程过程调用请求对应的协程;
[0091]
测试结果确定模块406,用于通过协程监听服务端返回的针对远程过程调用请求的响应消息,基于响应消息,确定测试用例对应的测试结果。
[0092]
上述一种异步通信的测试装置,其中,该装置设置于客户端;客户端与预设的服务端通信连接;服务端运行有待测系统;在获取待测系统的测试用例后,向服务端发送测试用例对应的远程过程调用请求,以及,生成远程过程调用请求对应的协程;并通过协程监听服务端返回的针对远程过程调用请求的响应消息,基于响应消息,确定测试用例对应的测试结果。该方式生远程过程调用请求的协程,用来监听对请求的响应消息,主线程无需等待服务端对客户端的请求的响应,可以直接进行接下来的测试流程,节省了测试时间,提高了测试效率。
[0093]
上述测试用例包括待测参数、待测参数对应的条件参数及预设结果;上述测试用例获取模块包括:测试参数获取单元,用于获取待测系统的测试参数;待测参数选择单元,用于根据目标需求,从测试参数中选择待测参数及待测参数对应的条件参数;测试用例确定单元,用于将待测参数、待测参数对应的条件参数以及目标需求对应的预设结果确定为待测系统的测试用例。
[0094]
上述测试用例包括待测参数及条件参数;上述装置还包括:测试环境生成单元,用于基于条件参数生成测试用例对应的测试环境;远程过程调用请求生成单元,用于基于待测参数以及测试环境,生成测试用例对应的远程过程调用请求。
[0095]
上述远程过程调用请求包括基于测试用例生成的请求参数;上述请求发送及协程生成模块还用于:将远程过程调用请求的请求参数传递给待分配的初始协程的初始参数,将参数传递后的初始协程确定为远程过程调用请求对应的协程;初始协程通过预设的生成器生成。
[0096]
上述远程过程调用请求包括请求标识;服务端返回的针对远程过程调用请求的响应消息包括远程过程调用请求的请求标识;上述测试结果确定模块还用于:如果监听到的服务端发送的消息中包括预先获取的远程过程调用请求的请求标识,将监听到的消息确定为针对远程过程调用请求的响应消息。
[0097]
上述测试用例包括预设结果;测试结果包括测试成功或测试失败;上述测试结果确定模块还用于:通过协程对响应消息进行解析,得到测试参数对应的反馈结果;判断反馈结果与预设结果是否一致;如果一致,确定测试用例的测试结果为测试成功;如果不一致,确定测试用例的测试结果为测试失败。
[0098]
上述测试参数包括多个;测试参数对应多种类型;目标需求对应于目标类型;上述待测参数选择单元还用于:从测试参数中选取类型与目标类型相同的测试参数作为待测参数;如果待测参数为多个,按照设定顺序,依次从测试参数中选取待测参数对应的条件参
数。
[0099]
上述装置还包括存储模块,用于将测试用例及测试用例对应的测试结果保存至预设的存储位置。
[0100]
本实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述异步通信的测试方法。
[0101]
参见图5所示,该电子设备包括处理器100和存储器101,该存储器101存储有能够被处理器100执行的机器可执行指令,该处理器100执行机器可执行指令以实现上述异步通信的测试方法。
[0102]
进一步地,图5所示的电子设备还包括总线102和通信接口103,处理器100、通信接口103和存储器101通过总线102连接。
[0103]
其中,存储器101可能包含高速随机存取存储器(ram,random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0104]
处理器100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器100可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器101,处理器100读取存储器101中的信息,结合其硬件完成前述实施例的方法的步骤。
[0105]
本实施例还提供一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述异步通信的测试方法。
[0106]
本发明实施例所提供的一种异步通信的测试方法、装置以及电子设备,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
[0107]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0108]
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可
以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
[0109]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者所述技术方案的部分可以以软件产品的形式体现出来,所述计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0110]
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
[0111]
最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献