애플리케이션 통합 테스트
단위 테스트
단위 테스트는 개별적인 모듈을 테스트한다.
개별적인 모듈에 대해 컴포넌트 테스트를 수행하려면 모듈을 단독으로 실행 할 수 있는 테스트 베드(Test Bed)라는 환경이 필요하다.
단위 테스트는 빠르게 수행되어야 하고 다른 컴포넌트에 의존하지 않도록 해야한다.
테스트를 몇 번 실행해도 동일한 결과가 나와야 하고, 사람의 개입 없이 테스트가 통과되었는지 알 수 있도록 작성해야 한다.
목(Mock) 객체
객체 지향 프로그램에서는 테스트 되는 메서드는 다른 클래스의 객체에 의존하기때문에 독립적인 컴포넌트 테스트를 위해서 스텁의 객체 지향 버전인 목 객체가 필요하다.
목 객체는 개발자가 만들거나 목 객체 생성 프레임워크를 활용 하여 생성할 수 있다.
- 더미 객체(Dummy) : 테스트할 때 객체만 필요하고 해당 객체의 기능까지는 필요하지 않은 경우에 사용
- 테스트 스텁(Stub) : 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구
- 테스트 드라이버(Driver) : 테스트 대상 하위 모듈을 호출하고, 파라미터를 전달하고, 모듈 테스트 수행 후의 결과를 도출
- 테스트 스파이(Spy) : 주로 테스트 대상 클래스와 협력하는 클래스로 가는 출력을 검증하는데 사용
- 가짜 객체(Fake) : 실제 협력 클래스의 기능을 대체해야 할 경우에 사용
통합 테스트
소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 체계적인 테스트 기법
하향식 통합
메인 제어 모듈로부터 아래 방향으로 제어의 경로를 따라 이동하면서 하향식으로 통합하면서 테스트를 진행하며 깊이우선 또는 너비 우선 방식이 있다.
상향식 통합
애플리케이션 구조에서 최하위 레벨의 모듈 또는 컴포넌트로부터 위쪽 방향으로 제어의 경로를 따라 이동하면서 구축과 테스트를 수행한다.
샌드위치 통합
상향식 통합 테스트와 하향식 통합 테스트 방식을 결합한 테스트 방식
테스트 자동화 도구
테테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현하여 쉽고 효율적인 테스트를 수행할 수 있는 방법
- 정적 분석 도구(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) : 사용자의 행위를 조건부로 사전에 입력해 두면 그 상황에 예정된 행위를 수행하는 객체
테스트 커버리지(Test Coverage)
주어진 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준
- 기능 기반 커버리지 : 테스트 대상 애플리케이션의 전체 기능을 모수로 설정하고 실제 테스트가 수행된 기능의 수를 측정하는 방법
- 라인 커버리지 : 애플리케이션 전체 소스 코드의 라인 수를 모수로 테스트 시나리오가 수행한 소스 코드의 라인 수를 측정하는 방법
- 코드 커버리지 : 소스 코드의 구문, 조건, 결정 등의 구조 코드 자체가 얼마나 테스트 되었는지를 측정하는 방법
결함의 식별 및 관리
결함 심각도별 분류
애플리케이션에 발생한 결함이 어떤 영향을 끼치며 그 결함이 얼마나 치명적인지를 나타내는 척도
- 치명적(Critical) 결함 : 기능이나 제품의 테스트를 완전히 방해하거나 못하게 하는 결함
- 주요(Major) 결함 : 기능이 기대와 많이 다르게 동작하거나 그 기능이 해야하는 것을 못하는 결함
- 보통(Normal) 결함 : 제품이나 프로그램이 특정 기준을 충족하지 못하거나 전체에 영향을 주지 않는 일부 기능이 부자연스러운 결함
- 경미한(Minor) 결함 : 사용상의 불편함을 유발하는 결함
- 단순(Simple) 결함 : 사소한 버그라고 하며 기능에는 영향이 없지만 수정되어야 하는 결함
결함 우선순위
발생한 결함이 얼마나 빠르게 처리되어야 하는지를 결정하는 척도
- 결정적(Critical)
- 높음(High)
- 보통(Medium)
- 낮음(Low)
'CS' 카테고리의 다른 글
운영체제 명령어 활용 (0) | 2023.04.11 |
---|---|
운영체제의 종류 (0) | 2023.04.10 |
소프트웨어 테스트 원리와 테스트 유형 (0) | 2023.04.10 |
시큐어 코딩 가이드 (0) | 2023.04.09 |
암호 알고리즘과 데이터 암호화 전송 (0) | 2023.04.09 |
댓글