테스트란?
- 소프트웨어 관점에서 “애플리케이션이 요구 사항에 맞게 동작하는지를 검증하는 행위”
- 주로 코드로 작성된 자동화 테스트를 의미한다.
- TDD 등의 개발 방식이 대중화되면서, 테스트는 점점 개발 단계의 일부로 받아들여지고 있다.
테스트를 왜 해야 할까?
- 개발자가 테스트 코드를 직접 작성하면 더 적극적으로 리팩토링 등의 코드 개선을 할 수 있다.
- 개발 단계에서 제품 품질이 향상되어 테스터 간의 불필요한 커뮤니케이션이 줄어든다.
테스트의 종류
단위 테스트
- 모듈과 같은 작은 단위를 떼어 분리된 환경에서 테스트 하는 방식
- 하나의 모듈이나 클래스에 대해 더 세밀하게 테스트 할 수 있다.
- 작은 단위이기 때문에 테스트를 빠르게 진행할 수 있다.
- 의존성이 있는 모듈을 제어하기 위해 **모의 객체(Moking)**를 사용할 수 밖에 없다.
- 두 개 이상의 모듈이 실제로 잘 연결되었는지 검증할 수 없다.
- 작은 단위의 리팩토링에도 쉽게 깨질 수 있다.
통합 테스트
- 두 개 이상의 모듈이 실제로 연결된 상태를 테스트 하는 방식
- 단위 테스트에 비해 모의 객체 사용이 적다.
- 모듈 간의 연결에서 발생하는 에러를 검증할 수 있다.