一种软件系统动态测试的方法、装置及系统的制作方法_3

文档序号:9506126阅读:来源:国知局
lient.jar,则当服务器端A运行时,可用客户端B对服务器端A进行控制和测试。
[0103]在本实施例中,客户端B接收由服务器端A发送的暂停运行软件系统源代码X的通知消息,然后根据该通知消息,生成与该通知消息相对应的控制指令。该过程可以包括:客户端B接收由服务器端A发送的代码行0011处的变量值3,然后查看变量值3,经判断,生成与变量值3相对应的控制指令。此控制指令可以是基于Socket网络通信协议定义的一些控制命令,即中断执行操作指令、修改目标变量值操作指令、继续执行操作指令和调用服务器端的目标方法操作指令中的任意一种。举例来说,客户端B根据变量值3,生成继续执行操作指令。
[0104]其中,服务器端A发送给客户端B的变量值均是可序列化的,客户端B反序列化后可重新创建出Java对象。客户端B查看变量值后,可以根据该变量值修改客户端Java代码工程中的代码以修改变量值,并反馈修改目标变量值操作指令给服务器端A,并附加修改后的变量值,以使服务器端A将原变量值替换为修改后的变量值;也可以创建服务器端制定对象,调用服务器内存储的特定方法,并反馈调用服务器端的目标方法操作指令给服务器端A,并附加要调用的方法名称以及参数;或反馈中断执行操作指令;或反馈继续执行操作指令。
[0105]详细的,所述控制指令的具体实现方式可以如下所示:
[0106]中断执行操作指令,即程序中断,指令的ENUM VALUE为DIRECTIVE_TYPE.STOP ;
[0107]修改目标变量值操作指令,S卩修改变量值并继续执行,指令的ENUM VALUE为DIRECTIVE_TYPE.SUBSTITUDE_AND_GO_NEXT,发送指令时同时附加新的变量值;
[0108]继续执行操作指令,即忽略并继续执行,指令的ENUM VALUE为DIRECTIVE_TYPE.KEEP_AND_GO_NEXT ;
[0109]调用服务器端的目标方法操作指令,即调用服务器内存储的方法,指令的ENUMVALUE为DIRECTIVE_TYPE.CALL_METH0D,发送指令时同时附加要调用的方法名称以及参数,如“com.hongda.net.erplO0.device_m.diet.DictType.get,,,参数是{“Type”: “String,,,“Value”: “5701”}。
[0110]在本实施例中,根据针对软件系统源代码X的所述软件测试方案X,客户端B对变量值3的查看和判断,可以是客户端B自身对变量值3进行查看并生成相应的控制命令,也可以是相应的专业操作人员查看变量值3,并判断可以对变量值3作何种处理,从而通过客户端B生成合适的控制指令。
[0111]举例来说,客户端B根据变量值3,经判断会生成继续执行操作指令,假设操作人员临时决定根据变量值3生成修改目标变量值操作指令更为合适,那么可通过一些系统设置,在客户端B生成相应控制指令之前,操作人员查看此变量值,并命令客户端B生成修改目标变量值操作指令。其中,新的变量值可以是由客户端制造的新的测试数据,也可以是操作人员人为输入的数据。
[0112]这一实现方式,可以是客户端根据预定的软件测试方案来查看和处理由服务器端发送的通知消息,从而在提高测试效率的同时,避免了操作人员的实时工作需求;亦可以是相应的专业操作人员查看和处理由服务器端发送的通知消息,从而在预定的软件测试方案出现临时改动时,能够快速调整测试方案,保证软件系统测试的质量和效果。
[0113]步骤306:客户端向服务器端反馈所述控制指令。
[0114]具体地,客户端B将生成的所述控制指令发送至服务器端A。例如,由于客户端B根据变量值3生成了继续执行操作指令,故客户端B将继续执行操作指令发送至服务器端A。
[0115]步骤307:服务器端接收客户端反馈的所述控制指令,并根据所述控制指令执行相应操作。
[0116]在本实施例中,服务器端A接收客户端B反馈的控制指令,并解析该控制指令,可以利用Java反射机制创建对象且执行与该控制指令相对应的操作。例如,客户端B反馈的控制指令是继续执行操作指令,故服务器端A结束暂停状态,继续执行软件系统源代码X,即服务器端A忽略代码行0011处的断点,对变量值3及软件系统源代码X不做任何改动,继续执行代码行0012。当然,当软件系统源代码X继续运行至第二个断点位置,即变量值10所在的代码行0101时,再次执行步骤303以及后续的步骤,直至最终完成对软件系统源代码X的检测。
[0117]在本实施例中,通过软件系统的动态测试,避免软件系统频繁重启,从而有效节省了测试等待时间。例如,当软件系统的启动需要6分钟时,在一天的软件开发测试过程中,如果能够减少重启应用系统10次,则能够相应的减少等待时间1个小时。尤其是针对大型企业级软件系统,且当一些测试变量条件需要系统运行很长一段时间后才具备时,更能大量节省测试的等待时间。
[0118]此外,举例来说,为了增强软件系统的性能以及扩大软件系统的适用范围,往往需要制造大量的原始数据对软件系统进行大量和反复的测试。由于数据库中的数据生产过程步骤繁琐复杂,且需要软件系统频繁重启,这都在一定程度上影响了软件测试的效率,同时加重了软件测试的成本投入。
[0119]在本实施例中,通过对软件系统源代码X设置断点,以及服务器端A和客户端B通过Socket进行相关信息的传递和反馈,在系统不重启的情况下,不仅实现了软件系统的动态测试,提高了软件测试的效率,而且,当数据库的测试数据量不足时,通过在软件运行期对断点处的变量值进行修改,利用客户端在程序里循环制造大量测试数据以保证测试数据的数量,提高了原始测试数据的测试覆盖率,从而通过对软件系统的反复、大量测试来增强软件系统的性能以及扩大其适用范围。
[0120]举例来说,客户端B获取到服务器端A发送的变量值数据后,可以通过反序列化,将变量值数据再创建成Java对象,通过循环遍历等扩展方式,可将少量的可利用的测试数据扩充到原来的几十倍或更多,可以任意设置或修改Map对象中的数值,然后由客户端B反馈控制指令给服务器端A。此外,由于客户端B可以在程序里循环制造大量测试数据,以保证测试数据的数量和范围,提高了测试用例的覆盖率,也更容易发现一些极端或边界条件下出现的错误或问题。
[0121]如图4所示,本发明实施例提供了一种服务器端40,包括:
[0122]设置单元401,用于在待测试软件系统源代码的至少一个目标变量值处设置断占.
[0123]处理单元402,用于运行所述待测试软件系统源代码,在运行至断点所对应的目标变量值处时,暂停运行所述待测试软件系统源代码;
[0124]发送单元403,用于向客户端发送暂停运行所述待测试软件系统源代码的通知消息,以使所述客户端根据所述通知消息反馈控制指令;
[0125]执行单元404,用于根据所述客户端反馈的控制指令,执行相应操作。
[0126]在一种可能的实现方式中,请参考图5,该服务器端40还可以包括:
[0127]引入单元501,用于引入测试辅助工具;
[0128]所述设置单元,用于在待测试软件系统源代码的至少一个目标变量值处,利用所述测试辅助工具对所述目标变量值进行修改。
[0129]在一种可能的实现方式中,
[0130]所述测试辅助工具包括rjf-server.jar ;
[0131]所述设置单元,用于利用rjf-server.jar,对所述目标变量值处修改为
[0132]mapData = (Map)RJF.1nspect(mapData)。
[0133]如图6所示,本发明实施例提供了一种客户端60,包括:
[0134]接收单元601,用于接收由服务器端发送的暂停运行所述待测试软件系统源代码的通知消息;
[0135]生成单元602,用于根据所述由服务器端发送的暂停
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1