[SI] 프로젝트 8주차

소복치·2025년 2월 13일

오늘부터 단위테스트가 시작되었다.

원래는 개발 -> 단위테스트 -> 통합테스트 이렇게 순서대로 진행하는것이 기본이라고 하던데
이번 프로젝트는 시간상 불가능 할 것으로 보인다는 팀장님들의 지시로

개발을 진행하면서 단위테스트까지 같이 진행하게 되었다.

1. 단위테스트란?

단위 테스트는 소프트웨어의 가장 작은 단위(함수, 메서드, 클래스 등)를 독립적으로 테스트하는 과정
즉, 코드의 개별 구성 요소가 올바르게 동작하는지 검증하는 테스트 기법

단위 테스트는 테스트 우형에 따라 논리, 통합 등으로 나눌 수 있다.

논리 단위 테스트

한 개의 메서드(함수)에 집중하여 테스트하는 방법
→ Mock이나 Stub을 사용해 외부 요소를 차단하고, 오직 특정 메서드가 정상 작동하는지 검증

통합 단위 테스트

실제 운영 환경(또는 그 일부)에서 컴포넌트 간의 연동을 테스트하는 방법
→ 예를 들어, 데이터베이스(DB), API, 파일 시스템 등의 실제 연결을 포함한 테스트

즉, 단위테스트는 "작은 부품"을, 통합 단위 테스트는 "전체 시스템"을 검증하는 과정!

2. 단위테스트가 필요한 이유

  • 버그 조기 발견 : 개발 초기에 오류를 찾아서 비용 절감 가능
  • 코드 품질 향상 : 리팩토링 및 유지보수가 쉬워짐
  • 안정성 보장 : 코드 변경 후에도 기존 기능이 정상 작동하는지 확인 가능
  • 자동화 가능 : 지속적인 통합에 활용 가능
  • 개발 속도 향상 : 일찍 문제를 발견하면 수정 시간이 줄어듦

3. 단위테스트 시나리오 샘플과 작성법

테스트할 기능을 명확히 정의

어떤 함수를 테스트할 것인지 결정
함수의 입력값과 기대 결과를 설정

테스트 케이스 정의 (경계값, 예외 처리 포함)

올바른 입력 → 예상한 결과 반환 확인
잘못된 입력 → 적절한 오류 발생 여부 확인

자동화된 테스트 코드 작성

unittest, pytest 등의 프레임워크 사용

결론,

  • 단위 테스트 시나리오는 "입력값 → 기대 결과"를 체계적으로 정의하는 것
  • Python의 unittest를 활용해 자동화된 테스트 작성 가능
  • 테스트를 잘 설계하면 유지보수와 디버깅이 쉬워짐

우리는 기존에 있는 기능들을 하나하나 체크하기위해 일부러 오류를 내어
잘못된 결과와, 올바른 결과 두가지를 모두다 테스트 했다.

  • DB 연동이 되는지 / 연동이 되지않았을때
  • 적재하려고 하는 테이블에 잘 적재가 되는지 / 안되는지
    등등..

따로 자동화된 테스트 코드를 작성하지는 않고, 우리가 사용하고있던 코드에서 빠르게 진행하였다.
처음해보는 단위테스트인지라..
주단위로 개발을 하고, 개발된 내용을 테스트해서 버그가 날 확률을 예측해서 이것저것 테스트를
진행해본다는게 쉽지가 않았다..

다음주도.. 파이팅..

profile
오늘 터져도내일 다시극복

0개의 댓글