Skip to content

Latest commit

 

History

History
308 lines (220 loc) · 7.14 KB

File metadata and controls

308 lines (220 loc) · 7.14 KB

테스트 및 검증 ✅

OnVoiceAudioBridge 테스트 스크립트 및 검증 결과

완료 날짜: 2025-11-18
E2E 테스트 완료: 2025-11-20 🎉
상태: ✅ 완료


🎯 개요

VBScript를 사용한 COM 인터페이스 및 이벤트 시스템 검증. 실제 오디오 캡처 동작 확인.


📋 테스트 스크립트

1. TestOnVoiceEvents.vbs

목적: COM 이벤트 수신 테스트

주요 테스트 항목:

  • ✅ COM 객체 생성 (이벤트 prefix 포함)
  • ✅ 초기 상태 확인
  • ✅ StartCapture 호출
  • ✅ OnAudioData 이벤트 수신
  • ✅ StopCapture 호출

사용법:

cd phase3-com-dll\OnVoiceAudioBridge\x64\Debug
cscript //nologo TestOnVoiceEvents.vbs [PID]

예상 출력:

========================================
 OnVoiceCapture 이벤트 테스트 (GIT 버전)
========================================

[1] 이벤트 Prefix 포함해서 COM 객체 생성...
OK: COM 객체 생성 완료

[2] 초기 상태: 0 (0=Stopped,1=Starting,2=Capturing,3=Stopping)

[3] StartCapture(12345) 호출...
StartCapture 성공 (HR=0)

[4] Start 후 상태: 2 (2=Capturing 기대)

[5] 5초 동안 이벤트 수신 대기...

[Event] OnAudioData 수신! size=3200 bytes
[Event] OnAudioData 수신! size=3200 bytes
...

[6] StopCapture 호출...
StopCapture HR=0

2. TestPidCapture.vbs

목적: PID 기반 캡처 스모크 테스트

주요 테스트 항목:

  • ✅ COM 객체 생성
  • ✅ 초기 상태 확인
  • ✅ StartCapture 호출 (PID 입력)
  • ✅ 10초간 캡처 유지
  • ✅ StopCapture 호출
  • ✅ 최종 상태 확인

사용법:

cscript //nologo TestPidCapture.vbs
# InputBox에서 PID 입력

특징:

  • 사용자 친화적인 InputBox 인터페이스
  • 10초간 캡처 유지 (실제 오디오 재생 테스트 가능)
  • 상태 전환 확인

3. TestAudioCaptureEngine.vbs

목적: AudioCaptureEngine 연동 테스트

주요 테스트 항목:

  • ✅ COM 객체 생성
  • ✅ 초기 상태 확인
  • ✅ StartCapture 호출 (테스트 PID: 1234)
  • ✅ 상태 확인
  • ✅ StopCapture 호출

사용법:

cscript //nologo TestAudioCaptureEngine.vbs

특징:

  • 빠른 스모크 테스트
  • 콘솔 로그 확인용 (Engine 메시지)

4. TestCaptureToWav.vbs 🎉 신규!

목적: WAV 파일 저장 E2E 테스트

주요 테스트 항목:

  • ✅ COM 객체 생성 (이벤트 prefix 포함)
  • ✅ 오디오 데이터 수집 (10초간)
  • ✅ 총 청크 수 및 데이터 크기 확인
  • ✅ StopCapture 호출
  • ✅ WAV 파일 저장 및 검증

사용법:

cd phase3-com-dll\OnVoiceAudioBridge\x64\Debug
cscript //nologo TestCaptureToWav.vbs [PID]

테스트 결과 (2025-11-20):

✅ 캡처 완료! 총 945 개의 오디오 청크 수집됨
✅ 총 데이터 크기: 323,190 bytes
✅ StopCapture 완료 (HR=0)
✅ WAV 파일 저장 완료: capture_Chrome_2025-11-20_오후_25001.wav
✅ 테스트는 성공적으로 끝났어.

특징:

  • 실제 오디오 재생 테스트 가능
  • WAV 파일로 저장하여 재생 검증 가능
  • 전체 E2E 테스트 시나리오 완성

✅ 검증 결과

COM 인터페이스 검증

