基于cmpp3.0协议的短信发送性能测试方法及系统与流程

文档序号:15822180发布日期:2018-11-02 23:12阅读:1538来源:国知局
基于cmpp3.0协议的短信发送性能测试方法及系统与流程

本发明涉及移动通信领域,尤其是一种基于cmpp3.0协议的短信发送性能测试方法及系统。

背景技术

中国移动cmpp3.0协议,全名中国移动通信互联网短信网关接口协议,是中国移动定义的一套短信协议,该协议提供给需要使用中国移动发送短信的平台。短信平台或sp(短信服务提供商)端可以通过这一套协议与互联网短信网关(ismg)进行交互并传递给中国移动,从而发送所需要的长连接短信或者是短连接短信。使用中国移动cmpp3.0协议发送短信,目前有大量公开的程序开发资料,但是使用其来进行性能测试的相关技术文档较少。目前cmpp3.0协议的测试工具,一般只能测试单次发送的长连接短信和短连接短信,对于高并发多手机号和大批量的短信发送性能测试却是没有的,这个也与cmpp3.0协议的特殊性和性能测试工具的特异性有关:

现有技术实现sp端短信发送请求的方式如下:

短连接请求:目前能实现仅一次发送。如图1所示,当发送短信字数≤70个字时,先进行连接,连接完发送短信,发送完短信,断开连接。通信双方以客户-服务器方式建立tcp连接,应答与请求在同一个连接中完成,在java开发中可以使用sokect连接好后同时进行发送短信操作,在一个线程中执行这两个请求是可以的,但是对于性能工具(如jmeter和loadrunner)来说,由于需要动态添加参数值以适应不同的sp端来进行大批量压测,第一个请求需要执行连接,第二个请求使用动态参数值发送短信,但由于性能工具的特异性,每个请求执行是不相关联的,而且是一个步骤step一个请求,这样就造成第二个发送短信请求无法进行连接,导致发送短信不成功。实际生活中的发送短连接请求是并发的,但目前却没有相应模拟并发的代码和工具,无法模拟短连接请求并发并测试出ismg端开发程序的性能缺陷和瓶颈。

长连接请求:一条长短信,例如140个字的短信,使用一次长连接线程发送,如图2所示,先进行一次长连接请求,建立连接,然后发送70个字的cmpp短信请求1,再发送剩下的70个字的短信请求2,这两个请求都发送完就是一个完整的短信,链路检测到没有短信请求时就断开连接,这就是目前普遍实现一次长连接短信的情景。通信双方以客户-服务器方式建立tcp连接,用于双方信息的相互提交。当信道上没有数据传输时,通信双方应每隔时间c发送链路检测包以维持此连接;这样就要求只使用sokect连接ismg和sp一次,后续发送短信不断进行发送也不需要重复进行发送sokect协议,这就和之前的长连接又有所不同了。正如前面短连接时所说的性能工具(如jmeter和loadrunner)第一个请求是进行连接操作而第二个请求执行发送短信的,对于长连接短信的性能测试来说,也就是连接操作执行一次,而第二个请求高并发叠加n次;这就要求性能工具能提供模拟高并发的代码或线程,执行第一个请求1次,执行第二个请求执行n次。现实中短信的发送大多数是高并发(即属于长连接请求)的,但目前尚缺少相应的模拟长连接请求高并发的工具,无法模拟测试出ismg端开发程序的性能缺陷和瓶颈。



技术实现要素:

为解决上述技术问题,本发明的目的在于:提供一种基于cmpp3.0协议的短信发送性能测试方法及系统,以进行高并发多手机号和大批量的短信发送性能测试。

本发明所采取的第一技术方案是:

基于cmpp3.0协议的短信发送性能测试方法,包括以下步骤:

按cmpp3.0协议编写长短连接的连接和发送短信的java代码;

根据长短连接的连接和发送短信的java代码编写操作性能测试工具线程的java代码,使得同一线程中发送短信请求能读取连接请求的连接状态;

在性能测试工具线程中根据操作性能测试工具线程的java代码进行性能测试。

