5

유닛 및 통합 테스트는 대개 개발 프로세스의 일부로 수행됩니다. 이 시스템을 구성 (이 경우 Asterisk soft PBX)에서 사용하는 방법을 찾고 있습니다.유닛/통합 테스트 별표 구성

별표 (Asterisk)의 경우 구성 파일은 루프, 점프, 조건부 등으로 완성 된 프로그래밍 언어이며 프로그래밍이 매우 복잡 할 수 있습니다. 구성을 변경하면 복잡한 소프트웨어 제품이 변경 될 때와 동일한 문제가 발생하기 때문에 테스트를 거치지 않고 모든 효과를 미리 예측하기 어려울 수 있습니다. 시스템의 성격이 외부 단체와 의사 소통하는 것, 즉 전화를 걸는 것이 사실입니다.

생성 된 이벤트에 대한 관리자 인터페이스를 보면서 호출 파일을 사용하여 시스템을 테스트 (확장간에 특정 호출을 작성)하기위한 몇 가지 아이디어가 있습니다. 그러면 테스트에서 예상 결과를 볼 수 있습니다. 즉, * 99 #를 다이얼하면 Voicemail 응용 프로그램이 호출됩니다.

결점은 명백합니다. 실제 결과를 테스트하지 않고 이 결과라고 생각하는 것일 뿐이므로이 결과이며 아마도 테스트중인 시스템을 약간 수정해야합니다. 특히 시스템이 사용 중이면 (예 : 진행중인 다른 통화가있는 경우) 예상 출력에서만 트리거 할 수있을만큼 견고하게 테스트를 작성하는 것도 정말 어렵습니다.

내가 원하는대로, 에스테 리스크 테스트 시스템이 불가능합니까? 그렇지 않은 경우 합리적인 방법으로이 문제를 해결할 수있는 방법에 대한 아이디어가 있습니까? 나는 상당한 양의 개발 시간을 여기에 넣고 친절한 라이센스하에 결과를 발표 할 의지가 있지만 접근 방법에 대해서는 확신 할 수 없다.

답변

2

이것은 분명히 오래된 질문입니다. 따라서 원래의 답변이 여기에 게시되면 Asterisk는 Unit Test Framework API가 도입되었지만 현재 단위 범위/통합 테스트를 지원하지 않았을 가능성이 있습니다 적어도 12/22/09, 그래서, 적어도 존재했다).

단위 테스트 프레임 워크 (dev 목록 here의 David 전자 메일)를 사용하면 Asterisk에서 단위 테스트를 직접 실행할 수 있습니다. 테스트는 프레임 워크에 등록되며 CLI를 통해 실행/볼 수 있습니다. 이것이 모두 Asterisk의 일부이기 때문에 테스트는 실행 파일로 컴파일됩니다. Asterisk를 --enable-dev-mode 옵션으로 구성해야하고 menuselect 도구 (app_voicemail과 같은 일부 응용 프로그램은 자동으로 테스트를 등록 함)를 사용하여 컴파일을위한 테스트를 표시해야하지만 소수입니다.

단위 테스트를 작성하는 것은 상당히 간단합니다. 상업용 단위 테스트 프레임 워크만큼 완벽하지는 않지만 (분명히) 작업이 완료되고 필요에 따라 향상 될 수 있습니다.

별표 (Asterisk) 사용자 대부분이 사용하려고하는 것이 아닙니다. 별표 (Asterisk) 개발자가 체크 아웃하는 것이 좋습니다. 사용자와 개발자 모두 Asterisk Test Suite이 제공하는 통합 테스트에 관심이있을 것입니다. 테스트 스위트는 루아, 파이썬 등 다른 스크립트를 실행하는 파이썬 스크립트입니다. 테스트 스위트에는 여러 개의 아스 테 리스크 인스턴스를 조율하고 실행하는 데 도움이되는 파이썬 라이브러리와 루아 라이브러리가 함께 제공됩니다. 테스트 작성자는 SIPp 또는 Asterisk 인터페이스 (AMI, AGI) 또는 이들의 조합과 같은 타사 응용 프로그램을 사용하여 호스트 된 Asterisk 인스턴스를 테스트 할 수 있습니다.

테스트 스위트에는 현재 거의 200 개의 테스트가 있으며, 정기적으로 더 많은 테스트가 추가됩니다. 분명히 별표 설정을 실행하고 테스트 스위트에서 관리하도록 자신 만의 테스트를 작성할 수 있습니다. 테스트 스위트에서 충분히 포괄적 인 경우 테스트 스위트에 포함시키기 위해 제출할 수도 있습니다.