✅ CreateObject("OnVoiceAudioBridge.OnVoiceCapture") 성공
✅ GetCaptureState() → 0 (Stopped)
✅ StartCapture(12345) → S_OK
✅ GetCaptureState() → 2 (Capturing)
✅ StopCapture() → S_OK
✅ GetCaptureState() → 0 (Stopped)

이벤트 시스템 검증

✅ CreateObject(..., "OnVoice_") 이벤트 연결 성공
✅ StartCapture(PID) → 실제 오디오 캡처 시작
✅ OnVoice_OnAudioData 이벤트 수신 성공
✅ 16kHz mono PCM 데이터 실시간 전송 확인
✅ 데이터 크기: 약 3200 bytes/chunk (100ms @ 16kHz)

캡처 엔진 검증

✅ Discord PID로 선택적 캡처 성공
✅ Chrome PID로 선택적 캡처 성공
✅ 프로세스 격리 확인 (다른 앱 오디오 무시)
✅ 16kHz mono PCM 형식 확인
✅ 실시간 스트리밍 정상 작동

E2E 테스트 검증 (2025-11-20) 🎉

✅ 945개의 오디오 청크 수집 성공
✅ 총 데이터 크기: 323,190 bytes (약 10초 @ 16kHz mono)
✅ WAV 파일 저장 및 재생 검증 완료
✅ 전체 E2E 테스트 통과!

상태 전환 검증

✅ Stopped → Starting → Capturing (정상)
✅ Capturing → Stopping → Stopped (정상)
✅ 중복 StartCapture 방지 (ERROR_BUSY)
✅ 중복 StopCapture 허용 (S_OK)

🔍 테스트 시나리오

시나리오 1: 기본 캡처 테스트

  1. Discord 실행
  2. TestPidCapture.vbs 실행
  3. Discord PID 입력
  4. Discord에서 음성/음악 재생
  5. 10초 대기
  6. 캡처 중지

예상 결과: ✅ 이벤트 수신 확인


시나리오 2: 이벤트 수신 테스트

  1. Chrome 실행
  2. TestOnVoiceEvents.vbs 실행
  3. Chrome PID 입력
  4. YouTube에서 동영상 재생
  5. 5초 대기

예상 결과: ✅ OnAudioData 이벤트 실시간 수신


시나리오 3: 상태 관리 테스트

  1. COM 객체 생성
  2. GetCaptureState() → 0 확인
  3. StartCapture(PID) 호출
  4. GetCaptureState() → 2 확인
  5. StopCapture() 호출
  6. GetCaptureState() → 0 확인

예상 결과: ✅ 모든 상태 전환 정상


시나리오 4: WAV 파일 저장 E2E 테스트 🎉 신규!

  1. Chrome 실행
  2. TestCaptureToWav.vbs 실행
  3. Chrome PID 입력
  4. YouTube에서 동영상 재생
  5. 10초 대기 (오디오 수집)
  6. WAV 파일 저장 확인
  7. Windows Media Player로 재생 검증

실제 결과 (2025-11-20): ✅ 성공!

  • 945개 청크 수집
  • 323,190 bytes 데이터
  • WAV 파일 저장 완료

🐛 알려진 이슈

1. COM 등록 필요

문제: CreateObject 실패

해결:

# 관리자 권한으로 실행
cd x64\Debug
regsvr32 OnVoiceAudioBridge.dll

2. 프로젝트 속성 설정

문제: regsvr32 권한 에러

해결: 프로젝트 속성 → 링커 → 일반 → 사용자 단위 리디렉션 → "예(/user)"


📊 성능 지표

데이터 전송량

  • 샘플 레이트: 16kHz
  • 비트 깊이: 16-bit
  • 채널: Mono
  • 청크 크기: 약 3200 bytes (100ms)
  • 전송 빈도: 약 10회/초

실제 테스트 결과 (2025-11-20):

  • 10초 캡처: 945개 청크
  • 총 데이터: 323,190 bytes
  • 평균 청크 크기: 약 342 bytes
  • 실제 전송 빈도: 약 94.5회/초

지연 시간

  • 캡처 지연: < 100ms (WASAPI 버퍼)
  • 이벤트 전송: < 10ms (GIT 프록시)
  • 총 지연: < 110ms

🔗 관련 문서


다음: 기능별 구현 현황 →