테스팅은 소프트웨어 엔지니어링입니다

Testing is software engineering

작성자
발행일
2025년 12월 16일

핵심 요약

  • 1 테스팅은 코드를 설계하고, 변경에 대한 확신을 주며, 미래 개발자들이 코드를 이해하는 방식을 형성하는 엔지니어링의 필수적인 부분입니다.
  • 2 테스트를 조기에 작성하면 인터페이스에 대한 피드백을 얻고, 숨겨진 요구사항을 발견하며, 코드 품질을 향상시켜 개발 효율성을 높일 수 있습니다.
  • 3 신뢰할 수 있는 테스트 스위트와 CI는 개발자의 자신감을 높이고, 효율적인 리팩토링 및 기능 개발을 가능하게 하여 궁극적으로 더 나은 소프트웨어를 만듭니다.

도입

소프트웨어 개발에서 테스팅은 종종 시간적 여유가 있을 때 하거나 QA 팀에 미루는 부차적인 작업으로 간주됩니다. 그러나 본문은 테스팅이 엔지니어링과 분리된 별개의 분야가 아니라, 소프트웨어 엔지니어링의 본질적인 부분임을 강조합니다. 테스트는 코드의 설계 방향을 제시하고, 변경에 대한 확신을 부여하며, 향후 개발자들이 코드를 이해하는 방식에 깊은 영향을 미칩니다. 테스팅을 개발 과정의 핵심 요소로 인식하는 것이 중요합니다.

테스팅의 핵심 가치와 이점개발 과정 초기에 테스팅을 통합하는 것은 다양한 측면에서 소프트웨어 품질과 개발 효율성을 극대화합니다.

인터페이스 설계 및 조기 피드백 확보

  • 테스트는 개발 중인 인터페이스를 외부 관점에서 처음으로 고려할 기회를 제공합니다.
  • 테스트를 늦게 작성하거나 AI에 의존하여 사후에 생성하는 경우, 이러한 귀중한 피드백 기회를 상실하게 됩니다.
  • 초기에 피드백을 반영하는 것이 PR 검토에서 동료에게 받는 것보다 훨씬 용이하며, 테스트하기 어려운 코드는 종종 설계가 미흡한 코드임을 시사합니다.

개발자의 신뢰와 효율성 증대

  • CI(지속적 통합)에서 성공적인 ‘초록색 체크마크’를 신뢰할 수 있다는 것은 개발자에게 큰 힘이 됩니다.
  • 이를 통해 의존성 업데이트, 리팩토링, 기존 작업 위에 새로운 기능 구축 등을 더 쉽게 수행할 수 있습니다.
  • PR을 열기 전에도 핵심 동작이 잘 테스트되어 있다는 확신은, 아무것도 망가뜨리지 않았음을 보장하며 리팩토링 및 최적화를 가능하게 합니다. 수동 테스트보다 빠르고 지루함이 적어 빠른 반복 작업을 돕습니다.

숨겨진 요구사항 발견 및 문제 조기 해결

  • 에지 케이스와 경계값에 대한 심층적인 사고는 종종 작업 내의 숨겨진 요구사항을 드러냅니다.
  • 값이 nil인 경우, 사용자가 뒤로 가기 버튼을 클릭하는 경우, 호출하는 API가 다운된 경우 등 다양한 시나리오를 고려함으로써, 티켓 작성자가 간과했을 수 있는 가능성을 파악할 수 있습니다.
  • 이러한 요구사항을 조기에 발견할수록 블로커를 제기하거나, 방향을 변경하는 등 신속한 대응이 가능합니다.

동적 언어에서의 문서화 역할

  • Ruby나 JavaScript와 같은 동적 언어에서 테스트는 인터페이스의 동작 방식을 보여주는 ‘살아있는 문서’ 역할을 할 수 있습니다.
  • 사람이 읽기 좋게 작성된 테스트는 구현 코드를 직접 읽는 것보다 훨씬 빠르게 입력 및 반환 유형에 대한 정보를 제공합니다.
  • 이는 ‘무엇을 하는지’에만 집중하고 ‘어떻게 하는지’는 신경 쓰지 않아도 되는 인지적 압축을 가능하게 합니다.

QA/QE 팀의 역량 집중

  • 신뢰할 수 있는 테스트 스위트가 있다면, 전담 QA/QE 팀은 오직 사람만이 테스트할 수 있는 더 중요하고 복잡한 영역에 집중할 수 있게 됩니다.

결론

품질은 개발의 마지막 단계에 덧붙이거나 외주를 주는 것이 아니라, 소프트웨어 엔지니어링의 핵심적인 부분입니다. 테스팅을 진지하게 받아들이고 개발 프로세스 초기에 통합함으로써, 개발자는 더 나은 소프트웨어를 설계하고, 스트레스 없이 변경을 수행하며, 잠재적 블로커가 되기 전에 숨겨진 요구사항을 발견할 수 있습니다. 마치 글쓰기가 사고의 과정이고 좋은 글쓰기가 명확한 사고를 의미하듯이, 테스트를 작성하는 것은 코드에 대해 생각하는 것이며, 좋은 테스트를 작성하는 것은 명확한 코드를 작성하는 것과 같습니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!