首页 / 一种软件测试方法和软件测试客户端

一种软件测试方法和软件测试客户端有效专利 发明

技术领域

[0001] 本发明实施例涉及软件测试技术领域,具体涉及一种软件测试方法和软件测试客户端。

相关背景技术

[0002] 本部分向读者介绍可能与本发明的各个方面相关的背景技术,相信能够向读者提供有用的背景信息,从而有助于读者更好地理解本发明的各个方面。因此,可以理解,本部分的说明是用于上述目的,而并非构成对现有技术的承认。
[0003] thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发,结合了功能强大的软件堆栈和代码生成引擎,以构建在C++,Java,Go,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Cocoa,JavaScript,Node.js,Smalltalk,and OCaml这些编程语言间无缝结合的、高效的服务。
[0004] thrift作为业内广泛应用的RPC(Remote Procedure Call Protocol,远程过程调用协议)通信软件框架,用来进行可扩展且跨语言的服务的开发。目前,服务端接口大量采用thrift的方式进行数据传输,然而对于客户端调用而言,每一次新开发的服务接口要根据idl文件生成对应的数据结构,编写客户端连接方式,数据传输协议。针对不同的接口编写不同的调用函数,从工程的角度来讲,客户端用面向对象语言对每个接口调用进行封装的确是种可靠的方式。但是,对于测试工程师而言,测试场景情景多变,接口多样化,性能测试代码不能复用,需要大量的二次开发。同时对测试人员的个人开发能力有限,大大影响测试的工作效率,使后端测试过于人工化。目前,现有技术中的客户端多是依赖服务端接口构造而成,没有通用化的解决方案。

具体实施方式

[0023] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0024] 如图1所示,本发明提供一种软件测试方法,包括:与服务端协商生成软件测试配置文件;调用软件测试配置文件中的接口函数生成软件测试程序;根据软件测试配置文件向服务端请求软件测试参数;根据从服务端获取的所述软件测试参数执行软件测试程序对软件执行测试。下面对本发明提供的软件测试方法展开详细的说明。
[0025] 首先,介绍与服务端协商生成软件测试配置文件。
[0026] 在本发明中,需要进行软件测试时,软件测试客户端与服务端通信,软件测试客户端与服务端端沟通后服务端协商生成软件测试配置文件。在本发明中,如果软件测试客户端为python编写的软件测试客户端,则该软件测试客户端与服务端协商生成的软件测试配置文件为IDL文件。软件测试客户端与服务端端沟通后服务端协商生成软件测试配置文件包括传输协议、接口调用配置信息等软件测试用信息。
[0027] 其次,介绍调用软件测试配置文件中的接口函数生成软件测试程序。
[0028] 在生成软件测试程序时,软件测试客户端加载软件测试配置文件,例如python软件测试客户端自动加载生生的IDL文件生成对应类。软件测试客户端调用软件测试配置文件中预先配置好的接口函数。根据参数的类型利用反射机制动态加载相关数据,以利用软件测试配置文件动态形成结构化数据,进而生成软件测试程序。具体地,例如对于接口函数中的参数,可以根据参数的类型利用python反射机制动态地快速加载,根据IDL文件动态形成结构化数据。当涉及嵌套结构体时(即参数为结构体,该结构体中还包含了定义的结构体),可以根据结构体的名称利用python的反射机制快速递归加载。如图2所示,CouponInfo为thrift定义的一种数据结构,包含一些基本类型和其他自定义的数据结构。其中其他自定义的数据结构可以是嵌套结构体。
[0029] 再次,根据软件测试配置文件向服务端请求软件测试参数。
[0030] 如图3所示,在本发明中软件测试客户端的软件测试配置文件中,配置有与的服务端通信的端口IP、调用接口名、发送请求的数据名称、及对应的数据类型,对于基本的数据结构,直接表达即可,对于自定义的数据结构客户端对数据进行自动装载。
[0031] 在本发明中,软件测试客户端加载软件测试配置文件中的接口函数生成软件测试程序后,根据软件测试配置文件中传输协议向服务器发送请求软件测试参数。
[0032] 最后,根据从服务端获取的所述软件测试参数执行软件测试程序对软件执行测试。
[0033] 软件测试客户端在获得服务器响应返回的软件测试参数后,将软件测试参数装载软件测试程序,执行软件测试程序对软件执行测试。软件测试客户端在获得服务器响应返回的软件测试参数时,软件测试参数也会根据不同数据结构进行去结构化,能方便快捷的获取调用结果。
[0034] 在本发明中,通过python的反射机制,能够根据软件测试配置文件,动态的调用服务端,来调用远程服务;同时,通过反射机制,对嵌套结构体根据结构体的名称对结构体进行递归加载,根据配置动态生成结构化数据,执行软件测试。例如,本发明可以利用python边解释边执行,将客户端的配置参数发送给服务器端,当出现客户端的配置参数需要更改时,有不需要编译,可以直接在结构体中改写参数定义。
[0035] 为进一步体现本发明提供的软件测试方法的优越性,本发明还提供应用上述软件测试方法的软件测试客户端,如图4所示,该软件测试客户端包括:配置文件生成单元,用于与服务端协商生成软件测试配置文件;测试程序生成单元,用于调用软件测试配置文件中的接口函数生成软件测试程序;测试参数获取单元,用于根据软件测试配置文件向服务端请求软件测试参数;软件测试单元,用于根据从服务端获取的所述软件测试参数执行软件测试程序对软件执行测试。下面对本发明和提供的软件测试客户端展开详细的说明。本发明提供的软件测试客户端的工作过程与上述通信方法类似,具体可以参照上述方法执行,在此不再赘述。
[0036] 在本发明中,所述测试程序生成单元具体用于调用软件测试配置文件中的接口函数,根据参数的类型利用反射机制动态加载,根软件测试配置文件文件动态形成结构化数据生成软件测试程序。在生成软件测试程序时,软件测试客户端加载软件测试配置文件,例如python软件测试客户端自动加载生生的IDL文件生成对应类。软件测试客户端调用软件测试配置文件中预先配置好的接口函数。根据参数的类型利用反射机制动态加载,根软件测试配置文件动态形成结构化数据生成软件测试程序。具体地,例如对于接口函数中的参数,可以根据参数的类型利用python反射机制动态地快速加载,根据IDL文件动态形成结构化数据。所述测试程序生成单元还包括:嵌套结构体加载单元,用于根据结构体的名称利用反射机制对嵌套结构体快速递归加载。当涉及嵌套结构体时(即参数为结构体,该结构体中还包含了定义的结构体),可以根据结构体的名称利用python的反射机制快速递归加载。如图2所示,CouponInfo为thrift定义的一种数据结构,包含一些基本类型和其他自定义的数据结构。其中其他自定义的数据结构可以是嵌套结构体。
[0037] 综上所述,本发明提供的软件测试方法和软件测试客户端,生成一种无须二次开发的通用测试框架,通过配置文件直接进行测试,可以根据对应客户端框架生成性能测试工具,能够更好的适用于不同环境下的功能测试。同时,本发明对于性能测试的反射机制远远快于java的反射机制,能够满足性能测试需求,减少人工开发量,减少了人力成本,降低测试门槛。
[0038] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0039] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0040] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0041] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0042] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
[0043] 本发明的说明书中,说明了大量具体细节。然而能够理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释呈反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。本发明并不局限于任何单一的方面,也不局限于任何单一的实施例,也不局限于这些方面和/或实施例的任意组合和/或置换。而且,可以单独使用本发明的每个方面和/或实施例或者与一个或更多其他方面和/或其实施例结合使用。
[0044] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

当前第1页 第1页 第2页 第3页