본문 바로가기
SW QA

1. 소프트웨어 테스팅 기초

by spare8433 2026. 3. 7.

1. 테스트의 필요성

1.1 소프트웨어 결함

Error(오류) → Defect/Bug(결함) → Failure(실패)
구분 의미
Error 사람이 만든 실수
Defect / Bug 코드 또는 산출물에 존재하는 결함
Failure 실행 시 기대 결과와 다른 동작 발생

 

결함 발생 원인

  • 인간의 실수
  • 요구사항 또는 설계 문제
  • 개발 과정의 오류
  • 환경적 요인
    • 방사선
    • 자기장
    • 전자기장
    • 물리적 오염
    • 하드웨어 상태 변화

 


1.2 개발 단계별 테스팅의 역할

테스팅은 소프트웨어 결함을 발견하고 품질과 리스크를 관리하는 활동이며 소프트웨어 개발 생명주기 전반에서 수행된다.

 

초기 단계 (요구사항 · 설계)

문서 리뷰와 정적 분석을 통해 요구사항, 설계 단계의 결함을 조기에 발견

 

개발 단계 (구현)

구현된 기능을 실행하여 컴포넌트 · 통합 · 시스템 수준의 동작 검증

  • 개발 조직 : 컴포넌트 테스트 / 통합 테스트
  • 테스트 조직 : 시스템 테스트 / 인수 테스트

 

유지보수 단계

시스템 및 환경 변경에 대응하기 위해 운영 테스팅으로 결함과 장애를 예방하여 기존 기능 영향 여부와 안정성 확인

 


2. 테스팅 이해

테스팅 = 정적 테스트 + 동적 테스트

결함을 발견하고 품질 정보를 제공하는 활동의 집합

 


2.1 테스팅 목적

  • 결함 발견 및 예방
  • 요구사항 및 명세 충족 여부 확인
  • 제품 품질 수준 평가
  • 품질 관련 정보 제공
  • 프로젝트 리스크 정보 제공
  • 개발 프로세스 점검 및 개선
  • 검증 · 리뷰 · 평가 · 보고

 

※ 상세 활동은 테스트 프로세스의 기초에서 설명

 


2.2 테스팅의 정도

테스트 범위 = 리스크 + 제약 요소

 

제약 요소

  • 일정
  • 비용
  • 기술적 제약
  • 비즈니스 요구
  • 인력
  • 테스트 환경

 


3. 테스팅의 원리 및 가이드

1️⃣ 테스팅은 결함 존재를 밝히는 활동

  • 결함이 없음을 증명할 수는 없음

2️⃣ 완벽한 테스팅은 불가능

  • 입력 값의 무한한 조합
  • 실행 경로의 무한한 가능성

3️⃣ 테스팅은 개발 초기부터 시작

  • 요구사항 단계부터 테스트 계획 가능

4️⃣ 결함 집중 (Defect Clustering)

  • 대부분의 결함은 소수의 모듈에 집중

5️⃣ 살충제 패러독스 (Pesticide Paradox)

  • 동일 테스트 반복 → 결함 발견 감소
  • 테스트 케이스 주기적 개선 필요

6️⃣ 테스팅은 정황 의존적

시스템 특성에 따라 테스트 방법이 달라진다.

  • 금융 시스템
  • 게임
  • 의료 시스템

7️⃣ 오류 부재의 궤변 (Absence of Errors Fallacy)

결함이 없더라도

  • 사용자 요구
  • 사용성
  • 비즈니스 목적

을 만족하지 못하면 품질이 낮은 시스템

 


4. 테스트 프로세스의 기초

테스트 활동은 순차적이지만 실제 프로젝트에서는 병행·반복 수행 가능

 

1. 계획과 제어 (Test Planning & Control)

테스트 목표 설정 및 관리 활동

주요 활동

  • 테스트 목표 정의
  • 리스크 분석
  • 테스트 전략 수립
  • 일정 관리
  • 완료 기준(Exit Criteria) 설정
  • 테스트 진행 상황 모니터링
  • 테스트 제어 및 조정

 


2. 분석과 설계 (Test Analysis & Design)

테스트 기준을 기반으로 테스트 케이스를 도출하는 단계

주요 활동

  • 테스트 베이시스 검토
  • 테스트 조건 도출
  • 테스트 우선순위 설정
  • 테스트 케이스 설계
  • 테스트 기법 적용
  • 테스트 환경 정의

 


3. 구현과 실행 (Test Implementation & Execution)

테스트 준비 및 실제 수행 단계

주요 활동

  • 테스트 케이스 구체화
  • 테스트 프로시저 작성
  • 테스트 스크립트 작성
  • 테스트 환경 구축
  • 테스트 실행
  • 테스트 결과 기록
  • 결함 / 이슈 보고
  • 결함 심각도 및 우선순위 분류

 


4. 완료 조건 평가와 리포팅 (Evaluation & Reporting)

테스트 목표 대비 결과 평가

주요 활동

  • 완료 기준 충족 여부 확인
  • 테스트 결과 분석
  • 테스트 진행률 평가
  • 이해관계자 보고
  • 테스트 요약 보고서 작성

 


5. 테스트 마감 활동 (Test Closure)

테스트 종료 후 결과 정리 및 개선 활동

주요 활동

  • 테스트 산출물 정리
  • 테스트 데이터 보관
  • 테스트웨어(Testware) 축적
  • 결함 분석
  • 테스트 프로세스 평가 및 개선
  • 인수 관련 문서화

 


5. 테스팅의 심리학

5.1 테스트 독립성

개발자와 독립된 테스트 수행 시

  • 객관성 증가
  • 결함 발견 가능성 증가
  • 품질 평가 신뢰도 향상

 


5.2 커뮤니케이션

테스트 과정에서는 효과적인 의사소통이 중요

  • 결함은 비난이 아닌 개선 관점으로 전달
  • 개발자와 협력적 문제 해결
  • 명확하고 객관적인 보고


---

5.3 팀 협력

  • 감정적 충돌 최소화
  • 상호 이해 기반 협업
  • 품질 중심 문화 형성

'SW QA' 카테고리의 다른 글

3. 테스트 설계 기법  (0) 2026.03.10
2. 소프트웨어 수명주기와 테스팅  (0) 2026.03.08
SW QA 이해  (1) 2026.02.27