7

もちろん、ユニットテストと統合テストは通常​​、開発プロセスの一部として実行されます。既存のシステム(この場合はAsteriskソフトPBX )の構成でこの方法を使用する方法を探しています。

アスタリスクの場合、構成ファイルは他のものと同じくらいプログラミング言語であり、ループ、ジャンプ、条件などを備えており、非常に複雑になる可能性があります。構成の変更は、複雑なソフトウェア製品の変更と同じ問題に悩まされることがよくあります。テストを実施しないと、すべての影響を予測するのは難しい場合があります。システムの性質が外部エンティティと通信すること、つまり電話をかけることであるという事実によって、さらに悪化します。

生成されたイベントのマネージャインターフェイスを監視しながら、(内線間で特定の呼び出しを作成するために)呼び出しファイルを使用してシステムをテストすることについていくつかのアイデアがあります。次に、テストで期待される結果を監視できます。つまり、* 99#をダイヤルすると、Voicemailアプリケーションが呼び出されます。

欠陥は明らかです。実際の結果をテストするのではなく、システムが結果であると考えるものだけをテストします。おそらく、テスト対象のシステムに何らかの変更を加える必要があります。また、特にシステムが使用中の場合(つまり、進行中の他の呼び出しがある場合)、期待される出力でのみトリガーするのに十分な堅牢性でこれらのテストを作成することは非常に困難です。

私が欲しいのは、アスタリスクのテストシステムは不可能ですか?そうでない場合、これを合理的な方法で行う方法について何かアイデアはありますか?私はこれにかなりの開発時間を費やし、友好的なライセンスの下で結果をリリースするつもりですが、それにアプローチするための最良の方法がわかりません。

4

4 に答える 4

3

まあ、それはあなたがテストしているものに依存します。この種のことを処理する方法はたくさんあります。私の好みは、ダイヤルプランコードにバンドルされているアスタリスクコールファイルを使用することです。例:コールファイルを作成して公開番号をダイヤルします。応答したら、指定したダイヤルプランコンテキストに戻って、すべてのテストロジックを実行します(サウンドファイルの再生、キーの押下のリッスンなど)。

この種のテストを非常に簡単にするAsterisk呼び出しファイルライブラリを作成しました。ドキュメントや例もたくさんあります。http://pycall.org/をチェックしてください。それはあなたを助けるかもしれません。

幸運を!

于 2010-02-01T17:24:09.420 に答える
3

これは明らかに古い質問であるため、元の回答がここに投稿されたときに、Asteriskが今日のようにユニット/統合テストをサポートしていなかった可能性があります(ユニットテストフレームワークAPIは12/22に導入されましたが)。 09、少なくとも、存在していました)。

単体テストフレームワーク(ここの開発リストからのDavidの電子メール)を使用すると、Asterisk内で単体テストを直接実行できます。テストはフレームワークに登録され、CLIを介して実行/表示できます。これはすべてAsteriskの一部であるため、テストは実行可能ファイルにコンパイルされます。--enable-dev-modeオプションを使用してAsteriskを構成し、menuselectツールを使用してコンパイル用のテストにマークを付ける必要があります(app_voicemailなどの一部のアプリケーションはテストを自動的に登録しますが、少数派です)。

単体テストの作成はかなり簡単です。これは(明らかに)商用の単体テストフレームワークほど完全には機能していませんが、作業を完了し、必要に応じて拡張できます。

これは、Asteriskユーザーの大多数が使用したいと思うものではない可能性が高いですが、Asterisk開発者はそれをチェックすることを強くお勧めします。ユーザーと開発者の両方が、 AsteriskTestSuiteが提供する統合テストにおそらく興味を持っています。Test Suiteの核となるのは、lua、pythonなどの他のスクリプトを実行するPythonスクリプトです。TestSuiteには、複数のAsteriskインスタンスのオーケストレーションと実行に役立つPythonおよびluaライブラリのセットが付属しています。テスト作成者は、SIPpまたはAsteriskインターフェイス(AMI、AGI)、またはそれらの組み合わせなどのサードパーティアプリケーションを使用して、ホストされているAsteriskインスタンスをテストできます。

現在、テストスイートには200近くのテストがあり、かなり定期的に追加されています。明らかに、Asterisk構成を実行する独自のテストを作成し、それらをTest Suiteで管理することができます。それらが十分に汎用的である場合は、それらを送信してTestSuiteに含めることもできます。

Test Suiteの設定は少し難しい場合があることに注意してください。Leifは、TestSuiteの設定に関する優れたブログ投稿をここに書いています。

于 2012-01-04T20:27:29.267 に答える
1

特定のシナリオのセットを作成し、AsteriskのMixMonitorコマンドを使用してこれらの呼び出しを記録することができます。これにより、これらのテストでシステムに標準的な一連のサウンドレコーディングを確立し、自動サウンドファイル比較ツール(おそらく、サウンドファイルの比較からの何か-完全に同一ではない場合は?)を使用して調べることができます。結果。ただのアイデア。

于 2010-02-01T17:33:16.620 に答える
1

統合テストとは対照的な単体テストは、コードがアーキテクチャ化されていることを意味するため、ロジック自体は外部の依存関係から隔離されています。「構成ファイルは他の何よりもプログラミング言語である」とおっしゃいましたが、それが問題です。実際の言語には、制御フローだけでなく、単体テストが可能な方法でロジックを記述できる抽象化機能があります。そのため、ロジックは可能な限りアスタリスクの外に置いています。

統合テストの場合は、アプリケーションを駆動するスクリプトを作成linphonecし、アスタリスクコンソールをgrepして、アプリケーションの動作を確認します。dockerを使用して、テストごとに一時的なアスタリスクインスタンスを起動できます。

于 2015-08-14T18:27:16.210 に答える