샌드박스 테스트
SandBox Test
개요
소프트웨어를 개발을 하며, 운영 환경에서 테스트해야될 수 있습니다.
운영 환경에서 테스트를 하게 되면 사용자에게 치명적인 경험을 제공하기 때문에 소프트웨어를 개발하며 운영 환경과 테스트 환경을 명확히 구분해야할 필요가 있습니다.
사용자들에게 이미 제공된 소프트웨어와 동일한 환경에서 제품에 영향을 미치지 않고 온전히 테스트할 수 있는 방법이 어떤게 있을까요?
많은 테스트 방법중에 이번에 소개할 것은 샌드박스 테스트(SandBox Test)입니다.
샌드박스 테스트
샌드박스(SandBox)는 보호가 필요한 어린아이들을 위해 모래통에서만 놀도록 하는데에서 유래한 소프트웨어 개발기법입니다.
운영 환경이 개발 환경으로부터 테스트되지 않은 코드 변경사항 및 전면적인 실험을 분리시키는 테스트 환경으로 웹 개발, 버전 관리를 포함한 소프트웨어 개발 환경에서 사용됩니다.
테스트를 위해 외부로의 연결점을 차단하거나 외부로부터의 접근 및 영향을 필터링 또는 차단할 수 있는 통제된 환경 내에서 프로그램을 동작시키는 것을 가리킵니다.
또한, 샌드박스는 호스트 장치, 네트워크 또는 기타 연결된 장치에 해를 끼치지 않도록 보안 위협에 추가 보호 계층을 제공하여 악성 코드로 부터 안전하게 실행하는 곳에도 사용됩니다.
웹 브라우저
신뢰할 수 있는 웹 브라우저는 샌드박스내에서 실행할 수 있습니다. 도중에 웹 사이트가 브라우저의 취약점을 악용하면 피해가 샌드박스로 인해 제한되고 최소화 될 수 있습니다.
소프트웨어 보호
사용자가 샌드박스에서 신뢰하지 않는 소프트웨어를 실행하여 소프트웨어가 개인 데이터에 액세스하거나 장치에 손상을 줄 수 없도록 하는 도구 역할을 하기도 합니다.
샌드박스는 완전한 소프트웨어 시스템으로 보이기 때문에 일반적으로 감지할 수 없습니다.
보안
보안 전문가는 샌드박스를 사용해 연구 개발 또는 악성 코드를 탐지합니다.
샌드박스 기법을 이용해 웹 사이트에서 어떤 파일이 변경되는지 모니터링하거나 소프트웨어를 설치 및 실행할 수 있습니다.
가상화
VM 또한 샌드박스의 종류 중 하나입니다.
가상화는 오류 수정과 리버스 엔지니어링(프로그램 내부를 깊게 분석하고 조작)에 사용됩니다.
반대로 가상화 기술을 응용해 디버깅과 리버싱을 차단할 수 있습니다.
마무리
샌드박스 테스트 기법은 상당히 보편화 되어 있지만, 특정 분야에 종사하지 않는 이상 잘 모르는 사람이 많고, 단순히 보안 프로그램으로만 운영되는 하나의 기술로만 치부하거나 잦은 샌드박스 기능 활성화로 귀찮은 기능으로 취급하기도 합니다.
소프트웨어 제품을 개발하면서 사용자와 같은 환경을 재현하며 테스트하는 방법인 샌드박스 테스트를 알아봤습니다.