进一步,所述根据长短连接的连接和发送短信的java代码编写操作性能测试工具线程的java代码,使得同一线程中发送短信请求能读取连接请求的连接状态这一步骤,具体为:

识别操作性能测试工具线程的java代码是属于短连接代码还是属于长连接代码,若是短连接代码,则将性能测试工具中同一个线程的连接请求的结果保存至第一变量,以供对应的发送请求读取;若是长连接代码,则令性能测试工具中第一个线程发送连接请求,并执行一次后将执行的结果保存到第二变量中,性能测试工具后续的线程发送请求时均读取第二变量。

进一步,所述性能测试工具包括jmeter性能测试工具和loadrunner性能测试工具。

进一步,所述在性能测试工具线程中根据操作性能测试工具线程的java代码进行性能测试这一步骤,具体包括:

将操作性能测试工具线程的java代码转换为在jmeter性能测试工具中使用的jar包;

在jmeter性能测试工具中嵌入转换后的jar包,并编写对应的jmeter测试脚本;

采用编写的jmeter测试脚本进行短信发送性能测试。

进一步,所述在性能测试工具线程中根据操作性能测试工具线程的java代码进行性能测试这一步骤,具体包括:

在loadrunner性能测试工具中根据操作性能测试工具线程的java代码编写对应的loadrunner测试脚本;

采用编写的loadrunner测试脚本进行短信发送性能测试。

进一步,所述性能测试包括模拟高并发性能测试和压力测试。

本发明所采取的第二技术方案是:

基于cmpp3.0协议的短信发送性能测试系统,包括:

第一代码编写模块,用于按cmpp3.0协议编写长短连接的连接和发送短信的java代码;

第二代码编写模块,用于根据长短连接的连接和发送短信的java代码编写操作性能测试工具线程的java代码,使得同一线程中发送短信请求能读取连接请求的连接状态;

性能测试模块,用于在性能测试工具线程中根据操作性能测试工具线程的java代码进行性能测试。

进一步,所述第二代码编写模块具体用于:

识别操作性能测试工具线程的java代码是属于短连接代码还是属于长连接代码,若是短连接代码,则将性能测试工具中同一个线程的连接请求的结果保存至第一变量,以供对应的发送请求读取;若是长连接代码,则令性能测试工具中第一个线程发送连接请求,并执行一次后将执行的结果保存到第二变量中,性能测试工具后续的线程发送请求时均读取第二变量。

进一步,所述性能测试工具包括jmeter性能测试工具和loadrunner性能测试工具。

本发明所采取的第三技术方案是:

基于cmpp3.0协议的短信发送性能测试系统,包括:

存储器,用于存储程序;

处理器,用于加载所述程序以执行如第一技术方案所述的短信发送性能测试方法。

本发明的有益效果是:本发明基于cmpp3.0协议的短信发送性能测试方法及系统,根据长短连接的连接和发送短信的java代码编写操作性能测试工具线程的java代码,使得同一线程中发送短信请求能读取连接请求的连接状态,通过发送短信请求读取连接请求的连接状态的方式实现了连接与发送分离时仍能发送短信,而且可以采用性能测试工具模拟ismg端进行高并发多手机号和大批量的短信发送性能测试,从而检测出对应的ismg开发程序是否满足性能要求。

附图说明

图1为现有技术的短连接请求实现流程图;

图2为现有技术的长连接请求实现流程图;

图3为本发明基于cmpp3.0协议的短信发送性能测试方法的整体流程图;

图4为本发明采用jmeter性能测试工具来进行短信发送性能测试方案的优选实施例流程图;

图5为jmeter采用本发明的方法实现短连接短信的高并发方案的优选实施例流程图;

图6为jmeter采用本发明的方法实现长连接短信的高并发方案的优选实施例流程图。

具体实施方式

参照图1,基于cmpp3.0协议的短信发送性能测试方法,包括以下步骤:

按cmpp3.0协议编写长短连接的连接和发送短信的java代码;

根据长短连接的连接和发送短信的java代码编写操作性能测试工具线程的java代码,使得同一线程中发送短信请求能读取连接请求的连接状态;

在性能测试工具线程中根据操作性能测试工具线程的java代码进行性能测试。

