Professional Documents
Culture Documents
(ISTQB) 2장 소프트웨어 개발 수명주기와 테스팅
(ISTQB) 2장 소프트웨어 개발 수명주기와 테스팅
1. 소프트웨어 개발 수명주기 모델
2. 테스트 레벨
• 컴포넌트 테스팅
• 통합 테스팅
• 시스템 테스팅
• 인수 테스팅
3. 테스팅 유형
• 기능 테스팅
• 비기능 테스팅
• 화이트박스 테스팅
4. 유지보수 테스팅
• 유지보수가 필요한 상황
• 유지보수를 위한 영향도 분석
1.소프트웨어 개발 수명주기 모델
• 소프트웨어 개발과 소프트웨어 테스팅
요구사항
Requirements
분석
Analysis
설계
Design
코딩
Coding
테스팅
Testing
배포 Release
1. 소프트웨어 수명주기 모델
• 소프트웨어 개발과 소프트웨어 테스팅
점진적 모델
초기 요구사항을 점진적으로 반복되는 개발 주기를 통해 완성도를 높임
반복 주기 별로 중분 산출물에 대한 테스트를 수행 (V&V)
Build_1
D C T
Requirements
D C T
(1 ~ N) Build_2
Build_N
D C T
Req. 1
D C T
Req. 2
D C T
Req. n
D C T
1. 소프트웨어 수명주기 모델
• 소프트웨어 개발과 소프트웨어 테스팅
V - 모델
소프트웨어 개발 모델 ( 폭포수 ) 과 대응되는 테스팅 모델 제시
개발 프로세스 초기에 테스팅 계획과 설계 준비에 도움
Integration test
rif
Design Integration
ica
Planning Testing
on
t io
ati
n
lid
Va
Unit test Unit
Coding Testing
Planning
(Actual)Testing
QA
1. 소프트웨어 수명주기 모델
• 소프트웨어 개발과 소프트웨어 테스팅
Verification & Validation
Verification( 검증 )
a. 각 개발 활동 단계의 산출물이 주어진 사양에 부합되는지 평가
b. “Are we building the product right?” 에 대한 결과
c. 산출물에 대한 “ review(inspection)” 활동에 해당
Validation( 확인 )
a. 개발 산출물이 초기 고객 요구사항을 만족하는지 평가
b. “Are we building the right product?” 에 대한 결과
c. 전통적으로 실행 기준의 “ testing” 활동에 해당
1. 소프트웨어 수명주기 모델
• 정황에 따른 소프트웨어 수명 주기 모델
개발 수명 주기 모델에서 성공적인 테스팅 특징
• 통합 테스팅
• 시스템 테스팅
• 인수 테스팅
2. 테스트 레벨
• 테스트 레벨이란 ?
V - 모델
소프트웨어 개발 모델 ( 폭포수 ) 과 대응되는 테스팅 모델 제시
개발 프로세스 초기에 테스팅 계획과 설계 준비에 도움
Integration test
rif
Design Integration
ica
Planning Testing
on
t io
ati
n
lid
Va
Unit test Unit
Coding Testing
Planning
(Actual)Testing
QA
2. 테스트 레벨
테스트 레벨
a. 단위 테스팅 (Unit testing)
b. 통합 테스팅 (Integration testing)
c. 시스템 테스팅 (System testing)
d. 인수 테스팅 (Acceptance testing)
구체적인 목적
a. 리스크 완화
b. 컴포넌트의 기능과 비기능 동작이 설계 및 명세와 일치하는지 판단
c. 컴포넌트 품질 수준에 대한 자신감 획득
d. 컴포넌트에 존재하는 결함 발견
e. 다음 단계로의 결함 전이 방지
테스트 대상
a. 컴포넌트 , 단위 , 모듈
b. 코드 및 데이터 구조
c. 클래스
d. 데이터베이스 모듈
대표적인 결함과 장애
a. 잘못된 기능
b. 데이터 흐름 문제
c. 잘못 코드 및 논리
2. 테스트 레벨
구체적인 접근법과 책임
a. 코드를 중심으로 수행하며 단위 테스트 프레임 워크 또는 디버깅 툴 같은 개발 환경을 지원
b. 실무에서는 코드를 작성한 프로그래머가 직접 테스트에 참여
c. 일반적으로 결함이 발견되면 즉시 수정되며 , 정식 결함 관리는 하지 않는 것이 일반적임
d. 코딩 전에 테스트 케이스를 준비하고 , 자동화 하는 것이 좋음
( 테스트 주도 개발 방법론 : test-driven development)
2. 테스트 레벨
구체적인 목적
a. 리스크 완화
b. 인터페이스의 기능과 비기능 동작이 설계 및 명세와 일치하는지 여부 판단
c. 인터페이스 품질 수준에 대한 자신감 획득
d. 결함 발견 ( 결함은 인터페이스 자체 또는 컴포넌트나 시스템에 존재할 수 있다 )
e. 다음 단계로의 결함 전이 방지
두 개의 다른 통합 테스팅 레벨
a. 컴포넌트 통합 테스팅
- 통합된 컴포넌트 간의 상호운용성과 인터페이스에 초점
- 컴포넌트 테스팅 후 수행하며 자동화로 진행되는 경향
b. 시스템 통합 테스팅
- 시스템 , 패키지 , 마이크로서비스 (microservice) 간의 상호운용성과 인터페이스에 초점
2. 테스트 레벨
테스트 대상
a. 서브시스템 (subsystems) d. 인터페이스 (interfaces)
b. 데이터베이스 (database) e. APIs
c. 인프라 (infrastructure) f. 마이크로서비스 (microservices)
2. 테스트 레벨
구체적인 접근법과 책임
a. 컴포넌트 통합 및 시스템 통합 테스팅은 통합 ( 각 모듈간의 커뮤니케이션 ) 자체에 집중
b. 컴포넌트 테스팅에서 커버했어야 할 기능에 초점을 맞추면 안됨
c. 컴포넌트 통합 테스팅은 개발자의 책임 경우가 많음 / 시스템 통합 테스팅은 테스터의 책임
2. 테스트 레벨
구체적인 목적
a. 리스크 완화
b. 시스템의 기능 / 비기능 동작이 설계 및 명시된 대로 이루어지는지 검증
c. 완성된 시스템이 기대한 대로 동작하는지 확인
d. 전체 시스템 품질에 대한 자신감 획득
e. 결함 발견
f. 결함이 상위 테스트 레벨이나 생산 단계로의 전이 방지
테스트 베이시스
a. 시스템 및 소프트웨어 요구사항 명세 ( 기능 / 비기능 ) e. 시스템 동작 모델
b. 리스크 분석 보고서 f. 상태 다이어 그램
c. 유즈케이스 g. 시스템 및 사용자 메뉴얼
d. 에픽과 사용자 스토리
2. 테스트 레벨
테스트 대상
a. 애플리케이션
b. 하드웨어 / 소프트웨어 시스템
c. 운영 시스템
d. 테스트 대상 시스템 (SUT, System Under Test)
e. 시스템 설정과 설정 데이터
일반적인 결함과 장애
a. 잘못된 연산
b. 시스템의 잘못되거나 예상치 못한 기능 / 비기능 동작
c. 엔드 - 투 - 엔드 기능 작업 수행 실패
d. 시스템 환경에서 시스템의 정상 동작 실패
e. 시스템 및 사용자 매뉴얼대로의 시스템 동작 실패
2. 테스트 레벨
구체적인 접근법과 역할
a. 기능 / 비기능 모두의 측면에서 전반적인 시스템의 엔드 - 투 - 엔드 동작에 관심
b. 테스트 대상 시스템의 특성에 가장 잘 맞는 기법을 사용
c. 일반적으로 명세에 과도하게 의존하는 독립적인 테스터가 수행
2. 테스트 레벨
구체적인 목적
a. 전체 시스템의 품질에 대한 자신감 획득
b. 완성된 시스템이 기대한 대로 동작하는지 확인
c. 시스템의 기능 / 비기능 동작이 명세대로 동작하는 검증
d. 결함 발견이 목적이 아닌 경우가 많으며 , 상당수의 결함이 발견되면 심각한 프로젝트
리스크로 인식
테스트 베이시스 ( 공통 )
a. 비즈니스 프로세스
b. 사용자 또는 비즈니스 요구사항
c. 규제 , 법적 계약 , 표준
d. 유즈케이스 및 사용자 스토리
e. 시스템 요구사항
f. 시스템 또는 사용자 문서
g. 설치 절차
h. 리스크 분석 보고서
일반적인 결함과 장애
a. 비즈니스나 사용자 요구사항을 충족하지 못하는 시스템 워크플로우
b. 잘못 구현된 비즈니스 규칙
c. 계약 혹은 규제 요구사항을 충족하지 못하는 시스템
d. 보안 취약성 , 많은 부하가 걸렸을 때 성능 효율성 저하 , 지원 대상 플랫폼상에서의 잘못된 운영 등과 같은
비기능 장애
구체적인 접근법과 역할
a. 주로 고객 , 비즈니스 사용자 , 제품 소유자 , 혹은 시스템 운영자가 담당
b. 대부분은 순차적 개발 수명주기의 마지막 테스트 레벨이지만 사용 소프트웨어 제품에 대한 인수 테스팅은
그것이 설치되거나 통합될 때 , 신규 기능 개선 사항에 대한 인수 테스팅은 시스템 테스팅 전에 이루어 진다 .
3. 테스트 유형
• 기능 테스팅
• 비기능 테스팅
• 화이트 박스 테스팅
• 변경 관련 테스팅
대표적인 목적
a. 완전성 , 정확성 , 적합성 등과 같은 기능 품질 특성 평가
b. 신뢰성 , 성능 효율성 , 보안성 , 호환성 , 사용성 등과 같은 비기능 품질 특성 평가
c. 컴포넌트나 시스템의 아키텍쳐 및 구조가 정확하고 완전하며 명시된 것과 일치하는지 평가
d. 수정의 효과 평가 , 예를 들어 , 결함이 수정됐는지 확인 ( 확인 테스팅 ) 하고 소프트웨어나 환경의
변화로 인해 동작에 의도하지 않은 변화가 없는지 ( 리그레이션 테스팅 ) 평가
3. 테스트 유형 (Test type)
컴포넌트나 시스템의 기능에 대한 테스트 컨디션과 테스트 케이스 도출을 위해 블랙박스 기법을
활용
컴포넌트나 시스템의 기능에 대한 테스트 컨디션과 테스트 케이스 도출을 위해 블랙박스 기법을
활용
모든 테스트 레벨에서 수행
- 자동화 도구는 선언과 결정과 같은 코드 커버리지 요소 측정 ( 통합 테스트 )
- 호출 체계 ( 구조 : hierarchy) 와 같은 시스템 아키텍처 기반 ( 시스템 테스팅 )
- 비즈니스 모델 또는 메뉴 구조 ( 인수 / 시스템 테스팅 )
• 특정 워크플로우에 속하는 화면 중
시스템 테스트
하나만 변경되더라도 해당 워크플로우에 대한 모든 테스트 실행
• 유지보수를 위한 영향도 분석
4. 유지보수 테스팅