애플리케이션 테스트 수행
단위 테스트
단위 테스트(Unit Test) 개념
- 개별적인 모듈(또는 컴포넌트)을 테스트
- 구현 단계에서 각 모듈을 구현한 후 수행
- 개별적인 모듈에 대해 컴포넌트 테스트를 수행하려면 모듈을 단독으로 실행할 수 있는 테스트 배드(Test Bed)라는 환경이 필요
단위 테스트 수행 도구
테스트 드라이버(Test Driver)
- 모듈 테스트 수행 후의 결과를 도출하는 시험용 모듈
- 필요 테스트를 인자로 전달받아 실행하고, 테스트 완료 후 그 결괏값을 받는 역할을 하는 가상의 모듈
- 하위 모듈을 호출하는 상위 모듈의 역할
테스트 스텁(Test Stub)
- 일시적으로 필요한 조건만을 가지고 임시로 제공되는 시험용 모듈
- 상위 모듈에 의해 호출되는 하위 모듈의 역할
단위 테스트의 원칙
- 빠르게 수행되어야 하고, 다른 컴포넌트에 의존하지 않도록 해야 함
- 테스트를 몇 번 실행해도 동일한 결과가 나와야 하고, 사람의 개입 없이 테스트가 통과되었는지 알 수 있도록 작성해야 함
통합 테스트
통합 테스트(Integration Test) 개념
- 애플리케이션 통합 테스트는 소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 체계적인 테스트 기법
- 단위 테스트가 끝난 모듈 또는 컴포넌트 단위의 프로그램이 설계 단계에서 제시한 애플리케이션과 동일한 구조와 기능으로 구현된 것인지를 확인하는 테스트
- 빅뱅 테스트라고도 부름
통합 테스트 수행 방법의 분류
- 점증적인 방법 : 상향식 통합, 하향식 통합
- 비점증적인 방법 : 모든 컴포넌트를 사전에 통합하여 전체 프로그램을 한꺼번에 테스트하는 것
하향식 통합
하향식 통합(Top Down) 개념
- 메인 제어 모듈(프로그램)로부터 아래 방향으로 제어의 경로를 따라 이동하면서 하향식으로 통합하면서 테스트를 진행하며, 메인 제어 모듈에 통합되는 하위 모듈과 최하위 모듈은 ‘깊이-우선(Depth-First)’ 또는 ‘너비-우선(Breadth-First)’ 방식으로 통합
하향식 통합 수행 단계
- 1단계 : 메인 제어 모듈은 작성된 프로그램을 사용하고, 아직 작성되지 않은 하위 모듈을 제어함
- 2단계 : 위에서 아래로 내려오기 때문에 검사 초기에 시스템의 구조가 파악되어야 함
- 3단계 : 모듈 및 모든 하위 컴포넌트를 대신하여 더미 모듈인 스텁(Stub) 개발
- 4단계 : 깊이-우선 방식 또는 너비-우선 방식에 따라, 하위 모듈인 스텁이 한 번에 하나씩 실제 모듈로 대체
- 5단계 : 각 모듈 또는 컴포넌트를 통합하면서 테스트 수행
- 6단계 : 테스트가 완료되면 스텁이 실제 모듈 또는 컴포넌트로 작성
상향식 통합
상향식 통합(Bottom Up) 개념
- 애플리케이션 구조에서 최하위 레벨의 모듈 또는 컴포넌트로부터 위쪽으로 제어의 경로를 따라 이동하면서 구축과 테스트를 수행
상향식 통합 수행 단계
- 1단계 : 하위 레벨의 모듈 또는 컴포넌트들이 하위 모듈의 기능을 수행하는 클러스터(Cluster)로 결합
- 2단계 : 상위의 모듈에서 데이터의 입력과 출력을 확인하기 위한 더미 모듈인 드라이버(Driver) 작성
- 3단계 : 각 통합된 클러스터 단위 테스트
- 4단계 : 테스트가 완료되면 각 클러스터는 프로그램의 위쪽으로 결합하며, 드라이버는 실제 모듈 또는 컴포넌트로 대체
샌드위치 통합
샌드위치 통합 개념
- 상향식 통합 테스트와 하향식 통합 테스트 방식을 결합한 테스트 방식
- 하위 프로젝트가 있는 큰 규모의 통합 테스트에서 사용하는 방식
- 병렬 테스트가 가능하고 시간 절약이 가능
- 스텁과 드라이버의 필요성이 매우 높은 방식이고, 비용이 많이 소요
샌드위치 통합 수행 단계
- 1단계 : 상위 모듈 M1은 M2, M3, M4에 해당하는 테스트 스텁을 사용하여 테스트
- 2단계 : M5, M6, M7은 클러스터링하여 테스트 드라이버 D1을 사용하여 테스트
- 3단계 : 모듈에 대한 테스트가 완료되면 실제 모듈 M2를 통합하고 나머지 컴포넌트 M3, M4도 추가 통합하여 완전한 시스템 구축
통합 테스트 수행 방법 간 비교
빅뱅 테스트
- 모든 모듈을 동시에 통합 후 테스트 수행
- 드라이버/스텁 없이 실제 모듈로 테스트
- 단시간 테스트 가능, 작은 시스템에 유리
- 장애 위치 파악이 어려움, 모든 모듈이 개발되어야 가능
상향식 테스트
- 최하위 모듈부터 점진적으로 상위 모듈과 함께 테스트
- 테스트 드라이버 필요
- 장애 위치 파악 쉬움, 모든 모듈 개발 시간 낭비 필요 없음
- 중요 모듈들이 마지막 테스트 가능성 높음, 이른 프로토타입 어려움
하향식 테스트
- 최상위 모듈부터 하위 모듈들을 통합하면서 테스트
- 테스트 스텁 필요
- 장애 위치 파악 쉬움, 이른 프로토타입 가능, 중요 모듈의 선 테스트 가능
- 많은 스텁이 필요, 하위 모듈들의 불충분한 테스트 수행
샌드위치 테스트
- 상위는 하향식 + 하위는 상향식 테스트
- 테스트 스텁, 드라이버 필요
- 병렬 테스트가 가능하고 시간 절약 가능, 큰 규모의 통합 테스트에 활용
- 비용이 많이 소요
테스트 자동화 도구
테스트 자동화 도구 개념
- 테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현함으로써, 테스트 시간 단축과 인력 투입 비용을 최소화하는 한편, 쉽고 효율적인 테스트를 수행할 방법
테스트 자동화 도구의 장단점
장점
- 반복되는 테스트 데이터 재입력 작업의 자동화
- 사용자 요구 기능의 일관성 검증에 유리
- 테스트 결괏값에 대한 객관적인 평가 기준 제공
- 테스트 결과의 통계 작업과 그래프 등 다양한 표시 형태 제공
- UI가 없는 서비스의 경우에도 정밀한 테스트 가능
단점
- 도구 도입 후 도구 사용 방법에 대한 교육 및 학습 필요
- 도구를 프로세스 단계별로 적용하기 위한 시간, 비용, 노력이 필요
- 상용 도구의 경우 고가, 유지 관리 비용이 높아 추가 투자가 필요
테스트 자동화 도구 유형
정적 분석 도구(Static Analysis Tools)
- 만들어진 애플리케이션을 실행하지 않고 분석하는 도구
- 대부분의 경우 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위하여 사용
- 테스트를 수행하는 사람이 작성된 소스 코드에 대한 이해를 바탕으로 도구를 이용해서 분석하는 것
테스트 실행 도구(Test Execution Tools)
데이터 주도 접근 방식
- 테스트 데이터를 스프레드시트에 저장
- 다양한 테스트 데이터를 이용하여 동일한 테스트 케이스를 반복해서 실행할 수 있으며, 스크립트 언어에 익숙지 않은 테스터도 미리 작성된 스크립트에 테스트 데이터만 추가하여 쉽게 테스트를 수행
키워드 구조 접근 방식
- 일반적으로 테스트를 수행할 동작을 나타내는 키워드와 테스트 데이터를 스프레드시트에 저장
- 키워드를 이용하여 테스트 수행 동작을 정의할 수 있으며, 테스트 대상 애플리케이션의 특성에 맞추어 키워드에 대해 테일러링을 수행할 수 있음
성능 테스트 도구(Performance Test Tools)
- 애플리케이션의 처리량, 응답 시간, 경과 시간, 자원 사용률에 대해 가상의 사용자를 생성하고 테스트를 수행함으로써 성능 목표를 달성하였는지를 확인하는 도구
테스트 통제 도구(Test Control Tools)
- 테스트 계획 및 관리를 위한 테스트 관리 도구, 테스트 수행에 필요한 데이터와 도구를 관리하는 형상 관리 도구, 테스트에서 발생한 결함에 대해 관리하거나 협업을 지원하기 위한 결함 추적/관리 도구 등이 있음
- 조직의 요구사항에 최적화된 형태의 정보를 생성, 관리하기 위하여 스프레드시트 등 다른 도구들과 연계하여 사용할 수도 있음
테스트 하네스
테스트 하네스(Test Harness) 개념
- 애플리케이션 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로, 테스트를 지원하기 위한 코드와 데이터를 말하며, 단위 또는 모듈 테스트에 사용하기 위해 코드 개발자가 작성
테스트 하네스 구성요소
테스트 드라이버(Test Driver)
- 테스트 대상 하위 모듈을 호출하고, 파라미터를 전달하고, 모듈 테스트 수행 후의 결과를 도출하는 등 상향식 테스트에 필요
테스트 스텁(Test Stub)
- 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로 하향식 테스트에 필요
테스트 슈트(Test Suites)
- 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합
테스트 케이스(Test Case)
- 입력값, 실행 조건, 기대 결과 등의 집합
테스트 시나리오(Test Scenario)
- 애플리케이션의 테스트 되어야 할 기능 및 특징, 테스트가 필요한 상황을 작성한 문서
- 하나의 단일 테스트 시나리오가 하나 또는 여러 개의 테스트 케이스들을 포함할 수 있음
테스트 스크립트(Test Script)
- 자동화된 테스트 실행 절차에 대한 명세
목 오브젝트(Mock Object)
- 사용자의 행위를 조건부로 사전에 입력해 두면, 그 상황에 예정된 행위를 수행하는 객체
'정보처리 > 소프트웨어개발' 카테고리의 다른 글
애플리케이션 테스트 관리 성능 개선 (1) | 2025.05.04 |
---|---|
애플리케이션 테스트 관리 통합 테스트 2/2 (0) | 2025.05.03 |
애플리케이션 테스트 관리 테스트 케이스 설계 4/4 (0) | 2025.05.01 |
애플리케이션 테스트 관리 테스트 케이스 설계 3/4 (0) | 2025.04.30 |
애플리케이션 테스트 관리 테스트 케이스 설계 2/4 (0) | 2025.04.29 |