QA

[ISTQB 실러버스] 1장: 테스팅의 기초

연듀 2026. 3. 9. 20:05

실러버스 1장 핵심 요약 GOGO ~

 

 

테스팅이란 무엇인가?

  • 소프트웨어 테스팅은 결함을 발견하고 소프트웨어의 품질을 평가하여 장애 위험을 줄이기 위한 활동이다.
  • 테스트 대상이 되는 소프트웨어 산출물을 테스트 대상(Test Object) 이라고 한다.

테스팅에 대한 핵심 개념

  • 테스팅은 단순히 프로그램을 실행하는 것만 의미하지 않는다.
  • 요구사항을 충족하는지 확인(Verification)
    사용자의 실제 필요를 만족하는지 확인(Validation) 을 모두 포함한다.
  • 테스팅은 두 가지 방식으로 수행된다.
    • 동적 테스팅: 소프트웨어를 실행하여 테스트
    • 정적 테스팅: 실행하지 않고 리뷰나 정적 분석으로 검토
  • 또한 테스트 계획, 관리, 모니터링 등 관리 활동도 포함된다.

 

소프트웨어 테스팅은 결함을 발견하고 품질을 평가하기 위해 수행하는 활동으로, 실행 테스트뿐 아니라 검증·검토·관리 활동까지 포함한다.

 

 

1.1.1 테스트 목적 (Test Objectives)

 

  • 요구사항, 설계, 코드 등 작업 산출물 평가
  • 결함 식별 및 장애 유발
  • 요구된 테스트 커버리지 확보
  • 품질 부족으로 인한 리스크 감소
  • 요구사항 충족 여부 확인 (Verification)
  • 계약, 법률, 규제 요구사항 준수 여부 확인
  • 이해관계자의 의사결정을 위한 정보 제공
  • 제품 품질에 대한 신뢰 확보
  • 사용자 기대 충족 여부 확인 (Validation)

 

테스트 목적은 테스트 대상, 테스트 레벨, 리스크, 개발 방식, 비즈니스 환경 등에 따라 달라질 수 있다.

 

1.1.2 테스팅과 디버깅

테스팅

  • 결함을 발견하거나 장애를 유발하는 활동
  • 동적 테스팅: 실행하여 장애 발생 확인
  • 정적 테스팅: 실행 없이 결함 발견

디버깅

장애가 발생했을 때 원인을 찾아 수정하는 과정

일반적인 디버깅 과정

  1. 장애 재현
  2. 원인 분석 (결함 찾기)
  3. 결함 수정

수정 후 수행하는 테스트

  • 확인 테스팅 (Confirmation Testing)
    → 결함이 제대로 수정되었는지 확인
  • 리그레션 테스팅 (Regression Testing)
    → 수정으로 인해 다른 기능에 문제가 생기지 않았는지 확인

 

테스팅은 결함을 발견하는 활동이고, 디버깅은 발견된 결함의 원인을 분석하고 수정하는 활동이다.

 


 

1.2 테스팅이 왜 필요한가?

테스팅은 정해진 범위, 시간, 비용 안에서 테스트 목표를 달성하고 소프트웨어 품질을 관리하는 데 도움을 준다.

또한 모든 이해관계자가 참여하여 결함을 발견하고 프로젝트 성공에 기여할 수 있다.

1.2.1 테스팅이 성공에 기여하는 방법

  • 결함을 조기에 발견하여 품질 향상에 기여
  • 소프트웨어 품질 평가 정보 제공
  • 릴리스 여부 등의 의사결정 지원
  • 사용자 요구사항을 간접적으로 검증
  • 계약, 법률, 규제 요구사항 준수 확인

 

테스팅은 결함을 발견하여 품질 개선과 의사결정에 도움을 준다.

 

1.2.2 테스팅과 품질 보증(QA)

테스팅(Testting)

  • 제품 중심 활동
  • 결함 발견 및 품질 확인
  • 품질 제어(Quality Control) 활동

품질 보증(QA)

  • 프로세스 중심 활동
  • 결함 예방 및 프로세스 개선
 

 

1.2.3 오류, 결함, 장애, 근본 원인

  • 오류(Error)
    → 사람이 저지른 실수
  • 결함(Defect / Bug)
    → 오류로 인해 소프트웨어에 생긴 문제
  • 장애(Failure)
    → 결함이 실행되어 시스템이 제대로 동작하지 않는 상태

 

오류 → 결함 → 장애

  • 근본 원인(Root Cause)
    → 문제의 근본적인 원인

근본 원인을 분석하면 유사한 결함과 장애를 예방할 수 있다.

 


 

1.3 테스팅의 원리 (7가지)

1. 테스팅은 결함의 존재만 보여준다

테스팅은 결함이 있음을 발견할 수 있지만, 결함이 없음을 증명할 수는 없다.

2. 완벽한 테스팅은 불가능하다

