사용자가 잠든 새벽, 우리 서버는 종종 가장 바쁘게 움직입니다.
하루 동안 쌓인 수백만 건의 거래 데이터를 정산하고, 통계를 내어 리포트를 만들고, 이자를 계산하는 등, 보이지 않는 곳에서 거대한 작업들이 자동으로 실행됩니다.
이러한 작업 단위를 ‘배치 프로세스(Batch Process)’라고 부릅니다.
이번 글에서는 QA가 이 조용한 거인의 작업을 어떻게 테스트해야 하는지 알아보겠습니다.

이 글에서 다루는 것
- 배치 프로세스의 개념과 중요성
- QA의 핵심 검증 영역: 데이터, 성능, 스케줄링
- ‘실패’ 시나리오 테스트의 중요성
- 배치 테스트 실무 꿀팁
‘배치 프로세스(Batch Process)’란 무엇인가요?
‘배치 프로세스’는 사용자의 직접적인 요청 없이, 정해진 시간에 자동으로 실행되어 대량의 데이터를 일괄 처리하는 작업입니다.
- 비유:
- 식당이 문을 닫은 후, 밤새 주방에서 다음 날 장사를 위해 대량의 재료를 다듬고, 육수를 끓이며, 반찬을 미리 만들어두는 과정과 같습니다.
- 손님(사용자)은 이 과정을 볼 수 없지만, 이 작업이 잘못되면 다음 날 장사(서비스)에 큰 차질이 생깁니다.
- 금융 시스템의 예시:
- 일일 거래 데이터 마감 및 정산
- 월별 고객 등급 산정
- 매일 아침 경영진에게 보고될 매출 리포트 생성
왜 ‘배치 테스트’가 중요한가요?
배치 프로세스의 실패는 눈에 즉시 보이지 않지만, 그 파급 효과는 매우 크기 때문입니다.
만약 일일 정산 배치가 실패한다면, 수많은 가맹점들이 돈을 제때 받지 못하는 심각한 문제로 이어질 수 있습니다.
또한, 잘못된 데이터로 리포트가 생성되면, 경영진이 완전히 잘못된 비즈니스 결정을 내릴 수도 있습니다.
QA는 ‘배치 테스트’에서 무엇을 검증해야 하나요?
1. 데이터 검증 (Data Verification): 가장 중요
배치 작업은 결국 ‘데이터를 변환’하는 과정입니다. QA는 이 변환의 모든 과정이 정확한지 검증해야 합니다.
- Before vs After:
- 배치 작업이 실행되기 ‘전(Before)’의 데이터베이스 상태를 스냅샷으로 저장합니다.
- 배치 작업이 실행된 ‘후(After)’의 데이터베이스 상태를 확인합니다.
- ‘Before’와 ‘After’의 데이터가, 우리가 기대했던 비즈니스 로직에 따라 정확하게 변경되었는지 SQL 쿼리 등을 통해 직접 비교 검증합니다.
- 예시 (일일 정산 배치):
- 작업 전
daily_transactions테이블의 총 거래액 합계(SELECT SUM(amount) ...)를 확인합니다. - 작업 후
daily_settlement_summary테이블에, 위 금액이 수수료를 제외하고 정확히 기록되었는지 확인합니다.
- 작업 전
2. 성능 및 완료 시간 검증 (Performance & Completion Time):
- 배치 작업은 정해진 시간 안에 반드시 끝나야 합니다.
- 예를 들어, ‘일일 마감 배치’는 다음 날 영업이 시작되기 전인 새벽 5시까지는 무조건 완료되어야 합니다.
- QA는 대용량의 테스트 데이터를 사용하여, 최악의 상황에서도 배치 작업이 제한 시간 내에 완료되는지 성능을 검증해야 합니다.
3. 스케줄링 검증 (Scheduling):
- 배치 작업이 정확히 약속된 시간에 실행되는지 확인합니다.
- “매월 1일 새벽 2시”에 실행되도록 설정했다면, 정말 그 시간에 동작하는지 확인해야 합니다.
- 특히, 주말이나 공휴일에는 실행되지 않아야 하는 등의 예외적인 스케줄링 규칙이 올바르게 동작하는지 검증하는 것이 중요합니다.
실무 꿀팁: ‘실패’ 시나리오를 반드시 테스트하라
배치 테스트에서 가장 중요한 것은, 배치 작업이 ‘실패했을 때’ 우리 시스템이 어떻게 대응하는지를 검증하는 것입니다.
- 꿀팁 1: 재처리(Re-processing) 테스트:
- 배치 작업이 100만 건의 데이터 중 50만 번째에서 실패했을 때, 어떻게 될까요?
- 처음부터 다시 실행해야 할까요, 아니면 실패한 50만 번째부터 이어서 할 수 있을까요?
- QA는 실패 후, 재처리 로직이 데이터를 중복 생성하거나 누락시키지 않는지 반드시 검증해야 합니다.
- 꿀팁 2: 의존성(Dependency) 테스트:
- “배치 A가 성공해야만, 배치 B가 시작된다”와 같은 의존성이 있다면, 의도적으로 배치 A를 실패시켜서 배치 B가 실행되지 않는 것을 확인해야 합니다.
- 꿀팁 3: 실패 알림(Alerting) 테스트:
- 새벽에 배치 작업이 실패했을 때, 담당자에게 즉시 알림(슬랙, 문자 등)이 가는지 확인하는 것은 매우 중요한 장애 대응 테스트입니다.
결론: 보이지 않는 심장을 지키는 일
배치 프로세스는 서비스의 눈에 보이지 않는 심장과도 같습니다.
이 심장이 멈추거나 잘못 뛰면, 서비스 전체가 위험에 빠지게 됩니다.
QA는 이 보이지 않는 영역의 안정성과 데이터 정확성을 보증하는 중요한 역할을 합니다.
성공적인 배치 테스트는, 사용자가 보지 않는 순간에도 우리 서비스가 신뢰할 수 있다는 것을 증명하는 과정입니다.
부록: 배치 테스트 미니 체크리스트 ✅
- 대용량 데이터 처리 시, 배치 작업이 제한 시간 내에 완료되는가?
- 배치 작업 전/후의 데이터 정합성(건수, 총합 등)이 완벽하게 일치하는가?
- 작업 실패 시, 담당자에게 즉시 알림이 오는가?
- 실패한 작업을 재처리했을 때, 데이터가 중복되거나 누락되지 않는가?
- 여러 배치 작업 간의 실행 순서 및 의존성 관계가 올바르게 동작하는가?
참고 자료 (References)
- AWS Batch (클라우드 환경의 배치 컴퓨팅 서비스 개념 소개)
- Red Hat – What is batch processing?