티스토리 뷰

Keywords

인수 기준(acceptance criteria), 인수 테스트 주도 개발(acceptance test-driven development), 블랙박스 테스트 기법(black-box test technique), 경계값 분석(boundary value analysis), 분기 커버리지(branch coverage), 체크리스트 기반 테스팅(checklist-based testing), 협업 기반 테스트 접근법(collaboration-based test approach), 커버리지(coverage), 커버리지 항목(coverage item), 결정 테이블 테스팅(decision table testing), 동등 분할(equivalence partitioning), 오류 추측(error guessing), 경험 기반 테스트 기법(experience-based test technique), 탐색적 테스팅(exploratory testing), 상태 전이 테스팅(state transition testing), 구문 커버리지(statement coverage), 테스트 기법(test technique), 화이트박스 테스트 기법(white-box test technique)


1. 테스트 기법 개요

테스트 기법은 테스트 분석(무엇을 테스트할지)과 테스트 설계(어떻게 테스트할지)를 지원한다. 테스트 기법은 체계적인 방식으로 비교적 작지만 충분한 테스트 케이스 집합을 개발하는 데 도움을 준다. 또한, 테스트 분석 및 설계 과정에서 테스트 조건을 정의하고, 커버리지 항목을 식별하며, 테스트 데이터를 식별하는 데도 도움을 준다.
테스트 기법 및 관련 측정 기준에 대한 추가 정보는 ISO/IEC/IEEE 29119-4 표준 및 다양한 참고 문헌(Beizer 1990, Craig 2002 등)에서 확인할 수 있다.

본 교재에서는 테스트 기법을 블랙박스, 화이트박스, 경험 기반으로 분류한다.

  • 블랙박스 테스트 기법(명세 기반 기법): 테스트 대상의 내부 구조를 참조하지 않고 지정된 동작을 분석한다. 따라서 소프트웨어 구현 방식에 관계없이 테스트 케이스를 설계할 수 있으며, 구현이 변경되더라도 요구된 동작이 동일하다면 기존 테스트 케이스를 계속 사용할 수 있다.
  • 화이트박스 테스트 기법(구조 기반 기법): 테스트 대상의 내부 구조와 처리 과정을 분석한다. 소프트웨어 설계에 따라 테스트 케이스가 의존하므로, 테스트 대상의 설계나 구현 이후에만 테스트 케이스를 작성할 수 있다.
  • 경험 기반 테스트 기법: 테스트 케이스 설계 및 구현에 테스터의 지식과 경험을 효과적으로 활용한다. 이 기법의 효과는 테스터의 기술에 크게 의존하며, 블랙박스 및 화이트박스 테스트 기법으로 놓칠 수 있는 결함을 탐지할 수 있다. 따라서 경험 기반 테스트 기법은 블랙박스 및 화이트박스 테스트 기법을 보완한다.

2. 그 외 소프트웨어 테스트 기법

소프트웨어 테스트는 지속적으로 발전하고 있으며, Foundation Level 실라버스에서는 다루지 않는 다양한 기법이 있다. 그중 주요 기법들을 소개한다.

 

테스트 분석 및 설계

 

2-1. 그레이박스 테스트

그레이박스 테스트는 블랙박스와 화이트박스 테스트의 장점을 결합한 기법이다. 이 방법은 테스트자가 소프트웨어의 내부 구조에 대한 일부 지식을 가지고 있으며, 이를 바탕으로 테스트 케이스를 설계한다.

특징

  • 부분적인 내부 정보: 테스트자는 소스 코드의 일부를 알고 있어 특정 경로를 테스트할 수 있다.
  • 효율성: 블랙박스 테스트보다 더 효율적으로 결함을 발견할 수 있다.
  • 적용 범위: 시스템의 기능과 내부 로직을 동시에 검증할 수 있다.

2-2. 자동화 테스트

자동화 테스트는 반복적인 작업을 자동화하여 효율성을 높이는 기법이다.

특징

  • 시간 절약: 반복적인 테스트를 자동으로 수행하여 시간을 절약한다.
  • 정확성: 사람의 실수를 줄이고 일관된 결과를 제공한다.
  • 지속적 통합: CI/CD 환경에서 필수적으로 사용되며, 코드 변경 시 새로운 결함을 조기에 발견한다.

2-3. 성능 테스트

성능 테스트는 소프트웨어의 성능을 평가하는 기법이다.

유형

  • 부하 테스트: 특정 부하를 처리할 수 있는지 평가한다.
  • 스트레스 테스트: 한계를 초과하는 부하를 가하여 시스템의 반응을 확인한다.
  • 지속성 테스트: 장시간 동안 성능을 모니터링하여 메모리 누수와 성능 저하를 확인한다.

2-4. 보안 테스트

보안 테스트는 소프트웨어의 보안 취약점을 식별하고 평가하는 기법이다.

방법

  • 침투 테스트: 해커의 관점에서 시스템을 공격하여 취약점을 찾는다.
  • 취약점 스캐닝: 자동화 도구로 알려진 취약점을 스캔한다.
  • 코드 리뷰: 소스 코드를 분석하여 보안 취약점을 발견한다.

2-5. 사용자 수용 테스트(UAT)

최종 사용자가 소프트웨어를 실제 환경에서 테스트하여 요구사항이 충족되었는지를 확인하는 기법이다.

특징

  • 실제 사용 환경: 실제 사용자가 소프트웨어를 사용하여 피드백을 제공한다.
  • 요구사항 검증: 소프트웨어가 비즈니스 요구를 충족하는지 확인한다.
  • 최종 승인: UAT가 완료되면 소프트웨어는 배포 준비가 된다.

2-6. 회귀 테스트

회귀 테스트는 소프트웨어 변경 사항이 기존 기능에 미치는 영향을 확인하는 기법이다.

특징

  • 기능 검증: 새로운 기능 추가나 버그 수정 후 기존 기능이 정상적으로 작동하는지 확인한다.
  • 자동화 가능성: 회귀 테스트는 자동화하기 용이하여 지속적 통합 환경에서 자주 사용된다.

2-7. 탐색적 테스트

탐색적 테스트는 사전 정의된 테스트 케이스 없이 테스터의 경험과 직관을 바탕으로 소프트웨어를 테스트하는 기법이다.

장점

  • 유연성: 테스트 중 발견된 문제에 즉시 대응할 수 있다.
  • 창의성: 다양한 시나리오를 창의적으로 탐색할 수 있다.
  • 실시간 피드백: 개발자와의 소통을 원활히 하며 즉각적인 피드백을 제공한다.

2-8. A/B 테스트

A/B 테스트는 두 가지 이상의 소프트웨어 버전을 비교하여 더 나은 성과를 내는 버전을 평가하는 기법이다.

특징

  • 데이터 기반 결정: 사용자 반응을 기반으로 최적의 버전을 선택한다.
  • 사용자 경험 개선: 인터페이스(UI) 및 기능 개선을 위한 유용한 인사이트를 제공한다.

'소프트웨어 테스팅' 카테고리의 다른 글

협업 기반 테스트 접근법  (0) 2025.01.13
경험 기반 테스트 기법  (0) 2025.01.13
화이트박스 테스트 기법  (0) 2025.01.13
블랙박스 테스트 기법  (0) 2025.01.13
피드백과 리뷰 프로세스  (0) 2025.01.13
정적 테스트  (0) 2025.01.12
유지보수 테스트  (0) 2025.01.12
테스트 레벨과 테스트 유형  (0) 2025.01.12