SIPp脚本编写方法基础m

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SIPp脚本编写方法基础

目录

SIPp脚本编写方法入门 (1)

1. 脚本格式 (3)

1.1.基于XML进行扩展 (3)

1.2.DTD扩展语法规则 (3)

1.3.脚本结构 (3)

1.4.注释 (5)

2. 脚本类型 (5)

2.1.UAC (5)

2.2.UAS (5)

2.3.3PCC(三方通话) (6)

2.4.OCC(Out-of-call) (6)

3. 命令与属性 (6)

3.1.常用命令 (6)

3.2.常用属性列表 (8)

3.3.正则表达式 (10)

4. 变量与关键字 (11)

4.1.关键字的使用 (11)

4.2.变量定义与使用 (13)

4.3.鉴权 (15)

5. 分支和跳转 (16)

5.1.标签 (16)

5.2.条件判断 (16)

5.3.跳转和循环 (17)

5.4.概率分支 (18)

6. 文件引用 (19)

6.1.外部文件格式 (19)

6.2.引用方法 (20)

6.3.文件索引 (20)

7. 脚本中的命令操作 (21)

7.1.内部命令 (21)

7.2.外部命令 (21)

7.3.媒体命令 (21)

8. 附录 (23)

修订记录 (24)

1.脚本格式

1.1.基于XML进行扩展

SIPp的测试脚本遵循标准的XML V1.0版本的语法规范,XML即“可扩展标记语言”eXtensible Markup Language 的缩写,W3C组织与1998年发布XML 1.0规范。

1.2.DTD扩展语法规则

SIPp的执行目录中,存在一个sipp.dtd文件。该文件为标准的xml扩展语法规则,在该文件中,对send、recv、pause等元素增加了定义,包括其属性列表等内容,可作为脚本文件格式的校验。

1.3.脚本结构

一个标准的SIPp脚本,文件起始应为通用的xml前导区和DTD文件定义区如图所示:

接下来使用包括的部分,即为脚本的正文部分。

sipp脚本正文部分,包含如下几个区域:

1.初始化区

在初始化区域中,通常用来进行全局变量的定义和赋值等操作,在脚本未进行逻辑流程前,预先完成初始化动作。

初始化区是在脚本正文的最开始,通过使用命令,并在其之间插入一些

量,仅用于全局变量,并不会应用于呼叫。例如下图中,在初始化区对

THINKTIME进行赋值:

2.逻辑执行区

逻辑执行区中包括了业务流程的相关内容,比如接收消息、发送消息、暂停时长、分支判断、媒体播放、内外部命令执行等操作。

逻辑执行区是脚本的最关键部分,编写sipp脚本,主要也就是针对该部分进行编写和调试。

3.变量抑制区

该部分是为了避免在脚本逻辑区定义了大量的变量,但实际并未使用导致运行时报错无法执行的问题,不论定义了多少变量,这些变量有无被使用,只需要添加进变量抑制区的列表中,脚本均可正常执行。该部分仅有一个命令,variables属性为所需抑制的变量列表。如下图所示:

4.定时器自定义区

该区域主要作用为:针对消息响应时长(ResponseTime)以及呼叫持续时长(CallLength)的Timer进行自定义间隔的配置,以获取所需的显示范围,例如自定义timer配置为:

则在sipp运行时,查看运行统计界面呈现如下:

1.4.注释

sipp脚本注释的语法格式为xxx<-->,支持多行注释,如:

2.脚本类型

SIPp脚本根据使用场景不同,主要分为UAC、UAS、3PCC和OCC4种类型,每种类型均有其特定的使用方式,内部逻辑也有所不同。

2.1.UAC

顾名思义,UAC类型的脚本主要是模拟sip会话中的UAC侧,即负责发起会话的client端。如注册客户端、主叫用户、订阅者等。通常的UAC脚本逻辑区会以send作为业务流程的起始。UAC脚本一旦启动,如果不设置起始暂停时长的参数,通常会立即开始执行。

2.2.UAS

UAS与UAC相对,主要模拟sip会话的UAS侧,启动后即进入被动接收状态,通常作为server端使用,如注册服务器、被叫用户、通知者、业务网关

等。通常的UAS脚本逻辑区会以recv作为业务流程的起始。UAS脚本启动后,即绑定相关本地socket,进入接收消息的状态。

2.3.3PCC(三方通话)

SIPp工具允许多个脚本实例间进行交互,完成较为复杂的业务流程。如三方通话等业务,因此该种脚本在普通脚本的基础上,更多地使用内部cmd交互命令,如recvcmd、sendcmd等在不同脚本间传递会话参数,配合完成复杂流程的测试实现。sipp还提供了扩展的3pcc模式,支持master和slave的脚本角色。该类型的脚本编写和调试较为复杂,本文档中不再赘述,如有兴趣可以翻阅sipp的使用手册等文档,其中有详细说明。

2.4.OCC(Out-of-call)

OCC(Out-of-call)脚本作为特殊类型的脚本,通常不会单独使用,而是与UAC脚本配合使用(也只能与UAC脚本配合,UAS等类型脚本无法支持-occsn等执行命令)。主要作用为扩展UAC脚本的适用范围,使UAC脚本能够在接收到不同会话内的非预期消息时,不至于直接丢弃。如注册客户端可能会遇到接收到通知NOTIFY的消息,此时就需要在运行register脚本的时候适用-oocsn或-oocsf参数,配合ooc脚本,实现对NOTIFY消息返回200的操作。

3.命令与属性

3.1.常用命令

SIPp工具提供的命令相当丰富,包括消息操作命令、变量操作、正则表达式、赋值和判断、内部命令、外部命令、日志操作、媒体命令等多种,在一般的使用场景下,通常根据不同的动作,来进行命令的使用。下面针对比较常用的场景,如发送消息、接收消息、媒体播放等进行描述:(更详细的命令功能及示例,可以翻阅sipp的使用手册等文档)

相关文档
最新文档