시스템 테스트
“전체 시스템을 요구사항 기준으로 검증. 비기능 검증 포함.”
시스템 테스트란 무엇인가
시스템 테스트(System Test)는 통합이 완료된 전체 시스템을 하나의 완성품으로 보고, 처음에 합의한 요구사항을 충족하는지 종합적으로 검증하는 테스트다. 단위·통합 단계가 부품과 결합부를 다뤘다면, 시스템 테스트는 사용자 관점에서 시스템 전체가 의도한 목적을 달성하는지를 확인한다.
검증 대상은 운영 환경과 가능한 한 유사한 조건에 놓이며, 실제 업무 시나리오에 따라 끝에서 끝까지 흐름이 점검된다. 개별 기능의 정상 여부를 넘어, 그 기능들이 모여 하나의 시스템으로서 가치를 만드는지가 핵심 질문이다.
기능과 비기능을 함께 본다
시스템 테스트의 가장 큰 특징은 기능 요구사항과 비기능 요구사항을 함께 검증한다는 점이다. 기능 검증은 요구된 업무 처리가 올바른 결과를 내는지를 보지만, 비기능 검증은 그 결과를 얼마나 빠르고 안정적으로, 안전하게 제공하는지를 본다.
응답 속도와 처리량을 측정하는 성능 테스트, 높은 부하에서 견디는지를 보는 부하·스트레스 테스트, 취약점을 점검하는 보안 테스트가 모두 이 단계에 속한다. 비기능 요구사항은 명세에 누락되기 쉬워, 시스템 테스트 단계에서 비로소 부족함이 드러나는 경우가 많다.
요구사항이 검증의 기준선이다
시스템 테스트의 합격 여부는 개발자의 판단이 아니라 처음 정의된 요구사항에 의해 결정된다. 따라서 요구사항이 검증 가능한 형태로 명확하게 작성되어 있어야 테스트가 객관적 기준을 가질 수 있다.
측정 기준이 모호한 요구사항은 합격과 불합격의 경계를 흐리게 만들어, 시스템 테스트를 주관적 논쟁으로 변질시킨다. 요구사항 정의서와 테스트 케이스가 추적 가능하게 연결되어야, 무엇이 검증되었고 무엇이 빠졌는지를 명확히 짚을 수 있다.
| 구분 | 검증 항목 | 예시 |
|---|---|---|
| 기능 | 요구 업무 처리 정확성 | 업무 시나리오 흐름 |
| 비기능 | 속도·안정·안전 | 성능·부하·보안 테스트 |
| 기준선 | 요구사항 추적성 | 요구사항-테스트케이스 연결 |
| 환경 | 운영 근접 조건 | 실데이터 규모·부하 모사 |
운영에 가까운 환경에서
시스템 테스트는 가능한 한 실제 운영 환경에 근접한 조건에서 수행되어야 의미가 있다. 개발 환경에서는 드러나지 않던 데이터 규모·동시 접속·연동 시스템의 지연 같은 변수가 운영 환경에서 결함을 유발하기 때문이다.
실제 운영 데이터에 준하는 규모와 분포를 갖춘 테스트 데이터, 실제 트래픽을 모사한 부하 조건이 갖춰질수록 검증의 신뢰도가 올라간다. 환경의 차이를 좁히지 못하면, 시스템 테스트를 통과한 시스템이 운영 직후에 문제를 일으키는 상황이 반복된다.
인수 테스트로 가는 길목
시스템 테스트는 개발 조직이 책임지는 마지막 검증 단계이자, 발주 측이 수행하는 인수 테스트(Acceptance Test)로 넘어가기 직전의 관문이다. 시스템 테스트가 기술적 관점에서 요구사항 충족을 확인한다면, 인수 테스트는 사용자·발주 측 관점에서 실제 업무에 쓸 수 있는지를 최종 판단한다.
두 단계의 기준이 서로 어긋나면 인수 단계에서 예상치 못한 반려가 발생한다. 따라서 시스템 테스트 단계에서 발주 측의 검수 기준을 미리 반영해 두는 것이 인수 단계의 충돌을 줄이는 길이다.
품질을 종합적으로 확정한다
시스템 테스트는 앞선 모든 테스트 활동의 결과가 하나로 수렴하는 지점이다. 단위 테스트가 부품의 정확성을, 통합 테스트가 결합부의 건전성을 보장한 위에서, 시스템 테스트는 완성된 전체가 요구된 품질 수준을 만족하는지를 최종적으로 확정한다.
이 단계에서 발견되는 결함은 수정 범위가 넓고 일정 압박이 큰 시점에 나타나므로, 앞 단계의 검증이 충실할수록 시스템 테스트의 부담이 줄어든다. 결국 시스템 테스트의 안정성은 그 이전 단계들이 얼마나 견고했는가의 누적된 결과다.
관련 용어