테스팅의 핵심 가치와 이점개발 과정 초기에 테스팅을 통합하는 것은 다양한 측면에서 소프트웨어 품질과 개발 효율성을 극대화합니다.
인터페이스 설계 및 조기 피드백 확보
- 테스트는 개발 중인 인터페이스를 외부 관점에서 처음으로 고려할 기회를 제공합니다.
- 테스트를 늦게 작성하거나 AI에 의존하여 사후에 생성하는 경우, 이러한 귀중한 피드백 기회를 상실하게 됩니다.
- 초기에 피드백을 반영하는 것이 PR 검토에서 동료에게 받는 것보다 훨씬 용이하며, 테스트하기 어려운 코드는 종종 설계가 미흡한 코드임을 시사합니다.
개발자의 신뢰와 효율성 증대
- CI(지속적 통합)에서 성공적인 ‘초록색 체크마크’를 신뢰할 수 있다는 것은 개발자에게 큰 힘이 됩니다.
- 이를 통해 의존성 업데이트, 리팩토링, 기존 작업 위에 새로운 기능 구축 등을 더 쉽게 수행할 수 있습니다.
- PR을 열기 전에도 핵심 동작이 잘 테스트되어 있다는 확신은, 아무것도 망가뜨리지 않았음을 보장하며 리팩토링 및 최적화를 가능하게 합니다. 수동 테스트보다 빠르고 지루함이 적어 빠른 반복 작업을 돕습니다.
숨겨진 요구사항 발견 및 문제 조기 해결
- 에지 케이스와 경계값에 대한 심층적인 사고는 종종 작업 내의 숨겨진 요구사항을 드러냅니다.
- 값이
nil인 경우, 사용자가 뒤로 가기 버튼을 클릭하는 경우, 호출하는 API가 다운된 경우 등 다양한 시나리오를 고려함으로써, 티켓 작성자가 간과했을 수 있는 가능성을 파악할 수 있습니다. - 이러한 요구사항을 조기에 발견할수록 블로커를 제기하거나, 방향을 변경하는 등 신속한 대응이 가능합니다.
동적 언어에서의 문서화 역할
- Ruby나 JavaScript와 같은 동적 언어에서 테스트는 인터페이스의 동작 방식을 보여주는 ‘살아있는 문서’ 역할을 할 수 있습니다.
- 사람이 읽기 좋게 작성된 테스트는 구현 코드를 직접 읽는 것보다 훨씬 빠르게 입력 및 반환 유형에 대한 정보를 제공합니다.
- 이는 ‘무엇을 하는지’에만 집중하고 ‘어떻게 하는지’는 신경 쓰지 않아도 되는 인지적 압축을 가능하게 합니다.
QA/QE 팀의 역량 집중
- 신뢰할 수 있는 테스트 스위트가 있다면, 전담 QA/QE 팀은 오직 사람만이 테스트할 수 있는 더 중요하고 복잡한 영역에 집중할 수 있게 됩니다.