一种服务器端的自动化接口测试方法及系统与流程

文档序号:11949923阅读:156来源:国知局
一种服务器端的自动化接口测试方法及系统与流程
本申请涉及计算机及网络
技术领域
,尤其涉及一种服务器端的自动化接口测试方法及系统。
背景技术
:接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与本系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。接口测试是保证高复杂性系统质量的内在要求和低成本的经济利益的驱动作用下的最佳解决方案。首先,接口测试能够有效节省总的测试成本,根据数据模型推算,底层的一个bug能够引发上层的8个左右bug,而且底层的bug很容易引起全网的宕机。相反,接口测试能够提供系统复杂度上升情况下的低成本高效率的解决方案;其次,接口测试不同于传统开发的单元测试,接口测试是站在用户的角度对系统接口进行全面高效持续的检测。由于服务器端的接口众多,关系复杂,如果要对服务器内部开展接口测试,需要将当前被测模块与其他依赖模块隔离构造独立的测试环境,忽略被测对象的依赖对象,实现起来需要借用Mock等技术,而使用Mock技术难度较大,成本较高。技术实现要素:本申请提供了一种服务器端的自动化接口测试方法及系统,能够降低模块间的依赖关系对测试的影响。本申请实施例提供的一种服务器端的自动化接口测试系统,该系统包括:网络引擎模块,测试用例执行模块和测试结果处理模块;网络引擎模块,用于实现连接游戏服务器、登陆游戏服务器、将测试数据或者测试行为转换为数据流,以及使用套接字发送数据流到游戏服务器和接收游戏服务器传回的数据流并解析等功能;测试用例执行模块,用于调用网络引擎模块执行测试用例对应的测试脚本;测试结果处理模块用于调用网络引擎模块,使用套接字接收服务器端返回的信息,通过消息包的属性类型将二进制数据流转换为属性数据,将测试用例预期结果与从服 务器收到的结果进行比对,如果预期结果等于实际结果则测试通过,生成检测通过的结果;如果实际结果不符合预期结果要求则测试失败,生成测试失败的结果;以及保存测试结果。较佳地,该系统进一步包括:计划任务触发模块,用于通过计划任务触发该测试系统在指定时间自动运行。较佳地,该系统进一步包括:脚本管理模块,用于统一管理各个测试脚本,提供对测试脚本的修改接口及界面。较佳地,所述测试用例执行模块包括如下子模块:前置执行子模块,用于创建一个套接字和游戏服务器进行连接,创建一个游戏角色并登陆游戏场景中,为后续操作向服务器端通过该套接字发送验证数据流做准备;测试子模块,用于将待测试的游戏服务器端接口所对应的网络消息包属性值包转换为二进制数据流,将二进制数据流通过套接字发送给游戏服务器。较佳地,所述测试结果处理模块进一步包括:结果展示单元,用于将测试结果日志以邮件的形式发送给技术人员或者将测试结果日志转换成HTML文件在网站上显示。本申请实施例还提供了一种服务器端的自动化接口测试方法,该方法由如前所述的服务器端的自动化接口测试系统实现,包括如下步骤:A、调用网络引擎模块连接游戏服务器、登陆游戏服务器、将测试数据或者测试行为转换为数据流,以及使用套接字发送数据流到游戏服务器;B、使用套接字接收服务器端返回的信息,通过消息包的属性类型将二进制数据流转换为属性数据,将测试用例预期结果与从服务器收到的结果进行比对,如果预期结果等于实际结果则测试通过,生成检测通过的结果;如果实际结果不符合预期结果要求则测试失败,生成测试失败的结果;以及保存测试结果。较佳地,该方法进一步包括:通过计划任务触发执行所述步骤A及步骤B。较佳地,该方法进一步包括:统一管理各个测试脚本,提供对测试脚本的修改接口及界面。较佳地,步骤A进一步包括:创建一个套接字和游戏服务器进行连接,创建一个游戏角色并登陆游戏场景中,为后续操作向服务器端通过该套接字发送验证数据流做准备;将待测试的游戏服务器端接口所对应的网络消息包属性值包转换为二进制数据流,将二进制数据流通过套接字发送给游戏服务器。较佳地,步骤B之后进一步包括:将测试结果日志以邮件的形式发送给技术人员 或者将测试结果日志转换成HTML文件在网站上显示。从以上技术方案可以看出,将接口测试功能从服务器中剥离出来,使用套接字将专门的测试系统与游戏服务器端连接起来,测试系统发送数据流到测试游戏服务器暴露出来的接口以实现测试过程,通过事先封装好的网络引擎模块提供连接服务器、登陆服务器、发送接收报文等函数,具体运行测试用例时只需要向服务器输入构造出来的二进制数据流即可,便于技术人员后续维护。在本申请的较佳实施例中,通过计划任务触发模块,可以很稳定的实现定时启动,自动化测试,节省人力;将测试过程中用到的脚本,统一由脚本管理模块进行管理,方便修改,方便统一执行,使得修改更为便捷;使用业内通用的自动化测试框架NUnit,可以直接使用,便于维护,让技术人员重点关注测试用例的编写,至于用例执行顺序,结果日志文件生成均由开源的框架实现,提高开发效率。附图说明图1为本申请实施例提供的服务器端的自动化接口测试系统框图;图2为本申请实施例提供自动化接口测试方法流程图。具体实施方式为使本申请技术方案的技术原理、特点以及技术效果更加清楚,以下结合具体实施例对本申请技术方案进行详细阐述。实施例以对一种网络游戏系统的服务器端进行测试为例,对本申请方案进行说明。图1为本申请实施例提供的服务器端的自动化接口测试系统,包括网络引擎模块101,计划任务触发模块102,脚本管理模块103、测试用例执行模块104,测试结果处理模块105。计划任务触发模块102用于通过计划任务触发该测试系统在指定时间自动运行。该模块为可选模块,也可根据需要,由人工在控制台启动该测试系统。网络引擎模块101,用于实现连接游戏服务器、登陆游戏服务器、将测试数据或者测试行为转换为数据流,以及发送数据流到游戏服务器和接收游戏服务器传回的数据流并解析等功能。以便测试用例执行模块能够使用网络引擎模块提供的功能连接游戏服务器、登陆游戏场景,并进行测试中的数据传输。脚本管理模块103,用于统一管理各个测试脚本,提供对测试脚本的修改接口及界面。测试用例执行模块104,顾名思义,该模块用于调用网络引擎模块执行测试用例对应的各种测试脚本。其中包括如下子模块:前置执行子模块,用于创建一个套接字(socket)和游戏服务器进行连接,创建一个游戏角色并登陆游戏场景中,为后续操作向服务器端通过该socket发送验证数据流做准备。在游戏领域,游戏客户端通过Socket与游戏服务器端进行通信,socket是客户端与服务区之间的通信桥梁。测试子模块,用于将待测试的游戏服务器端接口所对应的网络消息包属性值包转换为二进制数据流,将二进制数据流通过socket发送给游戏服务器,测试结果处理模块用于调用网络引擎模块,使用套接字Socket.receive接收服务器端返回的信息,通过消息包的属性类型将二进制数据流转换为属性数据,将测试用例预期结果与从服务器收到的结果进行比对,如果预期结果等于实际结果则测试通过,生成检测通过的结果;如果实际结果不符合预期结果要求则测试失败,生成测试失败的结果,保存测试结果,并将测试结果日志以邮件的形式发送给技术人员或者将测试结果日志转换成HTML文件在网站上显示。本申请实施例还提供了一种服务器端的自动化接口测试方法,由所述服务器端的自动化接口测试系统实现,如图2所示,包括如下步骤:步骤201:调用网络引擎模块连接游戏服务器、登陆游戏服务器、将测试数据或者测试行为转换为数据流,以及使用套接字发送数据流到游戏服务器;步骤202:使用套接字接收服务器端返回的信息,通过消息包的属性类型将二进制数据流转换为属性数据,将测试用例预期结果与从服务器收到的结果进行比对,如果预期结果等于实际结果则测试通过,生成检测通过的结果;如果实际结果不符合预期结果要求则测试失败,生成测试失败的结果;以及保存测试结果。根据本申请的另一实施例,通过计划任务触发执行所述步骤201及步骤202。根据本申请的另一实施例,该方法进一步包括:统一管理各个测试脚本,提供对测试脚本的修改接口及界面。根据本申请的另一实施例,步骤201进一步包括:创建一个套接字和游戏服务器进行连接,创建一个游戏角色并登陆游戏场景中,为后续操作向服务器端通过该套接字发送验证数据流做准备;将待测试的游戏服务器端接口所对应的网络消息包属性值包转换为二进制数据流,将二进制数据流通过套接字发送给游戏服务器。根据本申请的另一实施例,步骤202之后进一步包括:将测试结果日志以邮件的形式发送给技术人员或者将测试结果日志转换成HTML文件在网站上显示。以下通过一个具体的测试用例(测试游戏服务器端移除物品接口)为例,说明该测试系统的运作过程。游戏服务器端提供RemoveItem接口供游戏客户端调用,请求报文参数如下参数名称参数描述字符类型字符值ItemGuid物品GUIDUInt64uiSrcSlotKey物品槽坐标UInt32iCount移除数量Int32生成请求报文代码如下:在计划任务触发模块中设置一条windows系统定时任务,该计划任务在每天指定时间自动运行“自动运行脚本(RunRegressTest.cmd)”。脚本管理模块中维护一个自动运行脚本(RunRegressTest.cmd),该脚本调用后续几个脚本:运行检测规则脚本(Run.cmd)、展示检测结果脚本。RunRegressTest.cmd代码逻辑用伪代码表示如下:测试用例执行模块由运行检测规则脚本实现,用伪代码表示如下:.\Nunit\nunit-console.exe%EXE_DIR%RegressTest.dll其中nunit-console.exe是NUnit测试框架的控制台运行方式。RegressTest.dll是基于NUnit框架编写的测试用例脚本,使用C#语言编写,将验证游戏服务器端接口测试过程用脚本实现。以检查服务器端开放的RemoveItemHandler接口为例,大体检测逻辑如下:运行结果保存在日志文件中。测试结果处理模块由展示检测结果脚本实现,将检测结果日志文件以邮件的形式发送给技术人员或者将检测结果log转换成HTML文件在网站上显示。假设以发送邮件为例,大体逻辑:本申请技术方案将接口测试功能从服务器中剥离出来,使用套接字(Socket)将专门的测试系统与游戏服务器端连接起来,测试系统发送数据流到测试游戏服务器暴露出来的接口以实现测试过程,通过事先封装好的网络引擎模块提供连接服务器、登陆服务器、发送接收报文等函数,具体运行测试用例时只需要向服务器输入构造出来的二进制数据流即可,便于技术人员后续维护;用计划任务触发模块,可以很稳定的实现定时启动,自动化测试,节省人力;将测试过程中用到的脚本,统一由脚本管理模块进行管理,方便修改,方便统一执行,使得修改更 为便捷;使用业内通用的自动化测试框架NUnit,可以直接使用,便于维护,让技术人员重点关注测试用例的编写,至于用例执行顺序,结果日志文件生成均由开源的框架实现,提高开发效率。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请的保护范围,凡在本申请技术方案的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1