티스토리 뷰
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 |