2010-03-04 100 views
17

我正在寻找一个测试SIP调用的工具。从SIP设备A呼叫SIP设备B并报告结果的平台...SIP测试平台

任何想法?仿真平台将是理想的。

日Thnx, cateof

+0

出于好奇,什么是SIP? – NotMe 2010-03-04 14:50:57

+0

会话启动协议,用于VOIP呼叫信令(呼叫,挂断,添加其他人对话等) – Marius 2010-03-04 14:53:33

回答

9

在SourceForge检出SIPp。它有很多不同的测试场景,可以测试哪些UAS模式(服务器)可能会让你感兴趣,并且似乎允许INVITE,BYE等。

+0

看起来不错。这似乎足以满足我的需求。 – cateof 2010-03-04 15:15:51

+0

如果您正在寻找基于GUI的免费SIP测试工具,您可能想参考加载乘数(https://loadmultiplier.com)。 SIP功能测试是免费的,有限的负载测试是免费的。 – Kamal 2016-03-17 16:46:47

-2

什么你想从该呼叫是否获得通过测试分开?你不能简单地从设备A拨打设备B,看看你是否可以通过连接进行通话?如果你想看看发送的数据包,你应该看看wireshark

+0

我想测试复杂的场景。例如A呼叫B,B转移到C等等。不过,我不想在我的桌面上安装5个SIP软电话。 – cateof 2010-03-04 14:54:16

26

有许多解决方案。一些比别人更坏。以下是我在寻找合适自动化测试解决方案基础时发现的内容的简要总结。

,如果你想一次只能一个对话框这没关系。这里不起作用的是复杂的解决方案,您需要同步2个呼叫线路,在同一场景中进行注册,呼叫和在线状态。如果你这样做,你将最终为每个对话元素单独运行多个sipp场景。 Sipp也根本没有媒体转移的规模。尽管它是多线程的,但它阻止了它同时运行 - 例如,如果您看到htop例如,您会看到sipp从未穿过100%线。大约50个媒体通话它开始削减音频并采取机器的所有CPU。

它有时会丢失发生的事情,一些甚至不属于该呼叫的数据包可能无法通过测试。它有一些愚蠢的错误,比如头文件区分大小写。

基于Ruby的解决方案,你必须写在Ruby中您自己的方案。它有自己的SIP堆栈和大量的测试。虽然它通常很好,并且很好地处理了很多复杂的场景,但它的设计非常糟糕。错误很难追踪,一个星期后,我有超过10个补丁,我只是为了让它做基本的东西。后来我了解到一些场景只是用不同的方式写的,但是SIPr开发人员并没有真正的响应,并且花了很多时间才找到它。如果一个难题同步许多代理的行为,因为他们宁愿使用基于事件的,但仍然是单线程的版本......它只是让你过分关注“这种情况发生的顺序,我能处理它正确“,而不是写实际的测试。

商业解决方案。由于评估版本中缺少基本功能,所以从未进行过适当的测试,并且很难将这么多钱花在不确定的工作上......

基于Java的溶液重用耆那-SIP栈。它几乎可以做任何场景,并且相当不错。它试图使一切都基于非阻塞/动作,导致SIPr具有相同的问题,但在这种情况下,使其成为并行/线程是微不足道的。它有自己的错误分享,所以不是所有的东西在香草套装中都能很好地工作,但大部分东西都是可以修补的。开发人员似乎忙于其他项目,所以很长一段时间没有更新。如果您需要传输,存在,对话信息,自定义消息,RTP处理等 - 您必须编写自己的修改来支持它们。这对性能测试并不好。

如果你像我这样的Java厌恶者,可以通过Jython,JRuby或任何其他JVM语言以简单的方式使用它。

最后,我选择了SIPunit作为最坏的/邪恶的/无法使用的解决方案。这绝不是完美的,但是......它在大多数情况下都有效。如果我再次用这些知识来完成项目,我可能会重用SIPp配置,并尝试编写我自己的,理性的解决方案,使用适当的线程 - 但这对于一个人来说至少需要一年半的时间才能完成足够用于生产。

+0

+1为好答案!我使用SipUnit和SIPp。 – Paaske 2012-08-10 07:18:27

2

尝试SIPInspector。这是一个基于JAVA的实用程序来重新创建不同的SIP信号情况。它可以播放RTP并对你的系统进行压力测试。由于使用JAVA编写,因此它具有高度的便携性,适用于不同的操作系统。用户比SIPp更容易。