티스토리 뷰

1. 갑자기 테스트?

파이프라인 기능은 잔뜩 만들었다.

메달리온, maintenance, 헬스체크, 대시보드, Slack 알림/리포팅까지.

근데 이게 진짜 엔지니어링 품질인지 볼때 제일 눈에 띄는 빈자리가 테스트/CI 로직의 부재였다.

 

피드백을 받았던 내용중에 데엔 특성상 데이터 로직이 조용히 깨지는게 제일 무섭다고 하셨던 부분이 있었다.. 

 

그래서 '테스트 + Github에 올릴 때마다 자동 검사' 하는 로직을 작게 붙였다.

처음 해보는거라, 개념부터 간단하게 정리해봤다.


2. 단위 테스트가 뭐냐

코드(작은 함수)가 내 의도대로 도는지 자동으로 검사하는 코드이다.

비유: 함수=자판기. "콜라 버튼 누르면 콜라 나와야 한다"를 매번 손으로 확인하는 대신, 
"콜라 버튼 → 콜라 나오나?"를 검사하는 작은 로봇을 만들어 두는 거다.

이렇게 하면 나중에 코드를 고쳤을 때 망가진 걸 자동으로 즉시 알 수 있다.


3. `assert` - 검사의 핵심

코드를 보면 다 `assert` 를 사용한다.

`assert A == B` = "A 랑 B가 같아야 한다." 를 의미한다.

assert to_topic(click_이벤트) == "ad-clicks"
#       "click 이벤트의 토픽은 ad-clicks여야 한다"

4. `pytest` = 테스트 실행기

터미널에 `pytest` 한 줄 치면:

  1. `test/` 폴더에서 `test_*.py` 파일을 다 찾고
  2. `test_`로 시작하는 함수를 다 실행하고
  3. 통과/실패를 집계 → `10 passed (0.03s)`

5. 실제로 만든 검사들

파일 뭘 검사하는가
tests/test_schema.py 이벤트가 올바른 토픽으로 가는지 (click → ad-clicks), JSON으로 잘 변환되는지
tests/test_config.py 설정값(예: click 1건당 request 50건 합성- 이 숫자 틀어지면 데이터가 어긋남)
왜 이것만?
이 함수들은 Spark/Kafka 없이 도는 순수 계산이라 검사가 빠르고 안 깨진다.
Spark 잡 검사는 SparkSession이 필요해 무거워서 → 향후 과제로 미뤘다. (작아서가 아니라, 첫 CI는 가볍고 안정적인 게 맞아서.)

6. CI가 뭐냐

CI = 코드를 올릴 때마다 자동으로 테스트를 돌려주는 것.(Continuous Integration)

비유: 숙제를 내면 선생님이 자동 채점해서 통과/빵점을 바로 알려주는 것.

왜? 사람이 테스트 깜빡하지 않게. 

6-1. Github Actions = 내가 쓴 CI 도구

Github에 코드를 push 하면:

  1. 내가 적어둔 레시피 `.github/workflows/ci.yml`을 읽고
  2. 깨끗한 가상 컴퓨터를 하나 띄워서
  3. 파이썬 깔고 → pytest 자동 실행
  4. 결과를 커밋 옆에 결과를 표시

7. 전체 흐름

코드 수정 → git push → GitHub Actions가 자동으로 pytest 실행
                            ├─ 다 통과 → 커밋 옆 초록 ✅
                            └─ 하나라도 실패 → 빨강 ❌ (PR이면 "머지하지 마" 신호)

8. 실제 구현 화면

  • PR에서 확인한 결과

 

  • Actions 탭에서 확인한 부분

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/07   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함