문서
/

테스트와 CI

테스트와 CI

테스트 도구가 고급 방어 기능을 작동시킬 수 있다면 기능 테스트에 별도 구성을 사용하세요. 별도의 테스트 엔드포인트나 대시보드 환경은 없습니다.

테스트에 별도 빌드가 필요한 이유

고급 방어 기능(VM Self Defending, VM Debug Protection, VM Domain Lock, 그리고 이에 대응하는 기본 옵션 selfDefending, debugProtection, domainLock)은 여러분 자신의 에이전트, 자동화 도구, 디버거에도 작동합니다. 실행을 중단하거나, 관련 없는 오류를 던지거나, 잘못된 결과를 만들어 낼 수 있습니다. disableConsoleOutput은 난독화된 스크립트뿐 아니라 페이지의 모든 스크립트에 대해 console 메서드를 전역적으로 빈 함수로 바꾸므로, 로그 기반 검증은 아무것도 보지 못합니다. 기능 테스트는 이 기능들을 끈 별도의 테스트 빌드로 실행하세요.

기능 테스트 구성

테스트 구성은 공통 설정에서 파생하고, 프리셋을 선택한 뒤 다음 재정의를 적용하세요. 이 재정의는 Self Defending, Debug Protection, Domain Lock의 VM 버전과 기본 버전을 모두 끄고, disableConsoleOutput도 끕니다(Low, Medium, High 프리셋은 이 옵션을 켭니다). 값을 명시적으로 전달하세요. 옵션을 생략하면 프리셋이 그 옵션을 켤 수 있습니다.

JavaScript

CI

먼저 원본 코드를 실행한 다음, 난독화된 테스트 빌드를 같은 검사로 실행하세요. 실패를 재현할 수 있도록 입력, 실제 적용된 옵션, 난독화 도구 버전, 빌드 경고를 기록하세요. 대시보드와 직접 API 응답은 경고와 확정된 버전을 보고합니다. javascript-obfuscator 패키지는 진행 메시지에 버전을 보고하지만 경고는 보고하지 않습니다.

기능 검사를 통과하면 원래의 프로덕션 설정으로 별도의 릴리스 산출물을 생성하세요. 바로 그 산출물을 의도한 실행 환경에서, 허용된 도메인에서, 방어 기능이 탐지하도록 설계된 자동화 도구나 디버거 없이 검증하세요. 테스트 빌드가 통과했다고 보호된 릴리스가 검증되는 것은 아닙니다.

대시보드, javascript-obfuscator 패키지(CLI 또는 Node.js), API 빌드는 모두 같은 보호 옵션을 사용합니다. API 테스트에는 평소와 같은 자격 증명과 엔드포인트를 사용하며 일반 사용량 한도가 적용됩니다. CI에서는 테스트 출력과 릴리스 출력을 서로 다른 경로에 두고 릴리스 산출물만 배포하세요.

그래도 실행이 실패하면 VM 런타임 오류 진단하기를 참고하세요.