其中,编写java代码可由自动化代码生成工具来完成。

本发明通过编写操作性能测试工具线程的java代码,使得同一线程中发送短信请求能读取连接请求的连接状态,不仅支持现有连接和发送短信在一个应答中的短信发送功能,且实现连接与发送分离时仍能发送短信,动态支持各种不同连接地址、多手机号和单手机号:短连接短信发送时第二个发送短信请求能够读取第一个连接请求的连接状态,从而实现发送;长连接短信发送时发送大批量的高并发的短信请求时都只读取一次长连接请求的连接状态。本发明能够模拟现实生活中的同时并发短信情况,填补了现有技术只有实现长短连接短信发送的开发方法,却没有执行模拟同时并发的测试解决方案的空白,能够通过性能测试工具找出使用cmpp3.0协议发送短信的ismg端开发程序的性能瓶颈和指标。

进一步作为优选的实施方式,所述根据长短连接的连接和发送短信的java代码编写操作性能测试工具线程的java代码,使得同一线程中发送短信请求能读取连接请求的连接状态这一步骤,具体为:

识别操作性能测试工具线程的java代码是属于短连接代码还是属于长连接代码,若是短连接代码,则将性能测试工具中同一个线程的连接请求的结果保存至第一变量,以供对应的发送请求读取;若是长连接代码,则令性能测试工具中第一个线程发送连接请求,并执行一次后将执行的结果保存到第二变量中,性能测试工具后续的线程发送请求时均读取第二变量。

其中,对应的发送请求是指属于同一个线程下的发送请求。

本发明操作性能测试工具线程的java代码为短连接代码时,对于同一个线程里连接的请求的结果会保存在一个变量中,然后发送请求会读取这个变量,每个线程发送连接请求都会保存到各自的变量中,然后让相应线程下的发送请求去读取这个变量;如果是长连接发送短信,就需要在性能测试工具的测试计划中进行控制,让第一个线程发送连接请求,仅执行一次并保存到一个变量中,后续的线程发送请求都会读取这个变量。

进一步作为优选的实施方式,所述性能测试工具包括jmeter性能测试工具和loadrunner性能测试工具。

进一步作为优选的实施方式,所述在性能测试工具线程中根据操作性能测试工具线程的java代码进行性能测试这一步骤,具体包括:

将操作性能测试工具线程的java代码转换为在jmeter性能测试工具中使用的jar包;

在jmeter性能测试工具中嵌入转换后的jar包,并编写对应的jmeter测试脚本;

采用编写的jmeter测试脚本进行短信发送性能测试。

对于jmeter来说,本发明在编写jmeter代码的时候对已经实现单次发送的java代码进行了修改,在java中使用了jmeter代码,操作jmeter的线程操作,使jmeter线程中的第二个发送短信请求能够调用到第一个连接请求,将java代码导出到jmeter中,使用java请求执行性能测试操作,其性能测试操作在jmeter中与普通性能操作一样。

进一步作为优选的实施方式,所述在性能测试工具线程中根据操作性能测试工具线程的java代码进行性能测试这一步骤,具体包括:

在loadrunner性能测试工具中根据操作性能测试工具线程的java代码编写对应的loadrunner测试脚本;

采用编写的loadrunner测试脚本进行短信发送性能测试。

本发明使用loadrunner来进行性能测试的测试流程与jmeter是类似的,都是编写好代码后使用java代码进行连接,然后把连接和发送的请求拆分出来,使得发送读取到连接的请求状态,但其不需要再额外导出jar包,而是直接使用操作loadrunner线程操作的java代码进行性能测试。

进一步作为优选的实施方式,所述性能测试包括模拟高并发性能测试和压力测试。

与图3的方法相对应,本发明基于cmpp3.0协议的短信发送性能测试系统,包括:

第一代码编写模块,用于按cmpp3.0协议编写长短连接的连接和发送短信的java代码;

第二代码编写模块,用于根据长短连接的连接和发送短信的java代码编写操作性能测试工具线程的java代码,使得同一线程中发送短信请求能读取连接请求的连接状态;

