发明内容
本发明实施例提供了一种***的测试方法、装置、存储介质及电子装置,以至少解决相关技术中对***的自动化测试方案测试准确性和测试效率较低的技术问题。
根据本发明实施例的一个方面,提供了一种***的测试方法,包括:接收测试***发送的测试请求,其中,所述测试请求用于请求对被测***中的目标代码进行测试;响应所述测试请求从所述被测***的运行日志中获取所述目标代码对应的目标运行日志,其中,所述运行日志为所述被测***运行的过程中生成的日志,所述目标运行日志为所述被测***运行所述目标代码时生成的日志;向所述测试***发送所述目标运行日志,其中,所述目标运行日志用于所述测试***对所述目标代码进行测试。
可选地,响应所述测试请求从所述被测***的运行日志中获取所述目标代码对应的所述目标运行日志包括:响应所述测试请求从所述测试请求中获取用于标识所述目标运行日志的目标标识信息;从具有对应关系的标识信息和运行日志中查找所述目标标识信息对应的所述运行日志。
可选地,在响应所述测试请求从所述被测***的运行日志中获取所述目标代码对应的目标运行日志之前,所述方法还包括:向所述被测***发送调用请求,其中,所述调用请求用于请求调用所述被测***;在接收到所述被测***发送的确认信息的情况下,运行所述被测***并存储所述被测***在运行过程中生成的所述运行日志,其中,所述确认信息用于指示所述被测***调用成功。
可选地,存储所述被测***在运行过程中生成的所述运行日志包括:获取所述被测***在运行过程中生成的所述运行日志以及所述运行日志生成时所述被测***运行的程序代码的代码标识,并将所述代码标识确定为所述运行日志的标识信息;建立所述运行日志和所述代码标识之间的对应关系;存储具有对应关系的运行日志和代码标识;或者,获取所述被测***在运行过程中生成的运行日志;为所述运行日志分配日志标识,并将所述日志标识确定为所述运行日志的标识信息;建立所述运行日志和所述日志标识之间的对应关系;存储具有对应关系的运行日志和日志标识。
根据本发明实施例的另一方面,还提供了一种***的测试装置,包括:接收模块,用于接收测试***发送的测试请求,其中,所述测试请求用于请求对被测***中的目标代码进行测试;获取模块,用于响应所述测试请求从所述被测***的运行日志中获取所述目标代码对应的目标运行日志,其中,所述运行日志为所述被测***运行的过程中生成的日志,所述目标运行日志为所述被测***运行所述目标代码时生成的日志;第一发送模块,用于向所述测试***发送所述目标运行日志,其中,所述目标运行日志用于所述测试***对所述目标代码进行测试。
可选地,所述获取模块包括:获取单元,用于响应所述测试请求从所述测试请求中获取用于标识所述目标运行日志的目标标识信息;查找单元,用于从具有对应关系的标识信息和运行日志中查找所述目标标识信息对应的所述运行日志。
可选地,所述装置还包括:第二发送模块,用于向所述被测***发送调用请求,其中,所述调用请求用于请求调用所述被测***;处理模块,用于在接收到所述被测***发送的确认信息的情况下,运行所述被测***并存储所述被测***在运行过程中生成的所述运行日志,其中,所述确认信息用于指示所述被测***调用成功。
可选地,所述处理模块包括:第一处理单元,用于获取所述被测***在运行过程中生成的所述运行日志以及所述运行日志生成时所述被测***运行的程序代码的代码标识,并将所述代码标识确定为所述运行日志的标识信息;建立所述运行日志和所述代码标识之间的对应关系;存储具有对应关系的运行日志和代码标识;或者,第二处理单元,用于获取所述被测***在运行过程中生成的运行日志;为所述运行日志分配日志标识,并将所述日志标识确定为所述运行日志的标识信息;建立所述运行日志和所述日志标识之间的对应关系;存储具有对应关系的运行日志和日志标识。
根据本发明实施例的另一方面,还提供了一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项中所述的方法。
根据本发明实施例的另一方面,还提供了一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行上述任一项中所述的方法。
在本发明实施例中,采用接收测试***发送的测试请求,其中,测试请求用于请求对被测***中的目标代码进行测试;响应测试请求从被测***的运行日志中获取目标代码对应的目标运行日志,其中,运行日志为被测***运行的过程中生成的日志,目标运行日志为被测***运行目标代码时生成的日志;向测试***发送目标运行日志,其中,目标运行日志用于测试***对目标代码进行测试的方式,在被测***运行时为运行的代码生成其对应的日志,当需要对代码进行测试时,获取接收到的测试请求所请求的目标代码对应的目标运行日志,将该目标运行日志发送给测试***,以指示测试***对目标代码进行测试,从而实现了对指定代码的测试,从而实现了提高对***的自动化测试方案的测试准确性和测试效率的技术效果,进而解决了相关技术中对***的自动化测试方案测试准确性和测试效率较低的技术问题。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例的一个方面,提供了一种***的测试方法,如图1所示,该方法包括:
S102,接收测试***发送的测试请求,其中,测试请求用于请求对被测***中的目标代码进行测试;
S104,响应测试请求从被测***的运行日志中获取目标代码对应的目标运行日志,其中,运行日志为被测***运行的过程中生成的日志,目标运行日志为被测***运行目标代码时生成的日志;
S106,向测试***发送目标运行日志,其中,目标运行日志用于测试***对目标代码进行测试。
可选地,在本实施例中,上述***的测试方法可以应用于如图2所示的日志查询服务***202、测试***204和被测***206所构成的硬件环境中。如图2所示,日志查询服务***202接收测试***204发送的测试请求,其中,测试请求用于请求对被测***206中的目标代码进行测试。日志查询服务***202响应测试请求从被测***206的运行日志中获取目标代码对应的目标运行日志,其中,运行日志为被测***206运行的过程中生成的日志,目标运行日志为被测***206运行目标代码时生成的日志。日志查询服务***202向测试***204发送目标运行日志,其中,目标运行日志用于测试***204对目标代码进行测试。
可选地,在本实施例中,上述***的测试方法可以但不限于应用于由测试***对被测***进行自动化测试的场景中,以提高对***的自动化测试方案的测试准确性和测试效率。上述仅是一种示例,本实施例中对此不做任何限定。
可见,通过上述步骤,在被测***运行时为运行的代码生成其对应的日志,当需要对代码进行测试时,获取接收到的测试请求所请求的目标代码对应的目标运行日志,将该目标运行日志发送给测试***,以指示测试***对目标代码进行测试,从而实现了对指定代码的测试,从而实现了提高对***的自动化测试方案的测试准确性和测试效率的技术效果,进而解决了相关技术中对***的自动化测试方案测试准确性和测试效率较低的技术问题。
可选地,通过具有对应关系的标识信息和运行日志来对被测***的运行日志进行存储,也就是说,可以给为运行代码生成的运行日志分配标识信息,并以标识信息为key值,以运行日志为value值的key-value键值对的形式存储标识信息和运行日志,当接收到测试请求时,获取测试请求所请求的目标代码的标识信息,从而根据该标识信息获取目标代码对应的目标运行日志。例如:在上述步骤S104中,响应测试请求从测试请求中获取用于标识目标运行日志的目标标识信息;从具有对应关系的标识信息和运行日志中查找目标标识信息对应的运行日志。
可选地,在被测***的测试过程中,随着被测***的运行生成该被测***的运行日志。例如:在上述步骤S104之前,向被测***发送调用请求,其中,调用请求用于请求调用被测***;在接收到被测***发送的确认信息的情况下,运行被测***并存储被测***在运行过程中生成的运行日志,其中,确认信息用于指示被测***调用成功。
可选地,可以但不限于通过以下方式之一存储被测***在运行过程中生成的运行日志:
方式一,将程序代码的代码标识作为运行日志的标识信息,建立其与运行日志之间的对应关系,并存储具有该对应关系的代码标识和运行日志。例如:获取被测***在运行过程中生成的运行日志以及运行日志生成时被测***运行的程序代码的代码标识,并将代码标识确定为运行日志的标识信息;建立运行日志和代码标识之间的对应关系;存储具有对应关系的运行日志和代码标识。
方式二,为运行日志分配日志标识,建立该日志标识与运行日志之间的对应关系,并存储具有该对应关系的日志标识和运行日志。例如:获取被测***在运行过程中生成的运行日志;为运行日志分配日志标识,并将日志标识确定为运行日志的标识信息;建立运行日志和日志标识之间的对应关系;存储具有对应关系的运行日志和日志标识。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
根据本发明实施例的另一个方面,还提供了一种用于实施上述***的测试方法的***的测试装置,如图3所示,该装置包括:
1)接收模块32,用于接收测试***发送的测试请求,其中,测试请求用于请求对被测***中的目标代码进行测试;
2)获取模块34,用于响应测试请求从被测***的运行日志中获取目标代码对应的目标运行日志,其中,运行日志为被测***运行的过程中生成的日志,目标运行日志为被测***运行目标代码时生成的日志;
3)第一发送模块36,用于向测试***发送目标运行日志,其中,目标运行日志用于测试***对目标代码进行测试。
可选地,在本实施例中,上述***的测试装置可以应用于如图2所示的日志查询服务***202、测试***204和被测***206所构成的硬件环境中。如图2所示,日志查询服务***202接收测试***204发送的测试请求,其中,测试请求用于请求对被测***206中的目标代码进行测试。日志查询服务***202响应测试请求从被测***206的运行日志中获取目标代码对应的目标运行日志,其中,运行日志为被测***206运行的过程中生成的日志,目标运行日志为被测***206运行目标代码时生成的日志。日志查询服务***202向测试***204发送目标运行日志,其中,目标运行日志用于测试***204对目标代码进行测试。
可选地,在本实施例中,上述***的测试装置可以但不限于应用于由测试***对被测***进行自动化测试的场景中,以提高对***的自动化测试方案的测试准确性和测试效率。上述仅是一种示例,本实施例中对此不做任何限定。
可见,通过上述装置,在被测***运行时为运行的代码生成其对应的日志,当需要对代码进行测试时,获取接收到的测试请求所请求的目标代码对应的目标运行日志,将该目标运行日志发送给测试***,以指示测试***对目标代码进行测试,从而实现了对指定代码的测试,从而实现了提高对***的自动化测试方案的测试准确性和测试效率的技术效果,进而解决了相关技术中对***的自动化测试方案测试准确性和测试效率较低的技术问题。
作为一种可选的方案,如图4所示,上述获取模块34包括:
1)获取单元42,用于响应测试请求从测试请求中获取用于标识目标运行日志的目标标识信息;
2)查找单元44,用于从具有对应关系的标识信息和运行日志中查找目标标识信息对应的运行日志。
可选地,通过具有对应关系的标识信息和运行日志来对被测***的运行日志进行存储,也就是说,可以给为运行代码生成的运行日志分配标识信息,并以标识信息为key值,以运行日志为value值的key-value键值对的形式存储标识信息和运行日志,当接收到测试请求时,获取测试请求所请求的目标代码的标识信息,从而根据该标识信息获取目标代码对应的目标运行日志。
作为一种可选的方案,如图5所示,上述装置还包括:
1)第二发送模块52,用于向被测***发送调用请求,其中,调用请求用于请求调用被测***;
2)处理模块54,用于在接收到被测***发送的确认信息的情况下,运行被测***并存储被测***在运行过程中生成的运行日志,其中,确认信息用于指示被测***调用成功。
可选地,在被测***的测试过程中,随着被测***的运行生成该被测***的运行日志。
作为一种可选的方案,如图6所示,处理模块54包括:
1)第一处理单元62,用于获取被测***在运行过程中生成的运行日志以及运行日志生成时被测***运行的程序代码的代码标识,并将代码标识确定为运行日志的标识信息;建立运行日志和代码标识之间的对应关系;存储具有对应关系的运行日志和代码标识;或者,
2)第二处理单元64,用于获取被测***在运行过程中生成的运行日志;为运行日志分配日志标识,并将日志标识确定为运行日志的标识信息;建立运行日志和日志标识之间的对应关系;存储具有对应关系的运行日志和日志标识。
可选地,可以通过上述处理单元之一存储被测***在运行过程中生成的运行日志。
可选地,通过第一处理单元将程序代码的代码标识作为运行日志的标识信息,建立其与运行日志之间的对应关系,并存储具有该对应关系的代码标识和运行日志。通过第二处理单元为运行日志分配日志标识,建立该日志标识与运行日志之间的对应关系,并存储具有该对应关系的日志标识和运行日志。
本发明实施例的应用环境可以但不限于参照上述实施例中的应用环境,本实施例中对此不再赘述。本发明实施例提供了用于实施上述实时通信的连接方法的一种可选的具体应用示例。
作为一种可选的实施例,上述***的测试方法可以但不限于应用于如图7所示的通过测试***对被测***进行测试的场景中。在本场景中,提供了一个日志查询服务。代码的实现过程中,在逻辑处理的关键点去日志文件中写入相应的日志。在自动化测试的过程中,通过调用日志查询服务的接口,传入需要断言的日志文件、日志关键字等信息,查询日志文件中是否存在该日志,接口返回是否查找到对应的日志内容。在测试过程中对日志查询接口的返回做断言。
如图8所示:从A到C,可以通过B1到达,也可以通过B2到达。在本场景中,可以在经过B1时打出关于B1的日志,在经过B2时打出B2的日志。
可选地,在本场景中,想要在断言时能唯一确定一个请求所对应的日志。可以通过如下2种方法标识日志:
方式1,在打B1相关的日志时,顺便打与请求相关的唯一键,如:请求号。对于不同的请求,请求号都不一样,这样在断言时就能找到对应于这笔请求的日志,而不会被其他请求所干扰。
方式2,对于没有唯一键的请求,在每笔请求写日志之前,把以前的日志文件变成其它格式,再新建日志文件写日志。如:日志文件为order.log,在一笔请求进来时,我们先将order.log改名为orderX.log(X为随机序列),再新建一个order.log文件,写入与该请求相关的日志。
可选地,如图7所示,可以通过以下步骤对被测***进行测试:
步骤1,测试***调用被测***。(被测***在代码实现的过程中,在日志文件中写入相应的日志)。
步骤2,被测***返回调用成功。
步骤3,测试***调用日志查询服务。
步骤4,日志查询服务查询被测***日志(如:查询在测试过程中是否产生了B1的日志)。
步骤5,日志查询服务得到查询结果。
步骤6,日志查询服务将查询结果返回给测试***。
步骤7,测试***对返回结果做断言。
通过上述实施例可知,目前的测试断言方案主要是对接口返回值和数据库数据的断言,但是对于接口返回相同、数据库的数据也相同,但是实现方案不同的场景,无法断言是通过哪种方式实现的。而在上述场景中可以精确判断测试过程中代码的执行轨迹。此外,该测试方法可以单独使用,也可以作为已有测试方法的补充测试方案。
根据本发明实施例的又一个方面,还提供了一种用于实施上述***的测试的电子装置,如图9所示,该电子装置包括:一个或多个(图中仅示出一个)处理器902、存储器904、传感器906、编码器908以及传输装置910,该存储器中存储有计算机程序,该处理器被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子装置可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,接收测试***发送的测试请求,其中,测试请求用于请求对被测***中的目标代码进行测试;
S2,响应测试请求从被测***的运行日志中获取目标代码对应的目标运行日志,其中,运行日志为被测***运行的过程中生成的日志,目标运行日志为被测***运行目标代码时生成的日志;
S3,向测试***发送目标运行日志,其中,目标运行日志用于测试***对目标代码进行测试。
可选地,本领域普通技术人员可以理解,图7所示的结构仅为示意,电子装置也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图9其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图9中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图9所示不同的配置。
其中,存储器902可用于存储软件程序以及模块,如本发明实施例中的***的测试方法和装置对应的程序指令/模块,处理器904通过运行存储在存储器902内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的目标组件的控制方法。存储器902可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器902可进一步包括相对于处理器904远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置910用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置910包括一个网络适配器(NetworkInterface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置910为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器902用于存储应用程序。
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,接收测试***发送的测试请求,其中,测试请求用于请求对被测***中的目标代码进行测试;
S2,响应测试请求从被测***的运行日志中获取目标代码对应的目标运行日志,其中,运行日志为被测***运行的过程中生成的日志,目标运行日志为被测***运行目标代码时生成的日志;
S3,向测试***发送目标运行日志,其中,目标运行日志用于测试***对目标代码进行测试。
可选地,存储介质还被设置为存储用于执行上述实施例中的方法中所包括的步骤的计算机程序,本实施例中对此不再赘述。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。