Qt Test 보안 고려 사항
Qt Test 프레임워크는 테스트 실행을 관리하고 결과에 대한 보고서를 생성합니다. 이를 사용할 때는 ‘Qt 개발자 도구를 안전하게 사용하는 방법 ’과 관련된 여러 가지 고려 사항을 염두에 두어야 합니다. Qt 전반에 대한 ‘Qt 공유 보안 모델’에서 설명한 바와 같이, Qt Test 를 사용하는 사용자는 Qt Test 의 사용 방법과 이를 통해 생성되는 데이터에 주의를 기울여야 합니다.
잘 구성된 테스트 스위트는 테스트 대상 코드에 부하를 가하는 경우가 있어, 크래시나 정의되지 않은 동작이 발생하는 등 실패할 위험이 있습니다. 테스트 대상 코드가 발전함에 따라, 때때로 이러한 실패를 통해 오류가 최종 사용자에게 도달하기 전에 발견될 수 있습니다. 이러한 실패는 소스 코드나 빌드 아티팩트와 같이 테스트 프로세스가 접근할 수 있는 다른 리소스를 손상시키는 등 예상치 못한 부작용을 초래할 수 있습니다.
테스트 실패 시, 실패의 성격을 설명하는 추가 정보가 동반될 수 있습니다. 테스트가 통과하더라도, 경고나 디버그 메시지가 트리거되거나 명령줄 옵션에 대한 응답으로 인해 테스트 자체나 테스트 대상 코드에서 출력이 생성될 수 있습니다. 이 데이터의 형식 때문에 경우에 따라 보고가 어려울 수 있으며, Qt Test 를 통해 직접 보고되거나 Qt Test 에서 생성된 출력을 활용하는 다른 프로세스를 통해 보고될 때 보고서 서식이 깨질 수 있습니다.
Qt Test 사용자는 다음 사항을 유의하시기 바랍니다:
- 테스트 출력물에는 민감한 데이터가 포함될 수 있으므로, 해당 출력물을 읽을 수 있는 위치에 있는 사람이라면 누구나 이 데이터에 접근할 수 있습니다.
- 특히 테스트 코드나 테스트 대상 코드가 충분히 신뢰할 수 없는 경우, 테스트는 가능한 한 권한이 없는 프로세스에서 실행되어야 하며, 테스트 후에는 테스트 결과 보고서만 남기고 나머지는 모두 삭제되는 샌드박스(예: 가상 머신)에서 수행되어야 합니다.
- 테스트 시스템에 존재하는 아티팩트가 테스트 실행 전과 동일한 상태로 유지될 것이라고 신뢰해서는 안 됩니다.
- Qt Test 는 테스트 출력에 포함된 데이터를 이스케이프 처리하거나 적절히 변환하여 요청된 형식을 준수하도록 최선을 다하고 있지만, 해당 출력을 사용하는 도구가 테스트에서 생성될 수 있는 모든 유형의 출력에 대해 견고하게 대응할 수 있는지 반드시 확인하십시오.
빌드 시간 아티팩트
테스트 코드가 컴파일되기 전에도, 테스트의 빌드 시간 구성에 따라 빌드 환경이 조정될 수 있습니다. 예를 들어, 테스트와 관련된 소프트웨어에 대한 요구 사항을 빌드 구성에 추가하는 경우입니다.
따라서 이러한 조정이 빌드 자체에 어떤 영향을 미칠 수 있는지 이해하는 것이 중요합니다. 여기에는 빌드 시 도구가 통합할 소스 코드나 링크할 라이브러리를 찾는 위치의 변경이 포함될 수 있습니다. 가능한 경우, 테스트에 필요한 조정은 최종 사용자가 사용하는 결과물의 빌드에는 적용하지 말고, 해당 조정이 필요한 각 테스트의 빌드에만 적용해야 합니다.
이는 빌드 시점의 구성 변경이 신뢰할 수 없는 출처에서 비롯된 경우 특히 중요합니다. 이러한 변경 사항은 소프트웨어 패키지의 보안 침해와 관련이 있는 것으로 밝혀졌습니다.
일반적인 고려 사항
자동화된 테스트는 만능 해결책이 아닙니다. 기존 테스트는 우발적인 오류나 악의적인 변경 사항을 포착하지 못할 수 있으며, 테스트를 실행한다는 사실 자체가 그러한 변경으로 인해 피해가 발생할 기회를 제공할 수도 있습니다. 테스트 대상 코드의 변경과 함께 추가된 새로운 테스트는 해당 변경 사항 내의 중대한 문제나, 변경의 결과로 드러나는 기존 코드의 문제를 포착하지 못할 수 있습니다.
Qt Test 모범 사례를 따르는 것은 테스트 동작을 더 예측 가능하게 만들고, 보안 위험을 포함한 다양한 위험을 피하는 데 도움이 될 수 있습니다. 해당 문서에서 언급된 바와 같이, ‘외부 의존성 피하기’ 항목에 설명된 대로 외부 의존성은 문제를 야기할 수 있습니다.
'Qt 개발자 도구를 안전하게 사용하기( Using Qt's Developer Tools Securely)'와 관련하여, 테스트 환경, 테스트 코드 및 피테스트 코드의 무결성은 사용자의 책임입니다. '테스트 실행( Qt Test )'은 악의적인 테스트 코드나 피테스트 코드를 처리하도록 설계된 것이 아니라, 테스트가 실패할 때 유용한 보고서를 제공할 수 있는 테스트 작성을 위한 편리한 프레임워크를 제공하기 위한 것입니다.
테스트 빌드와 생산용 빌드 분리
일반적으로 배포용 소프트웨어 아티팩트는 테스트 아티팩트와 별도로 빌드하고, 테스트 아티팩트 빌드 과정이나 테스트 실행의 영향이 배포용 아티팩트에 간섭하지 않는 위치에 저장하는 것이 현명합니다.
이들을 분리해 두면 테스트 빌드, 테스트 자체 또는 피테스트 코드의 오작동으로 인해 발생할 수 있는 잠재적 문제를 방지할 수 있습니다. 이 모든 과정은 디스크상의 파일을 수정할 가능성이 있습니다. 특히 이러한 단계 중 어느 하나라도 보안이 침해되었을 가능성이 있는 원격 서버와의 네트워크 연결을 사용하는 경우, 이는 큰 문제가 될 수 있습니다.
테스트 아티팩트는 일반적으로 운영 환경에서 필요하지 않습니다. 운영 환경에서 테스트를 수행해야 하는 경우, 시스템에서 테스트를 실행하여 모든 것이 정상적으로 작동함을 확인한 후 테스트를 쉽게 제거할 수 있도록, 테스트를 대상 코드와 별도로 패키징하는 것이 현명합니다. 또한 이를 통해 모든 시스템이 의도한 대로 작동할 것이라는 확신을 얻을 수 있을 만큼 충분한 수의 복제본을 테스트한 후, 프로덕션 시스템의 복제본에는 주요 결과물만 설치할 수 있게 됩니다.
출력 파일 이름 확인
파일에 데이터를 기록하는 다른 소프트웨어와 마찬가지로, Qt Test 프로그램에는 출력이 저장될 위치와 형식을 제어하는 옵션이 있습니다.
빌드 시스템이나 테스트를 실행하는 품질 관리 시스템 등에 의해 이러한 옵션에 전달되는 출력 파일 이름이 자동으로 생성되는 경우, 생성된 이름이 의도한 대로인지 확인하기 위해 주의를 기울여야 합니다. 이러한 이름을 자동으로 생성하는 시스템은 생성된 이름이 기대에 부합하는지 확인하고, 다른 시스템에서 오해의 소지가 있거나 다른 소스의 데이터를 덮어쓰거나 대체할 수 있는 위치, 또는 해당 데이터에 의해 덮어쓰기되거나 대체될 가능성이 있는 위치에 출력을 저장하지 않도록 해야 합니다.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.