테스트 스위트는 약간 까다로울 수 있습니다. Leif는 테스트 스위트 here을 설정하는 좋은 블로그 게시물을 작성했습니다.

+0

내가 틀렸다면 정정 해주지 만, Asterisk 개발자는 Asterisk 개발자가 Asterisk 자체를 테스트하는 반면 Asterisk 상단에 구축 된 시스템을 테스트하는 것은 문제입니다. – nafg

+0

다양한 용도로 사용할 수 있습니다. Asterisk 테스트 스위트는 컴퓨터 구성 + 일부 재정의를 사용하여 Asterisk의 인스턴스를 조정합니다. 여기에는 모의 전화 (Mock Call), 이벤트 확인 등과 같은 Asterisk 운전이 포함됩니다. 많은 사람들이 업그레이드 사이에서 구성을 확인하기 위해이 정보를 사용합니다. OP의 질문에 따르면, 그 가능성을 보였다. –

3

글쎄, 테스트 대상에 따라 다릅니다. 이런 종류의 일을 처리하는 데는 여러 가지 방법이 있습니다. 나의 선호는 Dialplan 코드와 함께 번들 된 별표 (Asterisk) 호출 파일을 사용하는 것입니다. EG : 공개 번호를 다이얼 한 후, 지정된 다이얼 플랜 컨텍스트로 돌아가서 사운드 파일을 재생하고, 키 누름을 듣습니다.

별표를 작성했습니다. 이런 종류의 테스트를 아주 쉽게 만드는 파일 라이브러리. 문서/예제가 많이 있으므로 여기를 확인하십시오 : http://pycall.org/. 그게 너에게 도움이 될거야.

행운을 빈다.

+1

그건 나쁜 라이브러리가 아닙니다. 내가 상상 한 대부분의 테스트는 "사용자가이 짧은 번호로 전화를 걸고 국선에 다른 번호로 전화가 연결되는지 확인합니다"또는 "사용자가이 번호로 전화를 걸고 전화가 응답되는지 확인하고 사운드 파일이 재생되는지 , 그리고 데이터베이스 엔트리가 생성되었습니다. " 부작용은 (상대적으로) 검증하기 쉽고, 사용자 경험이 그리 많지 않습니다. :/ –

+0

그런 경우 AMI (Asterisk Manager Interface)를 사용하여 호출이 성공적으로 이루어 졌는지 여부와 같은 라이브 상태 이벤트를 다시 얻을 수 있습니다. 여기에서 문서를 확인하십시오. http : //www.voip-info.org/wiki/view/Asterisk+manager+API – rdegges

0

특정 시나리오 집합을 만들고 Asterisk의 MixMonitor 명령을 사용하여 이러한 호출을 기록 할 수 있습니다. 이렇게하면 이러한 테스트를 위해 시스템에서 표준이었던 사운드 레코딩 세트를 만들 수 있고 자동화 된 사운드 파일 비교 도구 (아마도 comparing-sound-files-if-not-completely-identical의 일부입니까?)를 사용하여 결과를 검사 할 수 있습니다. 그냥 생각.

+0

그건 작동하지 않습니다. 통화시 소리를 처리 할 때 많은 변수가 있습니다. 정적, 타이밍 및 기타 문제로 인해 거의 불가능합니다. – rdegges

+0

오디오 핑거 프린팅에 대한 많은 경험이 없으며 비교 작업의 세분성에 대해 알지 못합니다. 그러나 별표 상자에서 로컬 네트워크의 별표 상자로 전화를 걸면 단위 테스트에 사용할 것이라고 상상합니다. 많은 변수가 상수에 가까울 것이라고 생각합니다. 즉, 나는 또한 이런 유형의 단위 테스트가 얼마나 효과적 일지 확신 할 수 없다. 단지 제안을하는 것이다. : -). –

0

통합 테스트와 달리 단위 테스트는 코드 자체가 아키텍처가되어 로직 자체가 외부 종속성으로부터 격리된다는 것을 의미합니다. 당신은 "설정 파일은 다른 프로그래밍 언어만큼이나"라고 말했지만 실제 언어는 흐름을 제어하는 ​​것이 아니라 추상화 기능을 사용하여 단위 테스트를 할 수있는 방식으로 논리를 작성할 수 있습니다. 그래서 논리를 별표 외부에 가능한 많이 유지합니다.

통합 테스트를 위해 응용 프로그램을 구동하기 위해 linphonec 스크립트를 실행하고 별표 콘솔을 grep하여 수행중인 작업을 확인하십시오. 도커를 사용하여 각 테스트에 대해 임시 별표 인스턴스를 실행할 수 있습니다.