모든 경우를 테스트하는 것은 불가능하므로
우선순위와 리스크 기반으로 테스트해야 한다.

3. 조기 테스팅

초기에 결함을 발견할수록 시간과 비용을 절약할 수 있다.

4. 결함 집중 (Defect Clustering)

대부분의 결함은 소수의 모듈에 집중되는 경향이 있다.
(파레토 법칙)

5. 테스트 효과 감소 (Pesticide Paradox)

같은 테스트를 반복하면 새로운 결함을 찾는 효과가 감소한다.
→ 새로운 테스트 케이스 필요

6. 테스팅은 정황에 의존한다

테스팅 방법은 프로젝트, 시스템, 환경에 따라 달라진다.

7. 결함 부재의 궤변 (Absence of Errors Fallacy)

결함이 없더라도 사용자 요구를 만족하지 못하면 소프트웨어는 실패한 것이다.

 

 

 


 

1.4 테스트 활동, 테스트웨어, 테스트 역할

1.4.1 테스트 활동과 업무

 

1.테스트 계획 (Test Planning)
→ 테스트 목표와 전략 수립

2.테스트 모니터링 & 제어 (Test Monitoring & Control)
→ 테스트 진행 상황 확인 및 조정

3.테스트 분석 (Test Analysis)
→ 무엇을 테스트할지 결정

4.테스트 설계 (Test Design)
→ 테스트 케이스 설계

5.테스트 구현 (Test Implementation)
→ 테스트 데이터, 스크립트 준비

6.테스트 실행 (Test Execution)
→ 테스트 수행 및 결과 비교

7.테스트 완료 (Test Completion)
→ 테스트 결과 정리 및 보고

 

1.4.2 정황에 따른 테스트 프로세스

테스팅 방법은 다음 요소에 따라 달라진다.

  • 이해관계자
  • 팀 역량
  • 비즈니스 도메인
  • 기술 환경
  • 프로젝트 제약 (시간, 비용)
  • 조직 구조
  • SDLC
  • 테스트 도구

테스팅은 정황에 의존한다

 

1.4.3 테스트웨어 

테스트 활동 과정에서 생성되는 산출물

  • 테스트 계획
  • 테스트 케이스
  • 테스트 스크립트
  • 테스트 데이터
  • 테스트 로그
  • 결함 보고서
  • 테스트 완료 보고서

1.4.4 테스트 베이시스와 테스트웨어 간의 추적성

추적성은 테스트 베이시스의 요소와 테스트웨어, 테스트 결과, 결함 사이의 관계를 연결하고 관리하는 것이다.

테스트 베이시스 예

  • 요구사항
  • 설계 문서

테스트웨어 예

  • 테스트 컨디션
  • 테스트 케이스
  • 테스트 결과
  • 결함 보고서

추적성의 목적

  • 테스트 커버리지 확인
    → 요구사항이 테스트 케이스로 충분히 검증되었는지 확인
  • 리스크 평가
    → 테스트 결과를 통해 잔존 리스크 수준 파악
  • 변경 영향 분석
    → 요구사항 변경 시 영향을 받는 테스트 식별
  • 테스트 진행 상황 및 결과 보고 지원

📌 예시

  • 요구사항 ↔ 테스트 케이스
    → 요구사항이 테스트되었는지 확인
  • 테스트 결과 ↔ 리스크
    → 잔존 리스크 평가

 

1.4.5 테스팅에서의 역할

 

테스팅에는 두 가지 주요 역할이 있다.

테스트 관리 역할

  • 테스트 계획
  • 테스트 모니터링
  • 테스트 제어
  • 테스트 완료 관리

테스터 역할

  • 테스트 분석
  • 테스트 설계
  • 테스트 구현
  • 테스트 실행

 


 

1.5 테스팅의 필수 기술 및 모범 사례

1.5.1 테스팅에 보편적으로 필요한 기술

 

  • 테스팅 지식
  • 분석적·비판적 사고
  • 세부사항에 대한 주의력
  • 의사소통 능력 및 협업 능력
  • 기술 지식
  • 도메인 지식

테스터는 결함 정보를 명확하고 건설적으로 전달하는 의사소통 능력이 중요하다.

 

1.5.2 전체 팀 접근법 (Whole Team Approach)

  • 팀원 모두가 품질에 대한 책임을 가진다.
  • 필요한 경우 누구나 테스트 활동에 참여할 수 있다.
  • 팀원 간 협업과 의사소통을 강화한다.

 

1.5.3 테스팅의 독립성 (Independence of Testing)

테스트는 독립성이 높을수록 새로운 결함을 발견할 가능성이 높다.

 

독립성 수준 예시)

 

1. 개발자가 직접 테스트
2. 같은 팀 동료가 테스트
3. 조직 내 별도 테스트 팀
4. 외부 테스트 조직

 

장점

  • 다른 관점에서 결함 발견 가능

단점

  • 개발팀과 협업 문제 발생 가능

 

반응형