소프트웨어 개발 - 애플리케이션 통합 테스트
#애플리케이션 통합 테스트
결합 관리 도구
단계별 테스트 수행 후 발생한 결함의 재발 방지를 위해 결함을 추적하고 관리하는 도구
유사 결함 발견 시 처리 시간 단축을 위해 결함을 추적하고 관리하는 도구
■ 결함 관리 프로세스
에러 발견 → 에러 등록 → 에러 분석 → 결함 확정 → 결함 할당 → 결함 조치 → 결한 조치 검토 및 승인
■ 결함 (Defect)
오류로 인해 만들어지는 문서 또는 코딩 상의 결점으로 소프트웨워가 개발자가 설계한 것과 다르게 동작하거나 다른 결과가 발생하는 형상
- 결함을 제거하지 않으면 소프트웨어 제품이 실패하거나 문제가 발생함
- 결함 관련 용어
- 오류 (Error)
- 결점 (Fault)
- 버그 (Bug)
- 고장 (Failure)
- 문제 (Problem)
■ 결한 심각도별 분류
- 치명적 결함 (데이터 손실/시스템 충돌)
- 주요 결함 (기능 장애)
- 보통 결함 (사소한 기능 오작동)
- 경미한 결함 (표준 위반, UI 잘림)
- 단순 결함 (미관상 좋지 않음)
■ 결함 우선 순위
발생한 결함이 얼마나 빠르게 처리되어야 하는지를 결정하는 척도
- 결함 심각도가 높아도 우선순위가 반드시 높은 것은 아님
- 애플리케이션의 특성에 따라 우선순위가 결정될 수 있음
- 결정적 (Critical) : 24시간 안에 즉시 수정, 전체 기능이 동작하지 않음
- 높음 (High) : 결함으로 인해 다른 기능을 사용할 수 없을 때
- 보통 (Medium) : 실패가 발생했을 때 올바른 메세지가 출력되지 않는 것과 같은 에러
- 낮음 (Low) : 디자인에서 사용자 경험을 향상시키기 위해 작은 기능 구현에 대한 요청을 제안하기 위한 우선순위
테스트 자동화 도구
테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현
- 테스트 시간 단축
- 인력 투입 비용을 최소화
- 쉽고 효율적인 테스트 수행
■ 테스트 자동화 도구 장점
- 반복되는 테스트 데이터 재입력 작업의 자동화
- 사용자 요구 기능의 일관성 검증에 유리
- 테스트 결괏값에 대한 객관적인 평가 기준 제공
- 테스트 결과의 통계 작업과 그래프 등 다양한 표시 형태 제공
- UI가 없는 서비스의 경우에도 정밀한 테스트 가능
■ 테스트 자동화 도구 단점
- 도구 도입 후 도구 사용 방법에 대한 교육 및 학습 필요
- 프로세스 단계별로 적용하기 위한 시간, 비용, 노력이 필요
- 상용 도구의 경우 고가, 유지 관리 비용이 높아 추가 투자가 필요
■ 정적 분석 도구 (Static Analysis Tools)
애플리케이션을 실행하지 않고 분석하는 방법
- 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위해 사용
- 테스트를 수행하는 사람이 작성된 소스 코드에 대한 이해가 필요함
- 자료 흐름이나 논리 흐름을 분석하여 비정상적인 패턴을 찾을 수 있음
■ 테스트 실행 도구 (Test Execution Tools)
테스트를 위해 작성된 스크립트를 실행하는 도구
- 작성된 스크립트: 특정 데이터와 테스트 수행 방법 포함
- 데이터 주도 접근 방식
- 테스트 데이터를 스프레드시트에 저장하고, 이 데이터를 읽고 실행
- 키워드 주도 접근 방식
- 테스트를 수행할 동작을 나타내는 키워드와 테스트 데이터를 스프레드시트에 저장
■ 성능 테스트 도구 (Performance Test Tools)
애플리케이션의 처리량, 응답 시간, 경과 시간, 자원 사용률에 대해 가상의 사용자를 생성하고 테스트를 수행함으로써 성능 목표를 달성하였는지 확인하는 도구
■ 테스트 통제 도구 (Test Control Tools)
- 테스트 관리 도구: 테스트 계획 및 관리
- 형상 관리 도구: 테스트 수행에 필요한 데이터와 도구를 관리
- 결함 추적/관리 도구: 발생한 결함에 대해 관리하거나 협업을 지원
■ 테스트 장치
컴포넌트 및 모듈을 테스트하는 환경의 일부분
- 테스트를 지원하기 위한 코드와 데이터
- 단위 또는 모듈 테스트에 사용하기 위해 코드개발자가 작성함
- 테스트 장치 구성 요소
- 테스트 드라이버 (Test Deriver)
- 테스트 스텁 (Test Stub)
- 테스트 슈트 (Test suite)
- 테스트 케이스 (Test Case)
- 테스트 시나리오 (Test Scenario): 사용자가 시스템을 사용하면서 만나게 되는 상황을 구성한 것
- 테스트 스크립트 (Test Script): 특정 기능에 대한 상세 절차
- 목 오브젝트 (Mock Object)
통합 테스트 (Integration Test)
각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 테스트
■ 하향식 통합 테스트 (Top Down Intergration Test)
최상위 모듈부터 하위 모듈들을 통합하면서 테스트
- ‘깊이-우선’ 또는 ‘너비-우선’ 방식으로 통합
- 더미 모듈인 스텁(Stub) 개발
- 장애 위치 파악 쉬움
- 중요 모듈을 먼저 테스트할 수 있음
- 많은 스텁이 필요함
■ 상향식 통합 테스트 (Bottom Up Intergration Test)
최하위 레벨의 모듈부터 점진적으로 상위 모듈과 함께 테스트
- 더미 모듈인 드라이버(Driver) 작성
- 장애 위치 파악 쉬움
- 모든 모듈 개발 시간 낭비 필요 없음
- 중요 모듈들이 마지막에 테스트될 가능성이 높음
This post is licensed under CC BY 4.0 by the author.