1. 테스트 분류
(1) 테스트 레벨(Test Levels)
소프트웨어 개발 생명주기(SDLC) 단계와 대응되며, 각 단계별로 다른 목적과 범위를 가짐.
- 컴포넌트 / 단위 테스트 (Component / Unit Test)
- 가장 작은 단위(클래스, 함수, 모듈)를 검증
- 코드 레벨에서 동작 확인
- 주체: 주로 개발자
- 목적: 모듈이 설계대로 동작하는지, 내부 로직이 올바른지 확인
- 예시: 로그인 함수에서 올바른 아이디·비밀번호 입력 시 True 반환 확인
- 통합 테스트 (Integration Test)
- 여러 단위를 결합했을 때 상호작용(인터페이스)이 올바른지 확인
- 주체: 개발자 + 테스터
- 목적: 모듈 간 데이터 교환, API 연동, 인터페이스 에러 검출
- 예시: 회원가입 모듈과 DB 모듈을 통합 → 회원정보가 DB에 정상 저장되는지 확인
- 시스템 테스트 (System Test)
- 완성된 전체 시스템을 테스트
- 주체: 독립된 테스트 팀(QA)
- 목적: 요구사항 명세서에 맞게 시스템 전체가 동작하는지 확인
- 예시: “회원가입 → 로그인 → 결제 → 배송 조회” 시나리오 전체 실행
- 인수 테스트 (Acceptance Test)
- 완성된 시스템이 고객/사용자의 요구사항을 충족하는지 검증
- 주체: 고객, 사용자, 운영팀
- 목적: 실제 사용 환경에서 시스템이 계약된 조건과 비즈니스 요구를 만족하는지 확인
단위 테스트 (Unit Test / Component Test) | 모듈, 함수 등 가장 작은 단위의 코드 테스트 | 개발자 | 내부 로직과 설계가 올바른지 확인 |
통합 테스트 (Integration Test) | 모듈 간의 연결, 인터페이스 동작 검증 | 개발자 + 테스터 | 모듈 간 상호작용, 데이터 교환 검증 |
시스템 테스트 (System Test) | 완성된 전체 시스템 테스트 | 독립된 QA팀 | 요구사항 명세서대로 전체 시스템이 정상 동작하는지 확인 |
인수 테스트 (Acceptance Test) | 고객/사용자 입장에서 검증 | 고객, 사용자, 운영팀 | 계약 조건과 실제 요구사항 충족 여부 확인 (시스템을 받아들일 수 있는지 판단) |
(2) 테스트 유형(Test Types)
- 기능 테스트 (Functional Test)
- 무엇을 하는가?에 초점 (요구된 기능 확인)
- 블랙박스 테스트 중심
- 예시: 로그인 성공/실패 케이스 확인, 결제 승인 여부 확인
- 비기능 테스트 (Non-functional Test)
- 품질 특성을 확인 (ISO 25010 기준)
- 예시: 1,000명 동시접속 시 응답 속도 확인, 보안성 테스트
(3) ISO/IEC 25010 소프트웨어 품질 모델
소프트웨어 품질을 평가하기 위한 국제 표준 모델.
8대 주특성과 세부 부특성으로 구성됨.
주특성 부특성 설명
기능 적합성 | 완전성, 정확성, 타당성 | 요구된 기능을 빠짐없이, 올바르게, 실제 목적에 맞게 제공 |
사용성 | 타당성 식별력, 학습성, 운영 용이성, 사용자 오류 보호, 사용자 인터페이스 미학, 접근성 | 사용자가 배우기 쉽고, 편리하며, 직관적이어야 함 |
성능 효율성 | 시간 행동, 자원 활용성, 수용성 | 빠른 응답속도, 최소 자원 소모 |
호환성 | 공존성, 상호운영성 | 다른 시스템·환경과 잘 연동, 동일 자원에서 공존 가능 |
신뢰성 | 성숙성, 가용성, 장애 허용성, 회복 가능성 | 오류 발생률 낮고, 장애 시 복구 가능 |
보안성 | 기밀성, 무결성, 부인방지, 책임성, 진본성 | 데이터 보호 및 접근 제어, 사용자 인증 |
유지보수성 | 모듈성, 재사용성, 분석성, 변경 용이성, 테스트 용이성 | 코드 구조가 이해하기 쉽고, 변경·수정이 쉬움 |
이식성 | 적응성, 설치 용이성, 대치 용이성 | 다른 플랫폼이나 OS에서도 쉽게 실행 가능 |
2. 테스트 설계 기법에 따른 분류
(1) 정적 테스트 (Static Testing)
- 소프트웨어를 실행하지 않고 결함을 검출
- 주로 문서나 코드 리뷰 단계에서 수행
리뷰 유형
- 관리 리뷰 (Management Review): 프로젝트 상태, 일정, 리스크 점검
- 기술 리뷰 (Technical Review): 기술적 타당성 점검 (설계 문서, 코드)
- 인스펙션 (Inspection): 공식적, 체크리스트 기반, 결함 검출 목적
- 워크쓰루 (Walkthrough): 작성자가 동료에게 설명하며 피드백 받음
- 감사 (Audit): 외부 규정·표준 준수 여부 확인
정적 분석 유형
- 코딩 표준 준수 여부 확인
- 복잡도 측정 (예: 순환 복잡도 → 코드 난이도 지표)
- 자료 흐름 분석: 변수 정의–사용–소멸 과정 확인
(2) 동적 테스트 (Dynamic Testing)
- 실행을 통해 결함 검출
명세 기반 테스트 (Specification-based, 블랙박스)
- 입력/출력 요구사항을 기준으로 테스트 케이스 설계
- 예시 기법: 동등분할, 경계값 분석, 결정 테이블, 상태 전이, 유스케이스
구조 기반 테스트 (Structure-based, 화이트박스)
- 코드 제어 흐름/자료 흐름 기반
- 예시 기법: 문장 커버리지, 분기 커버리지, 조건 커버리지, 경로 커버리지
경험 기반 테스트 (Experience-based)
- 테스터의 경험, 직관, 유사 프로젝트 사례 활용
- 예시 기법:
- 오류 추정(Error Guessing): “이런 곳에서 오류가 날 확률이 크다” 예측
- 탐색적 테스트(Exploratory Testing): 계획과 실행을 동시에 수행
3. 테스팅 방법
- 리그레션 테스트 (Regression Test)
- 코드 수정 후, 기존 기능이 영향을 받지 않았는지 확인
- 자동화 테스트 도구와 함께 사용되는 경우 많음
- 소프트웨어 생명주기 모델과 테스트
- V-모델: 개발 단계마다 대응되는 테스트 존재
- 요구사항 ↔ 인수 테스트
- 시스템 설계 ↔ 시스템 테스트
- 아키텍처 설계 ↔ 통합 테스트
- 모듈 설계 ↔ 단위 테스트
- 애자일 모델: 테스트를 매 반복주기마다 짧게 수행, 자동화 중심
- V-모델: 개발 단계마다 대응되는 테스트 존재
- 위험 기반 테스트 (Risk-Based Testing)
- 결함 발생 가능성과 영향도를 기준으로 우선순위 테스트
- 고위험 영역(보안, 결제, 핵심 기능) → 먼저 테스트
- 모델 기반 테스트 (Model-Based Testing)
- 요구사항/업무 흐름을 모델(다이어그램, 상태 전이도 등)로 만들고 → 자동으로 테스트 케이스 생성
요약
- 테스트 레벨: 단위 → 통합 → 시스템
- 테스트 유형: 기능 vs 비기능
- ISO 25010: 8대 특성 + 부특성 암기
- 정적 테스트: 실행 X (리뷰·정적분석)
- 동적 테스트: 실행 O (명세 기반, 구조 기반, 경험 기반)
- 리그레션: 수정 후 영향도 확인
- 위험 기반: 위험도 높은 부분부터
- 모델 기반: 모델 이용 → 자동 케이스 생성
'QA > csts' 카테고리의 다른 글
[CSTS][Part01] 1장 테스트 개요 (0) | 2025.09.14 |
---|