테스트란?
- 소프트웨어의 결함이 있는 부분을 찾아내는 과정
- 테스트에서 밝혀내야하는 결함이란 오류뿐 아니라 설계와 다르게 동작하는 것, 의도되지 않은대로 동작하는 것을 포함
테스트 종류
- 유닛 테스트 : 단위 기능 테스트
- 서비스 테스트 : 각 모듈(MSA로 분리된 각 Service)의 외부로 공개한 API를 대상으로 한 테스트
- 통합 테스트 : MSA로 분리된 전체 모듈을 연동하여 테스트
- 시스템 테스트 : 실 서비스에 준하는 상황으로 테스트
테스트 자동화를 해야 하는 이유
- 운영중인 서비스에 추가, 변경 사항이 생길 경우 사이드 이펙트를 모두 파악하기 어려움
- 코드 리팩토링, 라이브러리 업그레이드 등을 진행한 뒤에도 기존 기능에 영향이 없는지 확인이 필요함
- 코드 변경이 생기는 경우에 기존 기능에 영향이 없는지 검증하는 가장 기본적인 방법
결론
- 테스트가 자동화 되어 있지 않다면 코드가 변경 될때 마다 사이드 이펙트를 우려해 리팩토링을 수행하지 못할 확률이 높음
- 결국 코드 개선이 되지 않아 시간이 지나면 우리가 흔히 보는 레거시 시스템이 될 확률이 높음
- 테스트 케이스를 작성하고 자동화 하는 것은 귀찮고 힘든 일이지만 반드시 수행해야 함
- 테스트 케이스는 코드 추가, 변경이 생길 경우에도 지속적으로 유지보수가 되어야 함
[참조]
'프로그래밍' 카테고리의 다른 글
OWASP Top 10 2020 (0) | 2020.10.04 |
---|---|
FQDN - Fully Qualified Domain Name (0) | 2020.07.06 |
디미터 법칙 (0) | 2020.04.24 |
GRASP 패턴 (0) | 2020.04.22 |
TDD, BDD, DDD, RDD (0) | 2020.04.21 |