단위 테스트는 설계 명세서를 바탕으로 한 코딩과 디버깅과 함께 구현 단계에서 수행된다. 모듈 단위로 코드를 작성하고 오류를 고친 뒤, 개별 모듈이 정상적으로 작동하는지 확인하는 과정까지가 구현 단계의 포괄적인 범위다. 테스트가 별도 단계로 구분되어 다뤄지기도 하지만, 모듈 하나하나를 검증하는 단위 테스트는 구현 활동의 일부로 이해된다.
테스트의 '단위'가 무엇이냐는 패러다임에 따라 달라진다. 절차지향 프로그래밍에서는 함수가 독립적인 실행 단위로 취급되지만, 객체지향에서는 클래스가 단위 테스트의 단위가 된다. 클래스는 데이터(필드)와 기능(메소드)을 하나로 묶어 독립적으로 실행하고 테스트할 수 있는 단위이기 때문이다. 메소드와 필드는 클래스를 구성하는 요소일 뿐 단위 자체가 아니고, 서브시스템은 단위보다 큰 상위 개념이다.
모듈 단위로 쪼개 검증하는 까닭은 모듈화의 이점과 이어진다. 오류가 발생했을 때 해당 모듈만 수정하면 되어 오류의 파급 효과가 줄어든다. 그래서 단위 테스트는 모듈의 재사용이나 관리 용이성과 함께 모듈화 설계가 주는 실질적 이득을 뒷받침한다.
예제
시험에서는 '시스템의 설계 명세서를 바탕으로 모듈 단위의 코딩과 디버깅 및 단위 테스트가 이루어지는 단계는?'이라는 문제에서 구현을 답으로 고르고, '객체지향 테스트 중 구조적 기법에서의 단위 테스트와 같은 개념은?'에서는 클래스를 고른다. 절차지향의 단위는 함수, 객체지향의 단위는 클래스라는 대비를 묻는 패턴이 반복된다.
대표 기출 2문항
시스템의 설계 명세서를 바탕으로 모듈 단위의 코딩과 디버깅 및 단위 테스트가 이루어지는 소프트웨어 개발 단계는?
코딩
구현
테스트
프로그램 설계
정답과 해설 보기
정답 ② · 설계 명세서를 기반으로 코딩과 디버깅, 단위 테스트까지 수행하는 개발 단계를 묻는 문제이다. 구현 단계는 설계 명세서를 실제 프로그램 코드로 변환하는 단계로, 코딩과 디버깅, 단위 테스트를 포괄하는 상위 개념이다.
설계 명세서를 바탕으로 코딩, 디버깅, 단위 테스트를 모두 수행하는 포괄적인 단계는 구현 단계이다.
객체지향 테스트 중 구조적 기법에서의 단위 테스트(Unit Test)와 같은 개념은?
메소드
클래스
필드
서브시스템
정답과 해설 보기
정답 ② · 객체지향 테스트에서 구조적 기법의 단위 테스트에 해당하는 개념을 묻는 문제이다. 구조적 기법에서 함수나 모듈이 단위 테스트의 대상이라면, 객체지향에서는 데이터와 행위를 캡슐화한 독립 실행 단위인 클래스가 단위 테스트의 대상이 된다.
객체지향 테스트에서 클래스는 독립적인 실행 및 테스트 단위로 간주되므로 단위 테스트의 대상이 된다.