단위 테스트(Unit Test, Component Test)
- 정보처리기술사/소프트웨어공학
- 2019. 12. 30.
단위 테스트(Unit Test)는 다른 말로, 컴포넌트 테스팅(Component Testing)이라고도 불리는 테스트가 가능한 최소 단위로 나눠서 테스트를 수행하는 테스트를 일컫는다. 개발 수명주기(Development LifeCycle)의 정황과 시스템에 의존적이면서도 시스템의 다른 부분에서 격리하여 독립적으로 수행해야 하는 테스트이다.
단위 테스트를 하기 위해서, 가짜 프로그램, 객체(Mock Object)을 만들어서 활용할 수 있으며, 정교하게 테스트를 하기 위해서 테스트 케이스(Test Case) 작성은 필수라 할 수 있다.
개발 기반 모듈 테스트 단위테스트
단위 테스트(Unit Test)의 개념
- 소프트웨어 개발 후 테스트 가능한 최소단위 기준으로 결함을 찾고, 기능을 검증하는 테스트 활동
- 컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차
단위 테스트의 장점
문제점 발견
- 프로그램의 각 부분을 고립 시켜서 각각의 부분이 정확하게 동작하는 확인
- 이를 위해 가짜 객체(Mock Object)를 만들어서 테스트를 수행할 수 있음
변경 쉬움
- 유닛 테스트를 믿고 개발자는 리팩토링(Refactoring, 기능은 동일하게 유지하면서 프로그램의 구조를 변경하는 작업)을 할 수 있음, 이를 회귀 테스트(Regressing Testing)이라고 함
- 어떻게 고치더라도 문제점을 쉽게 파악 할 수 있게 되므로, 프로그래머들은 의욕적으로 코드를 변경하게 됨
통합이 쉬움
- 단위 자체의 불확실성을 제거하여 상향식(Bottom-Up) 방식에 유용함
- 각 부분을 검증하고 합쳐서 다시 검증하는 통합 테스트에서 매우 유용
단위 테스트의 특징
- White Box 중심 : 개발자 주도의 프로그램 소스 코드를 활용하여 테스트를 설계
- 모듈 명세화 : 코드의 가시성, 단위 모듈의 반응에 주시
- 테스트 관점 : 인터페이스, 자료구조, 수행경로, 오류처리, 경계 중심의 테스트 수행
단위 테스트 분야, 수행 기법 및 절차
단위 테스트 분야
- 인터페이스 테스트 : 파일 속성, 입력/출력 매개변수, 입출력 I/O(Input Output) 테스트
- 자료구조 테스트 : 자료형태, 변수 초기화, 자료 형태의 일관성 테스트
- 실행경로 테스트 : 다른 자료형태간 비교, 잘못된 루프 문 테스트
- 오류처리 테스트 : 오류 메시지 이해 용이도, 오류 메세지 상세여부 테스트
단위 테스트 수행 기법 비교
전략 |
Black Box (통합) |
White Box(단위) |
정의 |
- 사용자 관점 IO 테스트 |
- 개발자 관점 Logic테스트 |
장점 |
- 테스트 용이 |
- 오류에 빠른 Feedback |
단점 |
- 내부 연관도 파악 곤란 |
- 누락된 Logic 찾기 곤란 |
종류 |
- 동등분할, 경계 값, 원인결과 |
- 구조, 루프 테스트 |
단위 테스트 수행 절차 및 산출물
절차 |
활동 |
산출물 / 비고 |
테스트 계획 수립 |
- 테스트 범위, 일정, 담당자, 보고방법, 성공/실패 기준 결정 |
- 단위테스트 계획서 |
테스트 케이스 설계 |
- Risk 기반 우선순위 따른 모듈별 테스트 입력값, 결과 예측값 결정 |
- 테스트케이스 - 테스트 오라클 |
테스트 수행 |
- 설계된 테스트 케이스 및 정책 기반으로 테스트 수행 |
- 뮤테이션 및 탐색적 테스트로 품질향상 |
결과 보고 |
- 결함내용, 심각도, 영향도, 수정여부 |
- 테스트 결과 보고서 - 오류사항 수정 요청서 |
참고, 전자정부프레임워크 상에서 Unit Test 수행방법
- Unit Test, Mock, DB Test Framework을 통해 TestCase 작성을 지원하고, Test Automation, Test Coverage, Test Reporting 등의 기능을 제공
참고자료
https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%9B_%ED%85%8C%EC%8A%A4%ED%8A%B8
(도서) 개발자도 알아야할 소프트웨어 테스팅 실무
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:dev2:tst:unit_test
연관자료
'정보처리기술사 > 소프트웨어공학' 카테고리의 다른 글
요구사항의 통합적인 테스트, 시스템 테스트(System Test) (0) | 2019.12.31 |
---|---|
통합테스트(Integration Test) (0) | 2019.12.30 |
SW 테스트(Test) (0) | 2019.12.26 |
OOP를 더욱 빛나게 해주는, AOP (0) | 2019.01.10 |
낭비요소를 제거하는 개발방법론, 린(Lean) (0) | 2019.01.05 |