性能测试模块,用于在性能测试工具线程中根据操作性能测试工具线程的java代码进行性能测试。

进一步作为优选的实施方式,所述第二代码编写模块具体用于:

识别操作性能测试工具线程的java代码是属于短连接代码还是属于长连接代码,若是短连接代码,则将性能测试工具中同一个线程的连接请求的结果保存至第一变量,以供对应的发送请求读取;若是长连接代码,则令性能测试工具中第一个线程发送连接请求,并执行一次后将执行的结果保存到第二变量中,性能测试工具后续的线程发送请求时均读取第二变量。

进一步作为优选的实施方式,所述性能测试工具包括jmeter性能测试工具和loadrunner性能测试工具。

与图3的方法相对应,本发明基于cmpp3.0协议的短信发送性能测试系统,包括:

存储器,用于存储程序;

处理器,用于加载所述程序以执行如本发明所述的短信发送性能测试方法。

下面结合说明书附图和具体实施例对本发明作进一步解释和说明。

以性能测试工具为jmeter例,如图4所示,本实施例进行短信发送性能测试方案的具体实现流程如下:

s100、按cmpp3.0协议编写长短连接的连接和发送短信的java代码;

s101、根据长短连接的连接和发送短信的java代码编写操作性能测试工具线程的java代码,使得同一线程中发送短信请求能读取连接请求的连接状态,实现发送和连接分离仍能够发送短信;

s102、转换为在jmeter中使用的jar包;

s103、在jmeter中嵌入转换后的jar包,并编写对应的jmeter测试脚本,执行模拟高并发、压力测试等性能测试,测试出imsg端按照协议开发的程序的性能指标和瓶颈。

其中,所述步骤s101的具体实现过程为:操作jmeter线程的java代码为短连接代码时,对于同一个线程里面,连接的请求的结果会保存在一个变量中,然后发送请求会读取这个变量,每个线程发送连接请求,都会保存到各自的变量中,然后让相应线程下的发送请求去读取这个变量;如果是长连接发送短信,就需要在jmeter的测试计划中进行控制,让第一个线程发送连接请求,仅执行一次并保存到一个变量中,后续的线程发送请求都会读取这个变量。

本实施例主要包括写出对应的java代码、转成jmeter代码和在jmeter中执行java请求这三个过程,在编写jmeter代码的时候对已经实现单次发送的java代码进行了修改,在java中使用jmeter代码,操作jmeter的线程操作,使jmeter线程中的第二个发送短信请求能够调用到第一个连接请求,将java代码导出到jmeter中,然后使用java请求执行性能测试操作,性能测试操作在jmeter中与普通性能操作一样。

本实施例对于短连接短信,有以下功能:

(1)、分离连接和发送短信,根据不同的参数动态连接不同的ismg端,执行不同短信,支持多手机号和单手机号等不同的短信发送功能;

(2)同时执行高并发ismg和sp端的连接和发送短信,同时并发n个线程,具体实现流程如图5所示。

以并发140字长短信的长连接短信为例,本实施例的长连接短信的连接与发送实现流程如图6所示。

本实施例具有以下优点:

a、使用cmpp3.0协议进行短连接短信发送的性能测试时,jmeter第二个发送短信请求能够读取第一个cmpp连接请求的连接状态,从而实现发送功能,而且可以进行高并发和大数量的短信发送,从而检测出对应的ismg开发程序是否满足性能要求;

b、使用cmpp3.0协议进行长连接短信发送的性能时,jmeter发送大批量和高并发的短信请求时都只读取一次长连接请求的连接状态;

c、将java代码转换为jmeter可以使用的代码,更加方便;

d、从现有技术的连接和发送短信在一个应答中,变成连接和发送分离也能发送短信,能动态支持各种不同连接地址、多手机号和单手机号;

e、能够模拟现实生活中的同时并发短信情况,填补了网上只有实现长短连接短信发送的开发方法,却没有执行模拟同时并发的测试解决方案的空白,能够通过jmeter性能测试找出使用cmpp3.0协议发送短信的ismg端开发程序的性能瓶颈和指标。

以上是对本发明的较佳实施进行了具体说明,但本发明并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

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