单元/集成测试Asterisk配置

Jak*_*org 5 configuration integration-testing unit-testing asterisk

当然,单元和集成测试通常作为开发过程的一部分执行.我正在寻找在现有系统的配置中使用这种方法的方法,在这种情况下是Asterisk软PBX.

在Asterisk的情况下,配置文件与其他任何编程语言一样多,包括循环,跳转,条件等,并且可能变得非常复杂.对配置的更改通常会遇到与复杂软件产品更改相同的问题 - 如果没有测试,很难预见所有效果.由于系统的性质是与外部实体通信,即拨打电话,这一点变得更糟.

我有一些关于使用调用文件测试系统的想法(在扩展之间创建特定调用),同时观察生成事件的管理器界面.然后,测试可以观察预期结果,即拨打*99#应该导致语音邮件应用程序被调用.

缺陷是显而易见的 - 它不测试实际结果,只测试系统认为的结果,并且可能需要对被测系统进行一些修改.要足够强大地编写这些测试以仅触发预期输出也是非常困难的,特别是如果系统正在使用中(即正在进行其他调用).

我想要的是Asterisk的测试系统,不可能吗?如果没有,您是否有任何关于如何以合理的方式解决这个问题的想法?我愿意花费相当多的开发时间并在友好许可下发布结果,但我不确定最好的方法.

Mat*_*dan 3

这显然是一个老问题,所以很有可能当原始答案发布在这里时,Asterisk 不支持单元/集成测试到今天的程度(尽管单元测试框架 API 于 12/22/ 09,所以至少确实存在)。

单元测试框架(来自此处开发列表的 David 的电子邮件)允许您直接在 Asterisk 中执行单元测试。测试已在框架中注册,并且可以通过 CLI 执行/查看。由于这都是 Asterisk 的一部分,因此测试被编译到可执行文件中。您必须使用 --enable-dev-mode 选项配置 Asterisk,并使用 menuselect 工具标记要编译的测试(某些应用程序,如 app_voicemail,自动注册测试 - 但它们是少数)。

编写单元测试相当简单 - 虽然它(显然)不像商业单元测试框架那样功能齐全,但它可以完成工作并且可以根据需要进行增强。

这很可能不是大多数 Asterisk 用户想要使用的——尽管强烈鼓励 Asterisk 开发人员检查它。用户和开发人员可能都对Asterisk 测试套件提供的集成测试感兴趣。测试套件的核心是一个执行其他脚本(lua、python 等)的 python 脚本。测试套件附带了一组 python 和 lua 库,可帮助编排和执行多个 Asterisk 实例。测试编写者可以使用第三方应用程序(例如 SIPp 或 Asterisk 接口(AMI、AGI)或其组合)来测试托管的 Asterisk 实例。

测试套件中现在有近 200 个测试,并且会定期添加更多测试。显然,您可以编写自己的测试来执行 Asterisk 配置并由测试套件管理它们 - 如果它们足够通用,您也可以提交它们以将其包含在测试套件中。

请注意,测试套件的设置可能有点棘手 - Leif在这里写了一篇关于设置测试套件的精彩博客文章。