블랙박스 검사
1. 개요
블랙박스 검사는 소프트웨어의 내부 구조나 코드에 대한 지식 없이, 소프트웨어의 기능이 요구 사항을 충족하는지 테스트하는 방법이다. 테스트 케이스를 통해 주어진 입력에 대한 예상 출력을 확인하며, 애플리케이션의 기능, 즉 '무엇'을 하는지에 집중한다. 다양한 테스트 설계 기법과 테스트 커버리지를 통해 소프트웨어의 품질을 평가하며, 프로그래밍 지식이 없어도 테스트를 수행할 수 있다는 장점이 있다. 또한, 모의 침투 테스트에서 화이트 해커가 시스템에 대한 사전 지식 없이 수행하는 검사를 의미하기도 한다.
-
하드웨어 테스트 -
JTAG
JTAG는 집적 회로의 테스트와 디버깅을 위해 개발된 IEEE 1149.1 표준 인터페이스로, 칩 내부 조사, 제어, 임베디드 시스템 디버깅, 펌웨어 프로그래밍 등에 활용된다. -
하드웨어 테스트 -
환경 스트레스 스크리닝
환경 스트레스 스크리닝(ESS)은 제품의 작동 수명 동안 겪을 물리적 환경 조건을 인위적으로 조성하여 제품 신뢰성을 사전에 검증하고 초기 불량률을 감소시켜 품질을 향상시키는 시험 과정이다. -
소프트웨어 테스트 -
보안 취약점
보안 취약점은 시스템의 설계, 구현, 운영, 관리상 결함이나 약점으로, 위협에 의해 악용되어 시스템 보안 정책을 위반할 수 있는 요소이며, ISO 27005, IETF RFC 4949, NIST SP 800-30, ENISA 등 다양한 기관에서 정의하고 있다. -
소프트웨어 테스트 -
A/B 테스트
A/B 테스트는 두 가지 이상의 대안을 비교하여 더 나은 성과를 판단하는 방법으로, 웹사이트, 애플리케이션 등 다양한 분야에서 사용자 인터페이스 등을 테스트하며 통계적 가설 검정을 기반으로 한다.
2. 테스트 절차
명세 기반 테스트는 적용 가능한 요구 사항에 따라 소프트웨어의 기능을 테스트하는 것을 목표로 한다. 이러한 수준의 테스트는 일반적으로 철저한 테스트 케이스가 테스터에게 제공되어야 하며, 테스터는 주어진 입력에 대해 출력 값(또는 동작)이 테스트 케이스에 지정된 예상 값과 "같거나 같지 않음"을 간단히 확인할 수 있다.
애플리케이션 코드, 내부 구조 및 일반적인 프로그래밍 지식은 필요하지 않다. 테스터는 소프트웨어가 "무엇"을 해야 하는지 알고 있지만, "어떻게" 하는지는 모른다. 예를 들어 테스터는 특정 입력이 특정 불변 출력을 반환한다는 것을 알고 있지만, 소프트웨어가 처음에 "어떻게" 출력을 생성하는지는 알지 못한다.
테스터는 애플리케이션의 코드, 내부 구조 및 프로그래밍에 대한 일반적인 지식이 필요하지 않다. 테스터는 소프트웨어가 무엇을 해야 하는지는 알지만, 그것이 어떻게 수행되는지는 모른다. 예를 들어, 테스터는 특정 입력이 특정 불변의 출력을 반환한다는 것을 인식하지만, 소프트웨어가 처음에 출력을 생성하는 방법은 인식하지 못한다.
2.1. 테스트 케이스
테스트 케이스는 애플리케이션이 수행해야 하는 기능인 요구사항 및 사양을 기반으로 구축된다. 테스트 케이스는 일반적으로 사양, 요구 사항 및 설계 매개변수를 포함하여 소프트웨어에 대한 외부 설명에서 파생된다. 사용되는 테스트는 본질적으로 주로 "기능적"이지만, "비기능적" 테스트도 사용할 수 있다. 테스트 설계자는 유효 및 무효 입력을 모두 선택하고, 종종 테스트 오라클 또는 양호한 것으로 알려진 이전 결과의 도움을 받아 테스트 대상의 내부 구조에 대한 지식 없이 올바른 출력을 결정한다.
2.2. 테스트 설계 기법
의사 결정 표 테스트, 전 쌍 테스트, 동등 분할, 경계값 분석, 원인-결과 그래프, 오류 추측, 상태 전이 테스트, 유스 케이스 테스트, 사용자 스토리 테스트, 도메인 분석 및 구문 테스트는 전형적인 블랙박스 테스트 설계 기법이다. 조합 기법도 블랙박스 테스트 설계 기법에 포함된다.
3. 테스트 커버리지
테스트 커버리지는 시스템 또는 애플리케이션의 소프트웨어 요구 사항 중 블랙 박스 테스트를 통해 테스트되는 비율을 의미한다. 이는 프로그램의 내부 작동 방식을 조사하고 테스트 슈트가 실행될 때 컴퓨터 프로그램의 소스 코드가 실행되는 정도를 측정하는 코드 커버리지와 대조된다. 테스트 커버리지를 측정하면 결함을 신속하게 감지하고 제거하고, 보다 포괄적인 테스트 슈트를 만들고, 주어진 요구 사항과 관련이 없는 테스트를 제거할 수 있다.
4. 효과
블랙박스 검사는 정확한 기능을 보장하는 데 필요할 수 있지만, 복잡하거나 위험한 상황을 방지하기에는 불충분하다. 블랙박스 기법의 장점은 프로그래밍 지식이 필요하지 않다는 것이다. 프로그래머가 어떤 편향을 가지고 있든, 테스터는 다른 관점을 가질 수 있으며 기능의 다른 영역을 강조할 수 있다. 반면, 블랙박스 테스트는 "손전등 없이 어두운 미로를 걷는 것과 같다"고 한다. 소스 코드를 검사하지 않기 때문에, 테스터가 단 하나의 테스트 케이스로 검사할 수 있는 것을 확인하기 위해 많은 테스트 케이스를 작성하거나 프로그램의 일부를 테스트하지 않고 남겨두는 상황이 발생한다.