CN105045717A - 测试环境部署方法、装置和系统 - Google Patents
测试环境部署方法、装置和系统 Download PDFInfo
- Publication number
- CN105045717A CN105045717A CN201510508170.5A CN201510508170A CN105045717A CN 105045717 A CN105045717 A CN 105045717A CN 201510508170 A CN201510508170 A CN 201510508170A CN 105045717 A CN105045717 A CN 105045717A
- Authority
- CN
- China
- Prior art keywords
- code
- test
- tested end
- test environment
- described test
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Pinball Game Machines (AREA)
Abstract
本发明公开了测试环境部署方法、装置和系统,所述测试环境部署方法包括,利用预先在被测端建立的后门端口对所述被测端进行入侵,将测试代码植入到所述被测端中;触发所述被测端基于所述测试代码进行热更新,以实现测试环境的部署;其中,所述测试代码包括测试环境配置代码、测试脚本代码和测试结果收集代码。采用本发明可提高测试环境部署的便利性和灵活性,实现测试数据的批量修改,提高测试效率,便于测试代码的积累和复用。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种测试环境部署方法、装置和系统。
背景技术
现有的测试方法主要有以下几种:
一、单步调试:
在游戏开发与测试中,为了找到程序的漏洞(bug),单步调试方法是经常被采用的一种调试手段,一步一步地跟踪程序执行的流程,监控变量值的变化,找到bug的原因。然而,虽然通过单步调试能够有效的进行问题排查,但是其并不能进行代码修改,其测试接口参数的灵活性很差,难以实现比较复杂的测试情景。
二、GM指令:
GM指令是指面向游戏管理员开发的一些快捷指令,其本质就是一些可供调用的函数,一般会提前编写好一些常用的GM指令,需要用到的时候直接在命令行调用。GM指令根据作用目标可以分为服务端GM指令和客户端GM指令,例如可以通过GM指令在一个在游戏客户端中设置游戏人物的等级、所处的位置、状态。然而,首先,对游戏测试情景来说需要修改的代码和数据繁多,对其逐一编写GM指令的工作量巨大。其次,GM指令需要提前编写好,无法满足实时的新修改需求,难以实现多变的测试环境。再者,增加新的GM指令,需要客户端进行补丁(patch)更新和服务器进行动态更新(refresh)后才能生效。此外,GM指令只能对测试数据逐一进行修改,无法实现批量地修改测试数据,效率较低。
三、JUnit:
JUnit是由ErichGamma和KentBeck编写的一个回归测试框架(regressiontestingframework),该方法的基本思想是在编写代码的同时同步编写测试代码,使游戏测试工作和游戏开发工作以增量式同步推进。这种技术方案的好处就是发现bug时可以尽快的追踪到原因,极大地减小了回归测试时定位新出现bug的难度。然而,采用JUnit测试方法需要对原有代码和数据进行修改。同时由于JUnit是基于极限编程的思想,故其很难适应多变的游戏代码,游戏代码的每次调整都会迫使测试代码也必须做出相应调整,可复用性较差。
发明内容
本发明实施例的目的在于提供了一种测试环境部署方法、装置和系统,提高测试环境部署的便利性和灵活性,实现测试数据的批量修改,提高测试效率,便于测试代码的积累和复用。
为了实现上述目的,本发明实施例提供了一种测试环境部署方法,包括:
利用预先在被测端建立的后门端口对所述被测端进行入侵,将测试代码植入到所述被测端中;
触发所述被测端基于所述测试代码进行热更新,以实现测试环境的部署;
其中,所述测试代码包括测试环境配置代码、测试脚本代码和测试结果收集代码。
其中,所述后门端口通过在所述被测端中种植测试木马来开启。
所述测试环境配置代码包括目标函数替换代码和目标变量替换代码中的一种或两种。
优选地,所述利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中,具体为:
获取所述被测端的内存中与所述测试代码对应的程序代码;
将所述测试代码与所述程序代码进行对比;
在所述测试代码与所述程序代码存在不同时,利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中。
优选地,所述被测端基于所述测试代码进行热更新,具体为:
所述被测端将所述测试代码与所述程序代码结合,利用结合后的代码在所述被测端的内存中对所述程序代码进行替换。
优选地,在所述利用预先在被测端建立的后门端口对所述被测端进行入侵,将测试代码植入到所述被测端中之前,还包括:
获取测试代码包,对所述测试代码包进行解析,以将所述测试代码包还原为所述被测端可识别的测试代码。
优选地,所述对所述测试代码包进行解析,具体为:
调用exec函数,并利用所述exec函数对所述测试代码包进行解析。
优选地,所述测试环境部署方法还包括:
对测试执行结果进行展示;其中,所述测试执行结果通过所述被测端执行替换后的程序代码来获取。
优选地,所述获取测试代码包,对所述测试代码包进行解析,以将所述测试代码包还原为所述被测端可识别的测试代码,具体为:
获取测试代码包,将所述测试代码包发送给中转服务器,通过所述中转服务器对所述测试代码包进行解析,将所述测试代码包还原为所述被测端可识别的测试代码;
所述利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中,具体为:
通过所述中转服务器,利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中。
优选地,其特征在于,所述被测端为游戏服务器或者游戏客户端。
相应地,本发明还提供了一种测试环境部署装置,包括:
入侵模块,用于利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中;和,
热更新触发模块,用于触发所述被测端基于所述测试代码进行热更新,以实现测试环境的部署;
其中,所述测试代码包括测试环境配置代码、测试脚本代码和测试结果收集代码。
其中,所述后门端口通过在所述被测端中种植测试木马来开启。
所述测试环境配置代码包括目标函数替换代码和目标变量替换代码中的一种或两种。
优选地,所述入侵模块包括:
代码获取单元,用于获取所述被测端的内存中与所述测试代码对应的程序代码;
对比单元,用于将所述测试代码与所述程序代码进行对比;和,
植入单元,用于当所述测试代码与所述程序代码存在不同时,利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中。
优选地,所述测试环境部署装置还包括:
解析模块,用于获取测试代码包,对所述测试代码包进行解析,以将所述测试代码包还原为所述被测端可识别的测试代码。
优选地,所述解析模块包括:
调用单元,用于调用exec函数;和,
解析单元,用于利用所述exec函数对所述测试代码包进行解析。
优选地,其特征在于,所述测试环境部署装置还包括:
展示模块,用于对测试执行结果进行展示;其中,所述测试执行结果通过所述被测端执行替换后的程序代码来获取。
进一步地本发明还提供了一种测试环境部署系统,包括测试端、中转服务器和被测端;
所述测试端包括测试代码包获取模块,所述测试代码包获取模块用于获取测试代码包,并将所述测试代码包发送给中转服务器;其中,所述测试代码包包括测试环境配置代码包、测试脚本代码包和测试结果收集代码包;
所述中转服务器包括解析模块和入侵模块;
所述解析模块,用于对所述测试代码包进行解析,将所述测试代码包还原为所述被测端可识别的测试代码;
所述入侵模块,用于利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中;
所述被测端包括热更新模块,所述热更新模块用于基于所述测试代码进行热更新,以完成测试环境的部署。
其中,所述后门端口通过在所述被测端中种植测试木马来开启。
所述测试环境配置代码包包括目标函数替换代码包和目标变量替换代码包中的一种或两种。
优选地,所述解析模块包括:
调用单元,用于调用exec函数;和,
解析单元,用于利用所述exec函数对所述测试代码包进行解析。
优选地,所述入侵模块包括:
代码获取单元,用于获取所述被测端的内存中与所述测试代码对应的程序代码;
对比单元,用于将所述测试代码与所述程序代码进行对比;和,
植入单元,用于当所述测试代码与所述程序代码存在不同时,利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中。
优选地,所述热更新模块包括:
代码结合单元,用于将所述测试代码与所述程序代码结合;和,
代码替换单元,用于利用结合后的代码在所述被测端的内存中对所述程序代码进行替换。
优选地,所述被测端还包括:
执行模块,用于执行替换后的程序代码,获取测试执行结果,并将所述测试执行结果发送给所述中转服务器;
所述中转服务器还包括:
展示模块,用于对所述测试执行结果进行展示。
优选地,,所述被测端为游戏服务器或者游戏客户端。
本发明还提供了另一种测试环境部署方法,包括:
接收测试端利用预先在本地建立的后门端口入侵本地后植入的测试代码;
基于所述测试代码进行热更新,以实现测试环境的部署;
其中,所述测试代码包括测试环境配置代码、测试脚本代码和测试结果收集代码。
其中,所述后门端口通过所述测试端在本地种植测试木马来开启。
所述测试环境配置代码包括目标函数替换代码和目标变量替换代码中的一种或两种。
优选地,所述接收测试端利用预先在本地建立的后门端口入侵本地后植入的测试代码,具体为:
获取本地内存中与所述测试代码对应的程序代码,并将所述程序代码发送给所述测试端;通过所述测试端将所述测试代码与所述程序代码进行对比;
在所述测试代码与所述程序代码存在不同时,接收所述测试端利用预先在本地建立的后门端口入侵本地后植入的测试代码。
优选地,所述基于所述测试代码进行热更新,具体为:
将所述测试代码与所述程序代码结合,利用结合后的代码在内存中对所述程序代码进行替换。
优选地,所述测试环境部署方法还包括:
执行替换后的程序代码,获取测试执行结果;
将所述测试执行结果发送给所述测试端,通过所述测试端对所述测试执行结果进行展示。
本发明实施例还提供了另一种测试环境部署装置,包括:
通信模块,用于接收测试端利用预先在本地建立的后门端口入侵本地后植入的测试代码;其中,所述测试代码包括测试环境配置代码、测试脚本代码和测试结果收集代码;和,
热更新模块,用于基于所述测试代码进行热更新,以实现测试环境的部署。
其中,所述后门端口通过所述测试端在本地种植测试木马来开启。
所述测试环境配置代码包括目标函数替换代码和目标变量替换代码中的一种或两种。
优选地,所述通信模块包括:
发送单元,用于获取本地内存中与所述测试代码对应的程序代码,并将所述程序代码发送给所述测试端;通过所述测试端将所述测试代码与所述程序代码进行对比;和,
接收单元,用于在所述测试代码与所述程序代码存在不同时,接收测试端利用预先在本地建立的后门端口入侵本地后植入的测试代码。
优选地,所述热更新模块包括:
代码结合单元,用于将所述测试代码与所述程序代码结合;和,
代码替换单元,用于利用结合后的代码在本地内存中对所述程序代码进行替换。
优选地,所述测试环境部署装置还包括:
代码执行模块,用于执行替换后的程序代码,获取测试执行结果;和,
结果发送模块,用于将所述测试执行结果发送给所述测试端,通过所述测试端对所述测试执行结果进行展示。
本发明通过预先在被测端建立的后门端口对被测端进行入侵,将测试代码植入到所述被测端中;使得所述被测端基于所述测试代码进行热更新。首先,本发明被测试端基于测试代码进行热更新,所有逻辑改动采用覆盖或重载的方式,所有测试数据的修改均是在内存中完成,不会对被测端中的原代码和本地数据表产生任何修改和影响,热更新后的被测端也无需重启设备,可直接进行测试。其次,本发明利用预先在被测端建立的后门端口对所述被测端进行入侵并将测试代码植入到所述被测端中,无需代码修改权限即可实现测试环境的部署;再者,本发明通过测试代码的植入更新,支持测试数据的实时批量修改,便于构建复杂多变的测试环境,有利于提高工作效率。此外,本发明的测试代码与被测对象之间相互独立,有利于测试代码的复用和积累。
附图说明
图1是本发明提供的测试环境部署方法的一个实施例的流程图;
图2是如图1所示实施例提供的步骤S11的流程图;
图3是本发明提供的测试环境部署方法的另一个实施例的流程图;
图4是本发明提供的测试环境部署方法的又一个实施例的流程图;
图5是本发明提供的测试环境部署装置的一个实施例的结构示意图;
图6是本发明提供的测试环境部署系统的一个实施例的结构示意图;
图7是如图6所示实施例提供的解析模块的结构示意图;
图8是如图6所示实施例提供的入侵模块的结构示意图;
图9是本发明提供的测试环境部署方法的再一个实施例的流程图;
图10是如图9所示实施例提供的步骤S91的流程图;
图11是如图9所示实施例提供的步骤S92的流程图;
图12是本发明提供的测试环境部署装置的又一个实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明提供的测试环境部署方法的一个实施例的流程图。
所述测试环境部署方法,包括步骤S11~S12:
S11,利用预先在被测端建立的后门端口对所述被测端进行入侵,将测试代码植入到所述被测端中。
在具体实施当中,所述被测端优选为游戏服务器或者游戏客户端,所述后门端口通过在所述被测端的原程序代码中种植测试木马来开启,开启后门端口后只要在被测对象的任何位置放置测试代码均可实现对测试端进行入侵。测试端将测试人员编写好的测试代码,利用测试木马开启的后门端口对被测端进行入侵,即可将测试代码植入到所述被测端中。
其中,所述测试代码包括测试环境配置代码、测试脚本代码和测试结果收集代码。所述测试环境配置代码为配置测试环境的相关代码,用于对被测端内存中的程序代码进行替换,以构建测试所需的测试环境,所述测试环境配置代码包括目标函数替换代码和目标变量替换代码中的一种或两种。所述目标函数替换代码用于对被测端程序代码中的目标函数进行替换,所述目标变量替换代码用于对被测端程序代码中的目标变量进行替换,所述目标变量包括全局变量和局部变量中的一种或两种。所述测试脚本代码为具体的测试逻辑,用于描述测试的具体内容,指示如何进行测试。所述测试结果收集代码用于描述测试执行结果收集的相关工作,指示如何进行测试执行结果的收集。测试执行结果主要包括测试环境配置代码的部署执行情况以及测试脚本代码的执行情况。
具体地,如图2所示,所述步骤S11包括步骤S111~S113:
S111,获取所述被测端的内存中与所述测试代码对应的程序代码。
在具体实施当中,测试人员仅需要具备被测端程序文档的查看权限,通过通用的转代码程序(如导表程序)将程序文档转化为相应的程序代码。
S112,将所述测试代码与所述程序代码进行对比。
S113,在所述测试代码与所述程序代码存在不同时,利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中。
本发明通过比对测试代码和原程序代码的异同,仅在测试代码与程序代码存在不同时,将测试代码植入到所述被测端中,已进行测试环境部署。
S12,触发所述被测端基于所述测试代码进行热更新,以实现测试环境的部署。所述热更新为在内存中对与所述测试代码对应的部分代码进行替换并重新加载,具体过程如下:
所述被测端将所述测试代码与所述程序代码结合,利用结合后的代码在所述被测端的内存中对所述程序代码进行替换。本发明通过测试代码引入新函数或变量直接将原函数或者变量进行覆盖替换,实现对被测端程序代码的逻辑修改和数据变更,达到测试环境部署的目的。
假设被测端程序中有一个名为getValue()的函数,测试环境需要将getValue函数里面valueA的值修改为2,可通过以下方法实现:在hotfix(热更新)脚本里新建一个函数,让原来的旧函数getValue()指向新函数的内存空间,这样在进行代码替换后,被测端每次执行getValue()的时候实际上将执行新函数的逻辑,valueA的值变成了2,代码如下:
除了变量值的替换修改外,本实施例提供的测试环境部署方法还可以通过测试代码引入新的函数将原程序代码中的回调函数替换掉,这样可以使得被测端在每次执行回调函数时触发执行我们需要的一些代码,如获取游戏中的一些实时数据,以在线的进行合理性判断,并进行一些实时的情景修改,当出现错误可以进行自动报警,提高了自动化测试水平。
现有的测试环境部署方法中,有代码权限的测试人员通过直接修改代码中数据表,然后重新加载数据表代码,即可实现对测试数据的修改,达到测试环境部署的目的,但是为了防止数据源因随意修改而被污染,每次修改后都要执行SVNrevert(Subversion还原)操作以撤销之前的修改。本实施例提供的测试环境部署方法,通过将测试代码与被测端内存中的原程序代码进行对比,当存在不同时,在被测端的内存中对内存中的原程序代码进行替换,以达到部署测试环境的目的,测试人员无需具有对本地代码进行修改的权限,所有测试数据的修改均是在内存中完成,不会对被测端中的原代码和本地数据表产生任何修改和影响,测试完成后无需进行数据恢复操作,大大提高了测试的便利性和灵活性。可实现批量的测试数据修改,有利于构建复杂多变的测试环境,提高测试效率。此外,本实施例中的测试代码与被测端程序代码相互独立,有利于测试代码的复用和积累。
参见图3,是本发明提供的测试环境部署方法的另一个实施例的流程图。本实施例在图1所示实施例的基础上进一步地加入了步骤S10和S13,由于步骤S11~S12与图1所示实施例中一致,本实施例中对此不再赘述,可参见图1所示实施例中的相关描述。
如图3所示,所述测试环境部署方法在步骤S11之前还包括步骤S10:
S10,获取测试代码包,对所述测试代码包进行解析,以将所述测试代码包还原为所述被测端可识别的测试代码。
在具体实施当中,测试代码通常被打包成测试代码包,被测端无法对测试代码包进行直接识别,因此,可在测试端预先注册exec_python服务,当获取到测试代码包时,通过调用python的exec函数,对所述测试代码包进行解析,将所述测试代码包还原为所述被测端可识别的测试代码。被测端根据所述测试代码进行热更新,对测试环境进行重新配置。
所述测试环境部署方法在步骤S12之后还包括步骤S13:
S13,对测试执行结果进行展示。其中,所述测试执行结果通过所述被测端执行替换后的程序代码来获取。
通过对测试执行结果进行展示,测试人员可以清晰地知道测试代码的入侵和部署情况。
参见图4,是本发明提供的测试环境部署方法的又一个实施例的流程图。
本实施例与图3所示实施例的区别在于,为提高测试环境部署方法的便利性和灵活性,本实施例在图3所示实施例的基础进一步地加入了中转服务器,并将部分功能交由中转服务器实现,本实施例中步骤S100~S130与图3所示实施例中的步骤S10~S13一一对应,其基本原理与图3所示实施例一致,本实施例中未详述之处可参见图3所示实施例中的相关描述。
如图4所示,当在测试端与被测端之间加入中转服务器实现所述测试环境部署方法时,所述步骤S10具体为:
S100,获取测试代码包,将所述测试代码包发送给中转服务器,通过所述中转服务器对所述测试代码包进行解析,将所述测试代码包还原为所述被测端可识别的测试代码。
所述步骤S11具体为:
S110,通过所述中转服务器,利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中。
所述步骤S12与步骤S120相同。
S120,触发所述被测端基于所述测试代码进行热更新,以实现测试环境的部署。
所述步骤S13具体为:
S130,通过所述中转服务器对测试执行结果进行展示。其中,所述测试执行结果通过所述被测端执行替换后的程序代码来获取。
所述中转服务器为采用通用的python库SimpleXMLRPCServer来构建的RPC服务器,所述中转服务器可以设置在被测端侧,也可以设置在任意的第三方位置。测试端与中转服务器之间通过网络连接,测试代码包采用telnet(远程终端协议)的方式从测试端发送到中转服务器,所述测试代码包中包含被测目标的相关信息,包括被测端的设备地址和端口等,中转服务器通过调用exec函数对接收到的测试代码包进行解析,并根据解析得到的被测目标的相关信息进行测试代码的调度,利用预先在被测端建立的后门端口对所述被测端进行入侵并将所述测试代码植入到所述被测端,以基于所述测试代码进行热更新,实现测试环境的部署。本实施例通过在测试端和被测端之间加入中转服务器,可实现远程的、多对多的测试环境部署,进一步地提高了测试环境部署的便利性和灵活性。
参见图5,是本发明提供的测试环境部署装置的一个实施例的结构示意图。本实施例与图3所示实施例的基本原理一致,本实施例中未详述之处科参见图3所示实施例中的相关描述。
如图5所示,所述测试环境部署装置包括入侵模块11和热更新触发模块12。
所述入侵模块11,用于利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中。其中,所述测试代码包括测试环境配置代码、测试脚本代码和测试结果收集代码。所述测试环境配置代码包括目标函数替换代码和目标变量替换代码中的一种或两种。所述后门端口通过在所述被测端中种植测试木马来开启。
在具体实施当中,所述入侵模块11包括:
代码获取单元111,用于获取所述被测端的内存中与所述测试代码对应的程序代码。
对比单元112,用于将所述测试代码与所述程序代码进行对比。和,
植入单元113,用于当所述测试代码与所述程序代码存在不同时,利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中。
所述热更新触发模块12,用于触发所述被测端基于所述测试代码进行热更新,以实现测试环境的部署。
所述测试环境部署装置还包括解析模块10和展示模块13:
所述解析模块10,用于获取测试代码包,对所述测试代码包进行解析,以将所述测试代码包还原为所述被测端可识别的测试代码。
所述解析模块10包括:
调用单元101,用于调用exec函数。和,
解析单元102,用于利用所述exec函数对所述测试代码包进行解析。
所述展示模块13,用于对测试执行结果进行展示。其中,所述测试执行结果通过所述被测端执行替换后的程序代码来获取。
参见图6,是本发明提供的测试环境部署系统的一个实施例的结构示意图。本实施例与图4所示实施例的基本原理一致,本实施例中未详述之处可参见图4所示实施例中的相关描述。
如图6所示,所述测试环境部署系统,包括测试端61、中转服务器62和被测端63。
所述测试端61包括测试代码包获取模块611,所述测试代码包获取模块611用于获取测试代码包,并将所述测试代码包发送给中转服务器62。其中,所述测试代码包包括测试环境配置代码包、测试脚本代码包和测试结果收集代码包。所述测试环境配置代码包包括目标函数替换代码包和目标变量替换代码包中的一种或两种
所述中转服务器62包括解析模块621和入侵模块622。
所述解析模块621,用于对所述测试代码包进行解析,将所述测试代码包还原为所述被测端63可识别的测试代码。
所述入侵模块622,用于利用预先在被测端建立的后门端口对所述被测端63进行入侵,将所述测试代码植入到所述被测端63中。
所述后门端口通过在所述被测端中种植测试木马来开启。
所述被测端63包括热更新模块631,所述热更新模块631用于基于所述测试代码进行热更新。
如图7所示,所述解析模块621包括:
调用单元6211,用于调用exec函数。和,
解析单元6212,用于利用所述exec函数对所述测试代码包进行解析。
如图8所示,所述入侵模块622包括:
代码获取单元6221,用于获取所述被测端63的内存中与所述测试代码对应的程序代码。
对比单元6222,用于将所述测试代码与所述程序代码进行对比。和,
植入单元6223,用于当所述测试代码与所述程序代码存在不同时,利用预先在被测端63建立的后门端口对所述被测端63进行入侵,将所述测试代码植入到所述被测端63中。
所述热更新631包括:
代码结合单元,用于将所述测试代码与所述程序代码结合。和,
代码替换单元,用于利用结合后的代码在所述被测端63的内存中对所述程序代码进行替换。
在具体实施当中,所述被测端63还包括:
执行模块632,用于执行替换后的程序代码,获取测试执行结果,并将所述测试执行结果发送给所述中转服务器62。
所述中转服务器62还包括:
展示模块623,用于对所述测试执行结果进行展示。
优选地,所述被测端为游戏服务器或者游戏客户端。
参见图9,是本发明提供的测试环境部署方法的再一个实施例的流程图。本实施例与图3所示实施例的实现原理一致,其区别仅在于图3所示实施例的描述侧重于测试端,而本实施例的描述侧重于被测端,本实施例中未详述之处可参见图3所示实施例中的相关描述。
所述测试环境部署方法包括步骤S91~S92:
S91,接收测试端利用预先在本地建立的后门端口入侵本地后植入的测试代码。其中,所述测试代码包括测试环境配置代码、测试脚本代码和测试结果收集代码,所述测试环境配置代码包括目标函数替换代码和目标变量替换代码中的一种或两种。所述后门端口通过所述测试端在被测端本地种植测试木马来开启。
如图10所示,在具体实施当中,所述步骤S91具体包括以下步骤:
S911,获取本地内存中与所述测试代码对应的程序代码,并将所述程序代码发送给所述测试端;通过所述测试端将所述测试代码与所述程序代码进行对比。
S912,在所述测试代码与所述程序代码存在不同时,接收所述测试端利用预先在本地建立的后门端口入侵本地后植入的测试代码。
S92,基于所述测试代码进行热更新,以实现测试环境的部署。
如图11所示,在具体实施当中,所述步骤S92包括:
S921,将所述测试代码与所述程序代码结合。
S922,利用结合后的代码在内存中对所述程序代码进行替换。
此外,为实现测试执行结果的收集以及展示,所述测试环境部署方法还包括步骤S93和S94:
S93,执行替换后的程序代码,获取测试执行结果。
S94,将所述测试执行结果发送给所述测试端,通过所述测试端对所述测试执行结果进行展示。
参见图12,是本发明提供的测试环境部署装置的另一个实施例的结构示意图,本实施例与图9所示实施例的基本原理一致,本实施例中未详述之处,可参见图9所示实施例中的相关描述。
如图12所示,所述测试环境部署装置包括:
通信模块91,用于接收测试端利用预先在本地建立的后门端口进行入侵后植入的测试代码。其中,所述测试代码包括测试环境配置代码、测试脚本代码和测试结果收集代码。所述测试环境配置代码包括目标函数替换代码和目标变量替换代码中的一种或两种。所述后门端口通过所述测试端在本地种植测试木马来开启。
热更新模块92,用于基于所述测试代码进行热更新。
其中,所述通信模块91包括:
发送单元911,用于获取与所述测试代码对应的程序代码,并将所述程序代码发送给所述测试端。通过所述测试端将所述测试代码与所述程序代码进行对比。和,
接收单元912,用于在所述测试代码与所述程序代码存在不同时,接收所述测试端利用预先在本地建立的后门端口进行入侵本地后植入的测试代码。
所述热更新模块92包括:
代码结合单元921,用于将所述测试代码与所述程序代码结合。和,
代码替换单元922,用于利用结合后的代码在本地内存中对所述程序代码进行替换。
为实现测试执行结果的收集和展示,所述测试环境部署装置还包括:
代码执行模块93,用于执行替换后的程序代码,获取测试执行结果。和,
结果发送模块94,用于将所述测试执行结果发送给所述测试端,通过所述测试端对所述测试执行结果进行展示。
综上所述,本发明实施例提供的测试环境部署方法、装置和系统,通过利用预先在被测端建立的后门端口对所述被测端进行入侵,将测试代码植入到所述被测端中。使得所述被测端基于所述测试代码进行热更新。首先,本发明被测试端基于测试代码进行热更新,所有逻辑改动采用覆盖或重载的方式,所有测试数据的修改均是在内存中完成,不会对被测端中的原代码和本地数据表产生任何修改和影响,热更新后的被测端也无需重启设备,可直接进行测试。其次,本发明利用预先在被测端建立的后门端口对所述被测端进行入侵并将测试代码植入到所述被测端中,无需代码修改权限即可实现测试环境的部署。再者,本发明通过测试代码的植入更新,支持测试数据的实时批量修改,便于构建复杂多变的测试环境,有利于提高工作效率。此外,本发明的测试代码与被测对象之间相互独立,有利于测试代码的复用和积累。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (37)
1.一种测试环境部署方法,其特征在于,包括:
利用预先在被测端建立的后门端口对所述被测端进行入侵,将测试代码植入到所述被测端中;
触发所述被测端基于所述测试代码进行热更新,以实现测试环境的部署;
其中,所述测试代码包括测试环境配置代码、测试脚本代码和测试结果收集代码。
2.如权利要求1所述的测试环境部署方法,其特征在于,所述后门端口通过在所述被测端中种植测试木马来开启。
3.如权利要求1所述的测试环境部署方法,其特征在于,所述测试环境配置代码包括目标函数替换代码和目标变量替换代码中的一种或两种。
4.如权利要求1所述的测试环境部署方法,其特征在于,在所述利用预先在被测端建立的后门端口对所述被测端进行入侵,将测试代码植入到所述被测端中之前,还包括:
获取测试代码包,对所述测试代码包进行解析,以将所述测试代码包还原为所述被测端可识别的测试代码。
5.如权利要求4所述的测试环境部署方法,其特征在于,所述对所述测试代码包进行解析,具体为:
调用exec函数,并利用所述exec函数对所述测试代码包进行解析。
6.如权利要求1~5任意一项所述的测试环境部署方法,其特征在于,所述利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中,具体为:
获取所述被测端的内存中与所述测试代码对应的程序代码;
将所述测试代码与所述程序代码进行对比;
在所述测试代码与所述程序代码存在不同时,利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中。
7.如权利要求6所述的测试环境部署方法,其特征在于,所述被测端基于所述测试代码进行热更新,具体为:
所述被测端将所述测试代码与所述程序代码结合,利用结合后的代码在所述被测端的内存中对所述程序代码进行替换。
8.如权利要求7所述的测试环境部署方法,其特征在于,所述测试环境部署方法还包括:
对测试执行结果进行展示;其中,所述测试执行结果通过所述被测端执行替换后的程序代码来获取。
9.如权利要求4所述的测试环境部署方法,其特征在于,所述获取测试代码包,对所述测试代码包进行解析,以将所述测试代码包还原为所述被测端可识别的测试代码,具体为:
获取测试代码包,将所述测试代码包发送给中转服务器,通过所述中转服务器对所述测试代码包进行解析,将所述测试代码包还原为所述被测端可识别的测试代码;
所述利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中,具体为:
通过所述中转服务器,利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中。
10.如权利要求1~5、7~9中任意一项所述的测试环境部署方法,其特征在于,所述被测端为游戏服务器或者游戏客户端。
11.一种测试环境部署装置,其特征在于,包括:
入侵模块,用于利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中;和,
热更新触发模块,用于触发所述被测端基于所述测试代码进行热更新,以实现测试环境的部署;
其中,所述测试代码包括测试环境配置代码、测试脚本代码和测试结果收集代码。
12.如权利要求11所述的测试环境部署装置,其特征在于,所述后门端口通过在所述被测端中种植测试木马来开启。
13.如权利要求11所述的测试环境部署装置,其特征在于,所述测试环境配置代码包括目标函数替换代码和目标变量替换代码中的一种或两种。
14.如权利要求11所述的测试环境部署装置,其特征在于,所述测试环境部署装置还包括:
解析模块,用于获取测试代码包,对所述测试代码包进行解析,以将所述测试代码包还原为所述被测端可识别的测试代码。
15.如权利要求14所述的测试环境部署装置,其特征在于,所述解析模块包括:
调用单元,用于调用exec函数;和,
解析单元,用于利用所述exec函数对所述测试代码包进行解析。
16.如权利要求11~15任一项所述的测试环境部署装置,其特征在于,所述入侵模块包括:
代码获取单元,用于获取所述被测端的内存中与所述测试代码对应的程序代码;
对比单元,用于将所述测试代码与所述程序代码进行对比;和,
植入单元,用于当所述测试代码与所述程序代码存在不同时,利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中。
17.如权利要求16所述的测试环境部署装置,其特征在于,所述测试环境部署装置还包括:
展示模块,用于对测试执行结果进行展示;其中,所述测试执行结果通过所述被测端执行替换后的程序代码来获取。
18.一种测试环境部署系统,其特征在于,包括测试端、中转服务器和被测端;
所述测试端包括测试代码包获取模块,所述测试代码包获取模块用于获取测试代码包,并将所述测试代码包发送给中转服务器;其中,所述测试代码包包括测试环境配置代码包、测试脚本代码包和测试结果收集代码包;
所述中转服务器包括解析模块和入侵模块;
所述解析模块,用于对所述测试代码包进行解析,将所述测试代码包还原为所述被测端可识别的测试代码;
所述入侵模块,用于利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中;
所述被测端包括热更新模块,所述热更新模块用于基于所述测试代码进行热更新,以完成测试环境的部署。
19.如权利要求18所述的测试环境部署系统,其特征在于,所述后门端口通过在所述被测端中种植测试木马来开启。
20.如权利要求18所述的测试环境部署系统,其特征在于,所述测试环境配置代码包包括目标函数替换代码包和目标变量替换代码包中的一种或两种。
21.如权利要求18所述的测试环境部署系统,其特征在于,所述解析模块包括:
调用单元,用于调用exec函数;和,
解析单元,用于利用所述exec函数对所述测试代码包进行解析。
22.如权利要求18~21任意一项所述的测试环境部署系统,其特征在于,所述入侵模块包括:
代码获取单元,用于获取所述被测端的内存中与所述测试代码对应的程序代码;
对比单元,用于将所述测试代码与所述程序代码进行对比;和,
植入单元,用于当所述测试代码与所述程序代码存在不同时,利用预先在被测端建立的后门端口对所述被测端进行入侵,将所述测试代码植入到所述被测端中。
23.如权利要求22所述的测试环境部署系统,其特征在于,所述热更新模块包括:
代码结合单元,用于将所述测试代码与所述程序代码结合;和,
代码替换单元,用于利用结合后的代码在所述被测端的内存中对所述程序代码进行替换。
24.如权利要求23所述的测试环境部署系统,其特征在于,所述被测端还包括:
执行模块,用于执行替换后的程序代码,获取测试执行结果,并将所述测试执行结果发送给所述中转服务器;
所述中转服务器还包括:
展示模块,用于对所述测试执行结果进行展示。
25.如权利要求18~21、23~24中任意一项所述的测试环境部署系统,其特征在于,所述被测端为游戏服务器或者游戏客户端。
26.一种测试环境部署方法,其特征在于,包括:
接收测试端利用预先在本地建立的后门端口入侵本地后植入的测试代码;
基于所述测试代码进行热更新,以实现测试环境的部署;
其中,所述测试代码包括测试环境配置代码、测试脚本代码和测试结果收集代码。
27.如权利要求26所述的测试环境部署方法,其特征在于,所述后门端口通过所述测试端在本地种植测试木马来开启。
28.如权利要求26所述的测试环境部署方法,其特征在于,所述测试环境配置代码包括目标函数替换代码和目标变量替换代码中的一种或两种。
29.如权利要求26~28任意一项所述的测试环境部署方法,其特征在于,所述接收测试端利用预先在本地建立的后门端口入侵本地后植入的测试代码,具体为:
获取本地内存中与所述测试代码对应的程序代码,并将所述程序代码发送给所述测试端;通过所述测试端将所述测试代码与所述程序代码进行对比;
在所述测试代码与所述程序代码存在不同时,接收所述测试端利用预先在本地建立的后门端口入侵本地后植入的测试代码。
30.如权利要求29所述的测试环境部署方法,其特征在于,所述基于所述测试代码进行热更新,具体为:
将所述测试代码与所述程序代码结合,利用结合后的代码在内存中对所述程序代码进行替换。
31.如权利要求30所述的测试环境部署方法,其特征在于,所述测试环境部署方法还包括:
执行替换后的程序代码,获取测试执行结果;
将所述测试执行结果发送给所述测试端,通过所述测试端对所述测试执行结果进行展示。
32.一种测试环境部署装置,其特征在于,包括:
通信模块,用于接收测试端利用预先在本地建立的后门端口入侵本地后植入的测试代码;其中,所述测试代码包括测试环境配置代码、测试脚本代码和测试结果收集代码;和,
热更新模块,用于基于所述测试代码进行热更新,以实现测试环境的部署。
33.如权利要求32所述的测试环境部署装置,其特征在于,所述后门端口通过所述测试端在本地种植测试木马来开启。
34.如权利要求32所述的测试环境部署装置,其特征在于,所述测试环境配置代码包括目标函数替换代码和目标变量替换代码中的一种或两种。
35.如权利要求32~34任意一项所述的测试环境部署装置,其特征在于,所述通信模块包括:
发送单元,用于获取本地内存中与所述测试代码对应的程序代码,并将所述程序代码发送给所述测试端;通过所述测试端将所述测试代码与所述程序代码进行对比;和,
接收单元,用于在所述测试代码与所述程序代码存在不同时,接收测试端利用预先在本地建立的后门端口入侵本地后植入的测试代码。
36.如权利要求35所述的测试环境部署装置,其特征在于,所述热更新模块包括:
代码结合单元,用于将所述测试代码与所述程序代码结合;和,
代码替换单元,用于利用结合后的代码在本地内存中对所述程序代码进行替换。
37.如权利要求36所述的测试环境部署装置,其特征在于,所述测试环境部署装置还包括:
代码执行模块,用于执行替换后的程序代码,获取测试执行结果;和,
结果发送模块,用于将所述测试执行结果发送给所述测试端,通过所述测试端对所述测试执行结果进行展示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510508170.5A CN105045717B (zh) | 2015-08-18 | 2015-08-18 | 测试环境部署方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510508170.5A CN105045717B (zh) | 2015-08-18 | 2015-08-18 | 测试环境部署方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105045717A true CN105045717A (zh) | 2015-11-11 |
CN105045717B CN105045717B (zh) | 2018-08-07 |
Family
ID=54452280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510508170.5A Active CN105045717B (zh) | 2015-08-18 | 2015-08-18 | 测试环境部署方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105045717B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912474A (zh) * | 2016-04-26 | 2016-08-31 | 网易(杭州)网络有限公司 | 一种游戏在线调试方法、系统及编辑服务端 |
CN109491887A (zh) * | 2018-09-28 | 2019-03-19 | 深圳壹账通智能科技有限公司 | 测试环境部署方法、装置、计算机设备及存储介质 |
CN113190448A (zh) * | 2021-05-06 | 2021-07-30 | 网易(杭州)网络有限公司 | 测试代码更新方法及装置、电子设备、存储介质 |
CN116244169A (zh) * | 2022-09-26 | 2023-06-09 | 上海合见工业软件集团有限公司 | 基于时序型覆盖数据库的回归测试系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1889471A (zh) * | 2005-06-28 | 2007-01-03 | 华为技术有限公司 | 一种用户接口的自动测试装置和方法 |
CN101872324A (zh) * | 2010-06-23 | 2010-10-27 | 北京中星微电子有限公司 | 一种系统测试方法及装置 |
US20120089871A1 (en) * | 2010-10-11 | 2012-04-12 | Inventec Corporation | Test system |
CN103425573A (zh) * | 2012-05-24 | 2013-12-04 | 腾讯科技(深圳)有限公司 | 代码测试信息收集方法及系统 |
CN103699385A (zh) * | 2013-12-23 | 2014-04-02 | 国云科技股份有限公司 | 一种代码持续集成的方法 |
CN104281518A (zh) * | 2013-07-02 | 2015-01-14 | 腾讯科技(深圳)有限公司 | 终端应用测试方法、装置、系统、平台及移动终端 |
CN104765692A (zh) * | 2015-04-29 | 2015-07-08 | 北京嘀嘀无限科技发展有限公司 | 用于自动化测试软件的方法及设备 |
-
2015
- 2015-08-18 CN CN201510508170.5A patent/CN105045717B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1889471A (zh) * | 2005-06-28 | 2007-01-03 | 华为技术有限公司 | 一种用户接口的自动测试装置和方法 |
CN101872324A (zh) * | 2010-06-23 | 2010-10-27 | 北京中星微电子有限公司 | 一种系统测试方法及装置 |
US20120089871A1 (en) * | 2010-10-11 | 2012-04-12 | Inventec Corporation | Test system |
CN103425573A (zh) * | 2012-05-24 | 2013-12-04 | 腾讯科技(深圳)有限公司 | 代码测试信息收集方法及系统 |
CN104281518A (zh) * | 2013-07-02 | 2015-01-14 | 腾讯科技(深圳)有限公司 | 终端应用测试方法、装置、系统、平台及移动终端 |
CN103699385A (zh) * | 2013-12-23 | 2014-04-02 | 国云科技股份有限公司 | 一种代码持续集成的方法 |
CN104765692A (zh) * | 2015-04-29 | 2015-07-08 | 北京嘀嘀无限科技发展有限公司 | 用于自动化测试软件的方法及设备 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912474A (zh) * | 2016-04-26 | 2016-08-31 | 网易(杭州)网络有限公司 | 一种游戏在线调试方法、系统及编辑服务端 |
CN105912474B (zh) * | 2016-04-26 | 2019-09-24 | 网易(杭州)网络有限公司 | 一种游戏在线调试方法、系统及编辑服务端 |
CN109491887A (zh) * | 2018-09-28 | 2019-03-19 | 深圳壹账通智能科技有限公司 | 测试环境部署方法、装置、计算机设备及存储介质 |
CN113190448A (zh) * | 2021-05-06 | 2021-07-30 | 网易(杭州)网络有限公司 | 测试代码更新方法及装置、电子设备、存储介质 |
CN116244169A (zh) * | 2022-09-26 | 2023-06-09 | 上海合见工业软件集团有限公司 | 基于时序型覆盖数据库的回归测试系统 |
CN116244169B (zh) * | 2022-09-26 | 2023-10-27 | 上海合见工业软件集团有限公司 | 基于时序型覆盖数据库的回归测试系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105045717B (zh) | 2018-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110708210B (zh) | 云测试配置方法、装置、计算机设备及存储介质 | |
CN105045717A (zh) | 测试环境部署方法、装置和系统 | |
CN112270149B (zh) | 验证平台自动化集成方法、系统及电子设备和存储介质 | |
CN105426298B (zh) | 一种基于adb的软件测试方法和系统 | |
CN107193607B (zh) | 用于更新代码文件的方法和装置、存储介质、处理器以及终端 | |
CN104598380A (zh) | 一种基于控件的自动化测试方法及系统 | |
CN111090577B (zh) | 多终端同步测试方法、装置、计算机设备及存储介质 | |
CN108920370B (zh) | 兼容性问题检测方法、装置及设备 | |
CN105303112A (zh) | 组件调用漏洞的检测方法及装置 | |
US20180260209A1 (en) | Near field communication bootloader for configuration and programming of electronic devices | |
CN105320595A (zh) | 一种应用测试方法和装置 | |
CN108733553A (zh) | 基于docker的测试装置的配置方法、装置和系统 | |
CN109324857A (zh) | 一种用户引导实现方法、装置和存储介质 | |
CN105204986A (zh) | 产品的自动化测试方法、服务器及移动设备 | |
CN107632901A (zh) | 一种应用程序运行异常的自修复方法及装置 | |
CN113672441A (zh) | 对智能设备的测试方法及装置 | |
CN103019722A (zh) | 一种抽取Java网络应用升级包的方法及装置 | |
CN105656684A (zh) | 故障模拟方法及装置 | |
CN109002305A (zh) | 一种设备程序的更新方法及其系统 | |
CN111563032A (zh) | App调试方法、装置、计算机设备及存储介质 | |
CN114416578A (zh) | 测试方法和装置 | |
CN104484176B (zh) | 一种安卓系统窗口对象获取方法和装置 | |
CN113452556A (zh) | 产品技能的配置方法、装置、存储介质及电子装置 | |
EP3754489A1 (en) | Method for evaluating application deployment, apparatus, computer program product, and readable medium | |
CN111385661B (zh) | 语音控制全屏播放的方法、装置、终端及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |