通信协议的自动化测试方法和装置与流程

文档序号:12376024阅读:591来源:国知局
通信协议的自动化测试方法和装置与流程

本发明涉及通信技术领域,尤其涉及一种通信协议的自动化测试装置。



背景技术:

通信协议是通信各方完成通信或服务所遵循的规则和规定。通信协议定义了交换的数据单元使用的格式、信息单元应该包含的信息与含义、连接方式、信息发送与接收的时序等等,以使得通信双方可以识别各自接收到的信息的含义。游戏通信协议指的是游戏的客户端和服务器进行信息交互的通信协议。

协议安全测试是针对通信协议进行的测试,主要用于验证服务器的逻辑性。通讯协议是一个包含多个字段的字符串,每个字段代表着不同的含义,如协议长度,协议类型等。现有技术中的游戏通信协议的安全测试方法是人工获取到通信协议后手动修改通信协议中的不同字段为不同的值,并采用该通信协议向服务器发送信息,通过人工查看服务器对该修改后的通信协议能否正确处理,若服务器能够正确处理,则表示通信协议为安全的,若服务器不能正确处理,则表示通信协议为不安全的。

然而,采用人工进行协议安全测试,不仅人力成本高,而且容易产生疏漏。



技术实现要素:

本发明实施例提供了一种通信协议的自动化测试装置,能够提高测试速度,而且不易出现遗漏的情况。

第一方面,本发明提供一种通信协议的自动化测试方法,包括:

确定目标协议中的待测字段;

从预置测试库中获取测试值,将所述目标协议中的待测字段取值为所述测试值;

向目标终端发送取值后的目标协议;

监听所述目标终端对所述取值后的目标协议的响应,根据所述响应判断所述目标协议的安全性。

第二方面,本发明提供一种通信协议的自动化测试装置,包括:

确定模块,用于确定目标协议中的待测字段;

修改模块,用于从预置测试库中获取测试值,将所述目标协议中的待测字段取值为所述测试值;

发送模块,用于向目标终端发送取值后的目标协议;

判断模块,用于监听所述目标终端对所述取值后的目标协议的响应,根据所述响应判断所述目标协议的安全性。

从以上技术方案可以看出,本发明实施例具有以下优点:

本发明中,通过从预置测试库中取出测试值来作为目标协议中待测字段的取值,并将取值后的目标协议发送到目标终端,通过目标终端对该目标协议的响应来判断目标协议是否安全,整个测试过程能够实现自动化,降低了通信协议的测试成本,提高测试速度,而且不易出现遗漏的情况。

附图说明

图1为本发明的通信协议的自动化测试方法的一种实施例的流程示意图;

图2为本发明的通信系统的工作流程一个实施例的示意图;

图3为一个测试机器人实现的通信协议的自动化测试方法的流程示意图;

图4为本发明的通信协议的自动化测试装置的一个实施例的结构示意图。

具体实施方式

请参阅图1,图1为本发明的通信协议的自动化测试方法的一种实施例的流程示意图。本实施例中,通信协议的自动化测试方法包括:

101、确定目标协议中的待测字段。

本实施例中,目标协议是待进行安全性检测的通信协议,该通信协议为用于客户端与目标终端进行通信的通信协议,其中,该目标终端可以是客户端,也可以是服务器,在此不作限制。为描述清楚,下文中除开特别说明时,客户端均指的是与目标终端进行通信的客户端,而不是指目标终端,然而,实际意义中的客户端(例如手机、电脑等等)是不具备修改协议的能力的,因此,本发明中的客户端指的是设有能够模仿实际意义中的客户端(例如手机、电脑等等)与目标终端进行通信的功能且能够对协议进行修改的程序的终端。例如,客户端为设有测试机器人的终端。该测试机器人为一段测试程序,可以模拟客户端与目标终端正常的连接、交互流程等等。

一条通信协议包括多个字段,待测字段包括目标协议中的至少一个字段,本发明中客户端将目标协议中的待测字段的取为不同的值,将取值后的目标协议发送至目标终端,通过该目标终端对该取值后的目标协议的响应来确定该目标协议的安全性。优选的,本实施中的待测字段仅包括目标协议中的一个字段,这样,客户端在对该目标协议进行测试时,目标协议中仅对一个字段的取值进行变化,其他字段为正常取值,这样目标协议的安全性测试结果的准确性较高。当然,实际应用中,该待测字段也可以包括至少两个字段。但在待测字段所包含的字段数量较多的情况下无法确定目标存在安全性问题时是由哪一个待测字段的变化引起的。

102、从预置测试库中获取测试值,将所述目标协议中的待测字段取值为所述测试值。

客户端内存储有预置测试库,该预置测试库内存有多个测试值。在确定目标协议的待测字段后,从预置测试库中取出测试值,并将待测字段取值为该测试值。预置测试库的实现方式有多种。可选的,该预置测试库中存有不同的字段类型以及每一个字段类型对应的测试值,其中,每一个字段类型对应的测试值的数量为至少一个。由于目标协议中包含每个字段的字段类型,在确定待测字段的字段类型后,可根据该字段类型从预置测试库中查询到对应的至少一个测试值,并将待测字段取值为其中一个测试值。

可选的,预置测试库中每一个字段类型对应的至少一个测试值包括该字段类型的正常值和异常值。程序语言中对每一种字段类型都有规定的正常的取值范围,该正常值指的是位于该正常的取值范围内的值,异常值指的是位于该正常的取值范围之外的值。

具体的,预置测试库中的各字段类型的取值主要包括数字和字符串两种。

取值为数字时,预置测试库中各字段类型的测试值中,正常值为一个数字范围中的任意一个数值。进一步,可选的,该至少一个测试值还包括该字段类型的边界值,也即位于该正常的取值范围内且位于边界处的值。例如正常值为0至4294967259中的任意一个数值,异常值为位于该范围以外的数字,那么边界值为0和4294967259。部分情况中目标终端可能会出现对字段取值为边界值的通信协议处理异常的情况,在预置测试库中添加字段类型的边界值,能够提高通信协议的安全性测试结果的准确度。

