本发明涉及RPC(Remote Procedure Call Protocol,远程过程调用协议,通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议)接口测试领域,具体涉及一种RPC接口测试方法及系统。
背景技术:
接口测试(对系统组件间接口进行测试)主要用于检测外部系统与系统(包括各个子系统)之间的交互点,接口测试重点为检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
目前,Web测试中的接口测试主要关注前端服务中基于http协议的post(传送数据)和get(获取数据)请求,而对后端服务中较通用的RPC接口测试研究不多,RPC接口的测试方法尚无,进而会使得RPC服务使用时存在以下缺陷:
RPC服务在创建和初期使用时出现的问题比较隐蔽,无法及时修复,若该问题在RPC服务完善后再来修复,则会重新大幅度修整RPC服务,不仅操作过程比较复杂,而且修复成本较高。
技术实现要素:
针对现有技术中存在的缺陷,本发明解决的技术问题为:提供一种RPC接口测试方法及系统,本发明能够在RPC服务出现问题时及时发现并修复,简化了后期的操作过程和维修成本。
为达到以上目的,本发明提供的RPC接口测试方法,包括以下步骤:
S1:在服务器上建立Socket连接,通过Socket与RPC接口进行通信,读取预先设置的RPC服务的服务器配置信息、测试数据配置文件和数据库配置文件,转到S2;
所述服务器配置信息包括用于写入RPC调用语言的命令行终端和公共RPC的调用方法;
S2:运行测试所需的驱动数据后,加载所述测试数据配置文件和数据库配置文件,通过公共RPC的调用方法在服务器上进行RPC服务登录,转到S3;
S3:在命令行终端上写入测试数据配置文件的测试参数,根据测试参数进行测试。
在上述技术方案的基础上,S3中所述根据测试参数进行测试的具体流程为:读取测试数据配置文件中预先定义的不正确或正确的用户数据;执行S3的过程中,若出现异常,则捕获异常信息。
在上述技术方案的基础上,S3之后还包括以下步骤:根据预先设置的测试场景恢复配置,进行测试场景恢复。
在上述技术方案的基础上,S1中所述通过Socket与RPC接口进行通信之后,还包括以下步骤:读取预先设置的Socket的服务器配置信息。
在上述技术方案的基础上,S1中所述服务器配置信息还包括服务器ip、RPC服务的端口号和RPC服务的消息码。
本发明提供的实现上述方法的RPC接口测试系统,包括测试连接建立模块、测试驱动登陆模块和RPC接口测试模块;
测试连接建立模块用于:在服务器上建立Socket连接,通过Socket与RPC接口进行通信,读取预先设置的RPC服务的服务器配置信息、测试数据配置文件和数据库配置文件,向测试驱动登陆模块发送测试驱动登陆信号;
所述服务器配置信息包括用于写入RPC调用语言的命令行终端和公共RPC的调用方法;
测试驱动登陆模块用于:收到测试驱动登陆信号后,运行测试所需的驱动数据,加载所述测试数据配置文件和数据库配置文件,通过公共RPC的调用方法在服务器上进行RPC服务登录,向RPC接口测试模块发送RPC接口测试信号;
RPC接口测试模块用于:收到RPC接口测试信号后,在命令行终端上写入测试数据配置文件的测试参数,根据测试参数进行测试。
在上述技术方案的基础上,所述RPC接口测试模块根据测试参数进行测试的具体流程为:读取测试数据配置文件中预先定义的不正确或正确的用户数据;测试过程中,若出现异常,则捕获异常信息。
在上述技术方案的基础上,该系统还包括测试测试场景恢复模块,其用于:在RPC接口测试模块测试完成后,根据预先设置的测试场景恢复配置,进行测试场景恢复。
在上述技术方案的基础上,所述测试连接建立模块通过Socket与RPC接口进行通信之后,还包括以下工作流程:读取预先设置的Socket的服务器配置信息。
在上述技术方案的基础上,所述测试连接建立模块读取的服务器配置信息,还包括服务器ip、RPC服务的端口号和RPC服务的消息码。
与现有技术相比,本发明的优点在于:
本发明根据自行创造的测试方式,能够完成RPC接口的测试,进而使得RPC服务出现问题时能够及时发现并修复,简化了后期的操作过程和维修成本。
附图说明
图1为本发明实施例中RPC接口测试方法的流程图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
本发明实施例中的RPC接口测试方法,借鉴了数据驱动的测试自动化思想(以数据来控制自动化测试的流程和动作的测试,其中数据是独立于测试用例脚本的,通常以文本文件形式、Excel文件形式、XML文件等形式存在),以Python语言(面向对象、解释型计算机程序设计语言)为主实现了后端服务器的Socket通信和RPC调用,并结合软件测试中的边界值、等价类、正交试验设计等方法编写接口测试用例。
其中Socket通信通常也称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。
本发明实施例进行RPC接口测试之前,需要实现与后端服务器的Socket进行通信、以及通过Python语言调用具体的RPC服务(RPC接口承载的是RPC服务)。
与后端服务器的Socket进行通信的流程为:
(1)定义socket管理类,包括创建连接-create Socket()、发送数据-send Data()、接收数据-recvData()、和关闭连接-close Socket()。
(2)定义数据包处理类,包括数据包解码-decode()、编码-encode()、字符过滤-filter()。
(3)定义RPC调用类,RPC调用类包括读取后端服务器配置信息:-processServerInfo()、读取测试数据配置-processYaml()、读取数据库配置-processMysql()、后端服务登录-loginClient()、公共的RPC调用方法-callRPC()。
通过Python语言调用具体的RPC的流程为:
(1)定义具体RPC的调用方法:call_RPC_A(args[])。
(2)定义执行RPC调用类,执行RPC调用类类包括场景初始化-init()、执行具体RPC调用-test_RPC_A()、测试场景恢复配置-cover()。
(3)定义驱动数据。
在此基础上,本发明实施例中的RPC接口测试方法,包括以下步骤:
S1:在后台服务器上建立Socket连接,通过Socket与RPC接口进行通信,分别读取预先设置的RPC服务的服务器配置信息、RPC服务的测试数据配置文件、RPC服务的数据库配置文件、以及Socket的服务器配置信息,转到S2。
S1中RPC服务的服务器配置信息包括服务器ip、RPC服务的端口号port、RPC的消息码、用于写入RPC调用语言的命令行终端和公共的RPC调用方法。
S2:运行测试所需的驱动数据后,加载S1中的测试数据配置文件和数据库配置文件,通过公共的RPC调用方法在后台服务器上进行RPC服务登录,转到S3。
S3:在命令行终端上写入测试数据配置文件的实际测试参数,根据测试参数进行测试test_RPC_get_member_ban_info(),转到S4。
S3中根据测试参数进行测试可以为以下2种中的任意1种流程:
(1)test_case_error_uid:读取测试数据配置文件中预先定义的不正确的用户数据;
(2)test_case_correct_uid:读取测试数据配置文件中预先定义的正确的用户数据。
S3中若测试过程中出现异常(例如读取测试数据配置文件错误等),则捕获并打印异常信息。
S4:根据预先设置的测试场景恢复配置,进行测试场景恢复(例如将测试场景恢复为RPC的正常工作场景等)。
本发明实施例提供的实现上述方法的RPC接口测试系统,包括测试连接建立模块、测试驱动登陆模块、RPC接口测试模块和测试测试场景恢复模块。
测试连接建立模块用于:在服务器上建立Socket连接,通过Socket与RPC接口进行通信,读取预先设置的RPC服务的服务器配置信息、测试数据配置文件、数据库配置文件、以及Socket的服务器配置信息,向测试驱动登陆模块发送测试驱动登陆信号。
所述服务器配置信息包括服务器ip、RPC服务的端口号port、RPC的消息码、用于写入RPC调用语言的命令行终端和公共的RPC调用方法。
测试驱动登陆模块用于:收到测试驱动登陆信号后,运行测试所需的驱动数据,加载所述测试数据配置文件和数据库配置文件,通过公共RPC的调用方法在服务器上进行RPC服务登录,向RPC接口测试模块发送RPC接口测试信号。
RPC接口测试模块用于:收到RPC接口测试信号后,在命令行终端上写入测试数据配置文件的测试参数,根据测试参数进行测试,测试的具体工作流程为:读取测试数据配置文件中预先定义的不正确或正确的用户数据;测试过程中,若出现异常,则捕获异常信息。
测试测试场景恢复模块用于:在RPC接口测试模块测试完成后,根据预先设置的测试场景恢复配置,进行测试场景恢复。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/182321.html原文链接:https://javaforall.cn