작성 맥락
이 글은 직접 학습하거나 구현하며 남긴 개인 기술 기록입니다. 참고 자료가 있는 경우 본문에 출처를 남기고, 틀린 부분을 발견하면 수정합니다.
애플리케이션 통합 테스트 총정리
출제 빈도: 중
빈출 태그: 상향식/하향식, 스텁, 드라이버, 결함, 커버리지
애플리케이션 통합 테스트 수행
V-모델
- 단계별로 검증하고 수행해야 하는 테스트를 시각화함
테스트 단계별 특징
- 단위 테스트
- 모듈의 기능을 중심으로 테스트
- 기능 수행 여부와 논리적인 오류를 검출
- 화이트박스 테스트를 진행
- 통합 테스트
- 인터페이스 관련 오류 검출
- 설계 단계에서 제시한 애플리케이션과 동일한 구조로 구현되었는지 확인
통합 테스트 방식
비점증적 방식
- 전체 프로그램을 한번에 테스트 (빅뱅)
점증적 방식
- 상향식 통합
- 최하위 모듈부터 상위 모듈로 단계별 통합하여 테스트
- 더미 모듈은 테스트 드라이버 사용
- 장점
- 장애 위치 파악이 쉬움
- 개발시간 낭비 없음
- 단점
- 중요 모듈들을 마지막에 테스트해서 프로토타입이 어려움
- 하향식 통합
- 최상위 모듈부터 하위 모듈로 단계별 통합하여 테스트
- 더미 모듈은 테스트 스텁(stub) 사용
- 탐색 방식
- 깊이 우선 방식: 종속되어있는 모듈을 우선 탐색
- 너비 우선 방식: 같은 레벨을 우선 탐색
- 장점
- 장애 위치 파악 쉬움
- 중요 모듈의 선테스트 가능
- 설계상 결함 조기 발견
- 단점
- 많은 더미 모듈이 필요
- 하위 모듈들의 불충분한 테스트 수행
더미 모듈
- 스텁(Stub)
- 시각화 가능
- 테스트 케이스 사용이 어려움
- 드라이버(Driver)
- 상향식 통합에서 사용
- 테스트용 더미 모듈
회귀 테스트
- 통합 테스트 완료 후 변경여부 확인
- 방법
- 대표적인 샘플 도출
- 실제 수정이 발생한 모듈을 중심으로 시행
시스템 테스트
- 기능적 요구사항과 비기능적 요구사항으로 구분하여 테스트
- 실제 환경과 유사하게 만든 환경에서 테스트
- 목표 컴퓨터 시스템에서 수행능력 확인
인수 테스트
- 사용자가 직접 테스트
- 종류
- 알파 테스트: 개발자의 장소(회사)에서 진행
- 베타 테스트: 제한되지 않은 환경(회사 밖)에서 진행
테스트 자동화 도구
특징
- 반복적인 테스트 작업을 스크립트로 표현
- 휴먼 에러를 줄이고 비용과 시간을 절약
장점
- 데이터 재입력 자동화
- 일관된 검증에 유리
- 객관적인 평가 기준 제공
- 시각화 요소 제공
- 정밀한 테스트 가능
단점
- 사용방법에 대한 교육과 학습 필요
- 추가 투자 필요
자동화 도구 유형
- 정적 분석 도구
- 애플리케이션을 실행하지 않고 분석
- 소스코드에 대한 이해를 바탕으로 분석
- 테스트 실행 도구
- 스크립트를 실행하는 도구
- 특정 데이터와 수행방법 포함
- 접근 방식
- 데이터 주도: 데이터시트를 읽어옴
- 키워드 주도: 키워드-수행동작과 데이터 시트를 읽어옴, 수행 동작 정의와 테일러링 가능
- 성능 테스트 도구
- 처리량, 응답시간, 경과시간, 자원 사용율 테스트
- 결과 해석에 전문가의 도움 필요
- 테스트 통제 도구
- 테스트 관리 도구
- 형상 관리 도구
- 결함 추적/관리 도구
- 테스트 하네스
- Test Driver, Test Stub으로 구성
- 테스트 스위트: 테스트 케이스의 집합
- 테스트 케이스: 입력값, 시행조건, 기대결과의 집합
- 테스트 스크립트: 자동화된 실행절차를 명세
- 목 오브젝트: 예정된 행위를 자동으로 수행하는 객체
애플리케이션 테스트 결과 분석
소프트웨어 결함
- 오류
- 휴먼 에러에 의해 생기는 실수
- 결함/결점/버그
- 오류의 원인이 제품에 포함되는 완전하지 못한 부분
- 실패/문제
- 결함에 의해 의도하지 않은 결과가 발생
- 예: 개발자의 오타로 잘못된 연산이 나오고 실행하면서 문제가 생기는 경우
테스트 보고서
- 테스트 계획과 결과 포함
- 품질 상태, 성공률, 커버리지, 결함의 수, 결함의 중요도 포함
결함 관리
- 결함을 추적하고 관리
- 휴먼 에러 원인: 개발 기획, 설계, 코딩, 테스트 부족
- 심각도를 고려해서 관리의 우선순위 결정
결함 관리 측정 지표
- 결함 분포: 특정 속성에 해당하는 결함 수
- 결함 추세: 시간의 흐름
- 결함 에이징: 결함상태의 지속시간 측정
테스트 커버리지(Coverage)
- 테스트 범위를 측정하는 기준
- 기능 기반 커버리지
- 전체 기능 대비 실제 테스트가 수행된 기능 수 측정
- 100% 달성을 목표로 함
- 라인 커버리지
- 전체 코드 라인 수 대비 수행한 라인 수 측정
- 단위 테스트의 주요 척도
- 코드 커버리지
- 구문 커버리지: 모든 구문을 한번 이상 수행
- 결정 커버리지: 결정문의 결과가 참과 거짓의 결과를 수행
- 조건 커버리지: 결정문 내부 조건식의 결과가 참과 거짓을 수행
- 변형 조건/결정 커버리지: 독립적으로 전체 결과에 영향을 주는 것만 테스트
- 다중 조건 커버리지: 모든 가능한 논리적 조합을 고려
댓글이 보이지 않으면 GitHub에 로그인한 뒤 새로고침해 주세요. 공개 댓글은 로그인 상태에서 더 안정적으로 표시됩니다.