取值为字符串时,预置测试库中各字段类型的测试值可以有多种方式。例如,测试值包括一个字符串取值范围。又例如,测试值包括一些特殊字符(如'!'、'@'、'\t'、'\n'、'%'、'^'、'&'、'*'、'\\'、'\'、','、'<'、'|'、'='、'\0'),以测试目标终端是否对这些特殊字符做了处理。

预置测试库中各测试值可针对不同项目具体设置,这取决于具体情况,在此不再赘述。

可选的,在对目标协议进行测试时,对同一个待测字段,分别采用正常值中的至少一个值和异常值中的至少一个测试值进行测试,或者还采用边界值进行测试,也即对目标协议的该待测字段进行多次取值,每次取值为不同的测试值,这样可以提高通信协议的安全性测试结果的准确度。

103、向目标终端发送取值后的目标协议。

本实施例中,客户端向目标终端发送通信协议之前要和目标终端先建立连接。建立连接的方法有多种。以客户端是设有测试机器人的终端,目标终端为服务器为例,该测试机器人将登录用户名和密码通过登录协议发送至服务器,该服务器会验证登录用户名和密码,验证通过后服务器会生成一个标记(token)值,并将该token值发送给客户端。客户端给服务器发送取值后的目标协议时该取值后的目标协议的token字段都需要携带该token值,通过该token值和服务器建立连接。

实际应用中,客户端并不需要每一次发送目标协议之前都需要和服务器建立连接,而是在开始检测一轮测试之前和服务器建立连接即可。然而,在测试的过程中,该连接有可能会断开。因此,可选的,本实例中,客户端还对与目标终端的连接状态进行监测,当确定与目标终端断开连接时,与目标终端重新建立连接。

由于测试机器人具有断线重连机制,因此,本发明中优选采用测试机器人来对目标协议的安全性进行测试。具体的,测试机器人设有超时机制和接收判断机制,当测试机器人和服务器建立连接后,测试机器人和服务器会进行协议交互,当测试机器人检测到从服务器收到的数据包的长度为0,或者检测到超过了预置时长没有接收到来自服务器的数据包时,即可确定与服务器断开了连接,那么测试机器人会重新与服务器建立连接。

在采用测试机器人来对目标协议的安全性进行测试的情况中,可选的,客户端侧包括至少两个测试机器人。在对目标协议进行安全性测试时,各测试机器人确定目标协议的同一个待测字段,并分别预置测试库中取出不同的测试值,并将该测试字段取值为不同的测试值后各自将目标协议发送至目标终端。这样,由于不需要对目标协议的同一个待测字段逐次取值不同的测试值,能够大大缩短测试时长。

104、监听所述目标终端对所述取值后的目标协议的响应,根据所述响应判断所述目标协议的安全性。

正常情况中,当客户端将通信协议发送给目标终端后,目标终端会返回针对该通信协议的通信协议。本实施例中,将取值后的目标协议发送给目标终端后,对目标终端的响应进行监听,并根据该响应来判断目标协议的安全性。其中,目标终端的响应主要包括两种,第一种是目标终端不返回针对目标协议的响应协议,第二种是目标终端返回针对目标协议的响应协议。

在第一种响应中包括三种:一、客户端和目标终端断开连接,二、客户端和目标终端还保持连接,但目标终端不返回响应协议;三、目标终端崩溃。其中,在客户端和目标终端断开连接、以及目标终端崩溃的这两种情况中,客户端都接收不到目标终端的响应。客户端在目标终端断开后进行重新建立连接,若重新建立连接成功,则表示目标终端的响应是和客户端断开连接;若客户端重新建立连接连续失败的次数达到预置次数时,即可确定目标终端的响应是目标终端崩溃。

在第二种响应中,可通过目标终端所返回的响应协议查看目标终端是否正确处理取值后的目标协议;其中正确处理指的是服务器接收到错误的目标协议时的处理方法和接收到正确的目标协议时的处理方法不同,服务器可以识别出错误的目标协议。判断目标终端是否正确处理的方法有多种,例如,客户端内预设有对正常的通信协议的预置正常方式,可通过与该预置正常方式的比较来查看目标终端是否正确处理取值后的目标协议。

具体的,根据目标终端的响应来判断目标协议不安全的方法有多种。

例如,当所述测试值为异常值,所述响应为返回响应协议且所述响应协议指示所述目标终端按预置正常方式响应所述取值后的目标协议时,确定所述目标协议不安全。具体举例来说,正常的物品购买流程是:客户端发送正常的购买请求协议,服务器响应下发购买成功协议。而在客户端发送购买请求协议时修改购买请求协议里的金钱字段为0,然后发送到服务器。若服务器不进行金额校验,而是直接下发购买成功的协议,这样可以零花费购买物品。这样就是服务器正常响应了修改后的协议。

又例如,当所述测试值为正常值,所述响应为返回响应协议且所述响应协议指示所述目标终端不按预置正常方式响应所述取值后的目标协议时,确定所述目标协议不安全。

又例如,所述响应为所述目标终端断开连接,且断开连接后与所述目标终端进行重新建立连接连续失败的次数达到预置次数时,确定所述目标协议不安全。其中,目标终端崩溃指的是目标终端中的进程异常退出或者不再响应正常的请求,目标终端为服务器时,服务器崩溃也即服务器宕机。

具体的,根据目标终端的响应来判断目标协议安全的方法有多种。

例如,当所述测试值为异常值,所述响应为返回响应协议且所述响应协议指示所述目标终端对所述取值后的目标协议发出异常提示时,确定所述目标协议安全。异常提示的内容可以有多种方式,例如提示发生错误或者提示出现未能识别的操作等等

又例如,当所述测试值为异常值,所述响应为所述目标终端断开连接,且断开连接后与所述目标终端重新建立连接成功时时,确定所述目标协议安全。

又例如,当所述测试值为异常值,所述响应为所述目标终端对所述取值后的目标协议不返回响应协议时,确定所述目标协议安全。实际应用中,在目标终端为客户端的情况下,由于目标终端并不一定会对接收到的每条通信协议进行响应,因此在目标终端为客户端的情况时可以不采用该条判断规则。

又例如,当所述测试值为正常值,所述响应为返回响应协议且所述响应协议指示所述目标终端按预置正常方式响应所述取值后的目标协议时,确定所述目标协议安全。

本实施例中,通过从预置测试库中取出测试值来作为目标协议中待测字段的取值,并将取值后的目标协议发送到目标终端,通过目标终端对该目标协议的响应来判断目标协议是否安全,整个测试过程能够实现自动化,降低了通信协议的测试成本,提高测试速度,而且不易出现遗漏的情况。

可选的,本实施例中,客户端还在当确定目标协议不安全时,对所述待测字段的类型、取值后的目标协议、所述目标终端对所述取值后的目标协议的响应以及所述目标协议的安全性进行记录,以便对不安全的目标协议进行后续处理。

实际应用中,部分通信协议中的某些字段是不可以修改的,一旦修改就会导致客户端和服务器之间断开连接。例如,通信协议中的数据包长度字段不能修改。因此,可选的,本实施例中,客户端内预先设置有对各通信协议中不能修改的字段。在确定目标协议中的待测字段时,若该目标协议中存在不能修改的字段,则不将位于该字段作为待测字段。

为方便理解,下面结合一个实际应用场景对本发明的通信协议的自动化测试方法进行举例描述。如图2所示,图2为本发明的通信系统的结构示意图。本实施例中,该通信系统包括客户端和服务器。其中,客户端包括至少一个测试机器人和预置测试库。

客户端内的各个测试机器人开始运行后,分别服务器建立连接。同时,各个测试人也启动断线重连的机制。待测试项目具体为一个游戏项目,该项目包括多个通信协议,各个测试机器人分别将该多个通信协议依次作为待进行安全性测试的目标协议。

具体的,如图3所示,图3为单个测试机器人实现的通信协议的安全性测试方法的流程示意图。测试机器人开始运行后,测试机器人首先确认当前是否还存在待测试的目标协议,若不存在,则测试机器人结束运行。若存在,则测试机器人对该待测试的目标协议的待测字段进行修改,然后检测是否和服务器建立有连接,若建立有连接,则将修改后的目标协议发送至服务器,若没有建立连接,则和服务器建立连接,再将修改后的目标协议发送至服务器。然后监听服务器对该目标协议的响应,根据该响应判断协议的安全性,并记录数据,该数据包括该修改后的目标协议和服务器的响应。记录数据后,测试机器人确定该目标协议是否还有待修改的字段,若还有待修改的字段,则修改该字段,并重复上述测试流程;若没有待修改的字段,则判断是否还存在待测协议。

其中,各个测试机器人对其中一条目标协议测试时,为方便理解,下面以项目中的一个用于创建游戏房间的通信协议作为目标协议为例进行说明。

目标协议字符串为:A4 00 78 F9 69 55 A1 EC 34 44 61 BB 65 B3 BF C5 DA 7E 42 1B 97 AA 00 00 00 00 00 00 00 00 0C 00 00 00 E6 B0 B8 E5 A4 9C E5 90 9B E7 8E 8B 03 00 00 00 31 31 31 00 02 00 00 00 00 00 00 00。其中,字符串中每两位代表一个字节,协议中的一个字段由至少一个字节组成。对该目标协议解析后,可得到该协议中所包括的各个字段的字段类型、字段属性名和字段值如下表所示。

客户端内预先设置有待测试项目中不能修改的字段。具体的,本实施例中目标协议中的“PacketType、SessionToken、SecurityToken、RequestID”这几个字段为不能修改的字段。当然,实际应用中并不是待测试项目中的每一个通信协议中都会存在不能修改的字段。

各个测试机器人将目标协议中“PacketType、SessionToken、SecurityToken、RequestID”这四个字段排除后,将剩余的几个字段依次作为待测字段。具体的,以第一个字段PlayerName为待测字段为例。各个测试机器人根据该字段的字段类型为System.String,到预置测试库中查找字段类型为System.String对应的所有测试值。各个测试机器人分别从该字段类型对应的测试值中取出不同值,来对目标协议中该待测字段的取值进行修改。各个测试机器人各自将修改后的目标协议发送至服务器。

各个测试机器人中,每一个测试机器人监听服务器对自己所发送的修改后的目标协议的响应,并根据该响应判断目标协议的安全性。具体判断的方法可参考图1所示实施例中步骤104的解释说明,在此不再赘述。

每个测试机器人还对自己所发送的修改后的目标协议、接收到的服务器的响应以及安全性测试结果进行记录。

上面对本发明的通信协议的自动化测试方法进行了描述,下面将对本发明的通信协议的自动化测试装置进行描述。

请参阅图4,图4为本发明的通信协议的自动化测试装置的一个实施例的结构示意图。本实施例中,通信协议的自动化测试装置400,包括:

确定模块401,用于确定目标协议中的待测字段;

修改模块402,用于从预置测试库中获取测试值,将所述目标协议中的待测字段取值为所述测试值;

发送模块403,用于向目标终端发送取值后的目标协议;

判断模块404,用于监听所述目标终端对所述取值后的目标协议的响应,根据所述响应判断所述目标协议的安全性。

本实施例中,通信协议的自动化测试装置通过从预置测试库中取出测试值来作为目标协议中待测字段的取值,并将取值后的目标协议发送到目标终端,通过目标终端对该目标协议的响应来判断目标协议是否安全,整个测试过程能够实现自动化,降低了通信协议的测试成本,提高测试速度,而且不易出现遗漏的情况。

可选的,所述预置测试库中存有不同的字段类型以及每一个字段类型对应的测试值;所述修改模块402在从预置测试库中获取测试值时,具体用于:

确定所述待测字段的字段类型;

从预置测试库中查找所述待测字段的字段类型对应的测试值。

可选的,所述判断模块304在根据所述响应判断所述目标协议的安全性时,具体用于:

当所述测试值为异常值,所述响应为返回响应协议且所述响应协议指示所述目标终端按预置正常方式响应所述取值后的目标协议时,确定所述目标协议不安全;

或者,当所述测试值为正常值,所述响应为返回响应协议且所述响应协议指示所述目标终端不按预置正常方式响应所述取值后的目标协议时,确定所述目标协议不安全;

或者,所述响应为所述目标终端断开连接,且断开连接后与所述目标终端进行重新建立连接连续失败的次数达到预置次数时,确定所述目标协议不安全。

可选的,所述判断模块304在根据所述响应判断所述目标协议的安全性时,具体用于:

当所述测试值为异常值,所述响应为返回响应协议且所述响应协议指示所述目标终端对所述取值后的目标协议发出异常提示时,确定所述目标协议安全;

或者,当所述测试值为异常值,所述响应为所述目标终端断开连接,且断开连接后与所述目标终端重新建立连接成功时,确定所述目标协议安全;

或者,当所述测试值为异常值,所述响应为所述目标终端对所述取值后的目标协议不返回响应协议时,确定所述目标协议安全;

或者,当所述测试值为正常值,所述响应为返回响应协议且所述响应协议指示所述目标终端按预置正常方式响应所述取值后的目标协议时,确定所述目标协议安全。

可选的,所述装置还包括重连模块,用于在所述发送模块向目标终端发送取值后的目标协议之前,监测与所述目标终端的连接状态,当确定与所述目标终端断开连接时,与所述目标终端重新建立连接。

可选的,所述装置还包括记录模块,用于当确定所述目标协议不安全时,对所述取值后的目标协议、所述目标终端对所述取值后的目标协议的响应以及所述目标协议的安全性进行记录。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1