近期要完成一个涉及呼叫的项目,需要支持访客直接联系客服的功能。
对于测试来说,也需要测试呼叫转发的性能,访客直接拨打接入号,由callserver这边添加路由转发到客服这边。
考虑过使用sipp与winsip两个工具,sipp的话可以自己定制流程,winsip的话可能适合配置型,但是也有很多流程可以配置的,由于以前项目也用过sipp来测试sip消息收发,呼叫也确定使用sipp来测试性能,当然,功能测试也可以用这个,不过功能测试一般直接装个eyebeam来拨就好了。。。
环境:单台服务器部署callserver,另外一台作为sipp的uac以及uas,可以同时运行uac和uas,开两个窗口就好了。
按照以往经验,测试环境系统能够支撑60个坐席,平均每个坐席通话时间60s,系统每秒处理的呼叫量为 60坐席/60s=1 CAPS。
设置3组测试数据:以60个坐席为基准,测试60个坐席以内,60个坐席以上,大于60坐席压力测试。
50坐席容量:0.83 CAPS 60s通话时长
100坐席容量:1.67 CAPS 60s通话时长
200坐席容量:3.33 CAPS 60s通话时长
测试过程中,修改了通话时长为30s,然后通过修改每秒呼叫量来控制并发的呼叫。实际测试50个并发,一共拨了5000个呼叫没出现问题。但是到100个并发的时候,uac发送过去的invite,由于服务器资源不够,直接回404 not found了,没有直接转给uas。
脚本如下,当然,不是全部自己写的,大部分都是套用模板,然后根据项目需求修改了一下流程:
uac.xml:原本呼叫中心是发两个invite给uac的,取消了播工号,然后注释了一次invite,只发送一次invite。
评论反馈之前的脚本不对应,估计是因为之前是直接改了就copy上来了,没有验证,现在直接从服务器copy了一份正常执行的上来,里面注释了一次invite,应该是可以执行的。
;tag=[call_number]
To: "sut"
Call-ID: [call_id]
CSeq: 1 INVITE
Contact:
Max-Forwards: 70
Subject: Performance Test
Content-Type: application/sdp
Content-Length: [len]
v=0
o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
s=-
c=IN IP[local_ip_type] [local_ip]
t=0 0
m=audio [auto_media_port] RTP/AVP 8
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-11,16
]]>
;tag=[call_number]
To: "02099635005"[peer_tag_param]
Call-ID: [call_id]
CSeq: 1 ACK
Contact:
Max-Forwards: 70
Subject: Performance Test
Content-Length: 0
]]>
;tag=[call_number]
To: "02099635005"[peer_tag_param]
Call-ID: [call_id]
CSeq: 2 BYE
Contact:
Max-Forwards: 70
Subject: Performance Test
Content-Length: 0
]]>
uas.xml:这个配置的流程,也就根据uac.xml来修改,需要对应请求和响应,基本上启动了就不怎么管了。
Content-Length: 0
]]>
Max-Forwards: 70
Subject: Performance Test
Content-Type: application/sdp
Content-Length: [len]
v=0
o=user2 53655765 2353687637 IN IP[local_ip_type] [local_ip]
s=-sipp
c=IN IP[local_ip_type] [local_ip]
t=0 0
m=audio 22222 RTP/AVP 8
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-11,16
]]>
Content-Length: 0
]]>
执行脚本,需要用以下格式添加csv的文件,作为uac侧发起呼叫的号码资源。
--------------------------------------------------------------------分割---------------------------------------------------------------------------------
10.32.121.20---安装sipp的服务器地址
10.32.121.11:7896---sip服务器地址
uas侧命令如下(需要先启动uas,不然uac启动了没对应的接收请求端了):
./sipp -sn uas -i 10.32.121.20 -p 5777 -sf /perf/sipp-script/uas.xml
说明:作为uas启动,5666为本地监听uac端的端口。
uac侧命令如下:
./sipp -sn uac 10.32.121.11:7896 -i 10.32.121.20 -p 5666 -m 500 -l 50 -r 3 -rp 1000 -sf /perf/sipp-script/uac.xml -inf /perf/sipp-script/uac.csv -trace_msg
说明:作为uac启动,每秒一个访客呼入客服,呼叫500次后停止,最大同时并发50个,5666为本地监听uac端的端口;uac.csv 这个文件路径是前面用csv格式保存的uac读取的号码资源文件。
命令参数说明:
-sn uc:作为客户端执行
-sn us:作为服务端执行
172.16.71.21:5060--对方IP
-i: 本地ip
-p:本地端口
-m:发送N次呼叫后停止并退出
-l: 最大同时通话数量,表示最大并发数,即同时可接电话的坐席数量
-r 1 -rp 1000: 每秒发送一个呼叫
-sf: 场景文件路径:
-inf:CSV文件路径