SAP 단위 테스트, 재료 하나하나의 품질 검사

개발자가 자신이 만든 가장 작은 단위의 기능이 독립적으로 잘 작동하는지 검증하는 SAP 단위 테스트를, 매장에 들인 재료를 하나하나 검사하는 과정에 빗대어 정리했습니다.

안녕하세요, Rabbit입니다! 🐰

테스트 5단계의 세 번째, 단위 테스트입니다. 지난 프로토타입 테스트로 만들 기능의 모습을 확정했다면, 이제 개발자와 컨설턴트가 각자 ‘부품’을 만들기 시작합니다. 영업팀을 위한 주문 프로그램, 구매팀의 자동 입고 기능, 회계팀의 특별 리포트까지요.

그런데 이 부품들을 합쳐 ‘SAP’라는 큰 주방을 차리기 전에, 먼저 물어야 할 게 있습니다. “이 재료, 주방에 들이기 전에 신선한 거 맞아?” 오늘은 개발자가 자기 작업물을 스스로 검증하는 첫 관문, 단위 테스트를 다룹니다.

3줄 요약

  • 단위 테스트는 시스템의 가장 작은 단위(프로그램·함수)가 혼자서도 잘 작동하는지 보는 것이다.
  • 그 부품을 만든 개발자·컨설턴트가 직접, “내 작품은 내가 책임진다”는 자세로 검증한다.
  • 작은 단위가 완벽해야 나중에 합쳤을 때 문제를 줄일 수 있다.

단위 테스트란

단위 테스트(Unit Test)는 이름 그대로, 시스템을 이루는 가장 작은 단위(Unit)가 혼자서도 잘 작동하는지 보는 활동입니다. 여기서 ‘단위’는 프로그램 하나, 함수 하나 같은 아주 작은 조각입니다.

매장으로 비유하면, 들여온 식자재를 하나하나 꺼내 검사하는 것과 같습니다. 이 양파는 무르지 않았는지, 이 고기는 신선한지, 재료 하나하나의 품질만 따로 떼어 확인하는 거죠. 이때 옆 재료나 조리법은 신경 쓰지 않습니다. 지금은 오직 이 재료 하나의 상태만 중요하니까요.

이 검사는 누가 할까요? 바로 그 재료를 들여온 사람, 즉 해당 프로그램을 만든 개발자나 기능을 설정한 모듈 컨설턴트가 직접 합니다. 다른 사람에게 넘기기 전에 “내 작품은 내가 책임진다”는 자세로 품질을 스스로 보증하는 첫 단계입니다.

작은 문제를 미리 막으려면 작은 단위부터 완벽해야 한다는 것, 이게 단위 테스트의 핵심입니다. 좋은 재료가 모여야 좋은 요리가 나오니까요.

언제, 어떻게 하나

단위 테스트는 정해진 날 한 번 하고 끝나는 이벤트가 아닙니다. 개발자가 기능 개발을 끝낸 ‘직후’, 그리고 여러 부품을 합치는 통합 테스트 ‘전’에 반드시 끝내야 합니다. 개발이 진행되는 내내 반복되는 활동이죠.

예를 들어 개발자가 새 주문 프로그램을 완성했다고 합시다. 정상 입력일 때, 잘못된 값을 넣었을 때, 빈 값을 넣었을 때 등 다양한 상황을 하나씩 점검합니다. 그러다 특정 조건에서 오류가 발견되면 즉시 고치고, 처음부터 모든 점검을 다시 수행합니다. 모든 경우에서 ‘정상’ 판정을 받은 뒤에야 “좋아, 이건 다음 단계로 넘겨도 되겠다”가 되죠.

단위 테스트 vs 통합 테스트

많은 분이 단위 테스트와 다음 단계인 통합 테스트를 헷갈려 합니다. 차이를 분명히 하면 이렇습니다.

구분단위 테스트통합 테스트
비유재료 하나의 품질 검사재료들을 합쳐 요리가 되는지
대상프로그램·함수 등 작은 부품 하나여러 모듈이 연결된 업무 흐름 전체
목적개별 기능의 논리 오류 발견모듈 간 연동 오류 발견
시점개발 완료 직후단위 테스트 완료 후
참여자개발자·모듈 컨설턴트여러 컨설턴트·핵심 사용자

표 1. 단위 테스트와 통합 테스트의 차이

만약 단위 테스트 없이 바로 통합 테스트로 가면, 재료 검사도 안 하고 요리를 다 만들어버리는 것과 같습니다. 나중에 맛이 이상할 때 그게 양파 탓인지 고기 탓인지 양념 탓인지 찾으려면 훨씬 더 큰 시간과 비용이 듭니다.

Rabbit의 한 끗

단위 테스트는 작고 반복적이라 겉으로 잘 드러나지 않지만, 프로젝트 전체의 품질을 떠받치는 주춧돌입니다. 개발자 스스로 자기 코드의 품질을 보증하는 이 과정을 통해, 비로소 결함 없는 수많은 좋은 부품을 확보하게 됩니다.

다음 글에서는 이 검증된 부품들을 한데 모아, 서로 잘 맞물려 돌아가는지 확인하는 통합 테스트를 다루겠습니다. 😎

더 읽어보기