기능 테스트와 비기능 테스트: 요구사항부터 품질 게이트까지
기능 테스트와 비기능 테스트의 검증 범위, ISO/IEC 9126 품질 특성, 자동화·관찰성·품질 게이트 운영 방법을 정리한다.
2026-08-14 · 최초 발행 2025-12-14
요구사항 검증과 운영 품질은 같은 테스트가 아니다
기능 테스트와 비기능 테스트는 소프트웨어 품질보증에서 서로 다른 질문에 답한다. 기능 테스트는 시스템이 제공해야 할 동작이 요구사항에 맞는지 검증하며, 비기능 테스트는 성능·신뢰성·사용성 같은 품질 속성이 운영 환경의 제약 아래 목표 수준(SLO/SLA)을 충족하는지 확인한다.
기능 테스트에서는 입력부터 처리, 출력까지의 흐름과 비즈니스 규칙, 예외 처리, 통합 인터페이스가 주요 검증 대상이다. 비기능 테스트는 성능, 부하, 스트레스, 사용성, 보안성 등 제품 특성을 다룬다.
ISO/IEC 9126의 품질 특성 체계는 이 구분을 정리하는 기준으로 산업 전반에서 준용된다. 기능성은 적합성, 정확성, 준수성, 상호운용성, 보안성으로 나뉘며 기능 테스트의 1차 검증 범주에 해당한다. 비기능성은 신뢰성, 사용성, 효율성, 유지보수성, 이식성을 포함한다. 이 체계는 ISO/IEC 25010 품질 모델로 확장 적용할 수 있으나 최신 정보 확인이 필요하다.
CI/CD, 클라우드, 마이크로서비스 환경에서는 테스트 자동화와 관찰성, SLA 연계가 품질 확보의 필수 요소로 자리 잡는다.
테스트 범위를 운영 가능한 체계로 연결하기
요구사항은 테스트 항목으로 추적돼야 한다. 기능 요구사항은 테스트 케이스에, 비기능 요구사항은 측정 지표(SLI/SLO)에 연결한다. 이 연결은 변경 관리와 회귀 범위를 판단하는 근거가 된다.
환경과 데이터도 기능·비기능 테스트에서 준비 방식이 다르다. 기능 검증에는 스테이징 또는 계약 기반 환경과 합성·마스킹 테스트 데이터가 필요하다. 비기능 검증은 실운영에 준하는 인프라 스펙, 트래픽 프로파일, 워크로드 모델링을 요구한다.
자동화의 대상도 구분된다. 기능 테스트는 단위·통합·계약·UI 테스트를 CI 파이프라인에 연동한다. 비기능 테스트는 부하, 스트레스, 지속(Soak), 사용성, 보안 스캔을 자동화하고 결과를 수집·시각화한다.
로그, 메트릭, 트레이스를 통한 가시성은 공통 기반이다. 특히 비기능 테스트에서는 응답시간, 처리량, 오류율, 자원 사용률, 포화 지표를 계량화해야 한다. 결함 처리 순서는 영향도×발생확률 평가로 정하고, 성능·신뢰성 결함은 재현 절차와 환경 스냅샷을 보존한다.
품질 게이트까지 이어지는 실행 흐름
입력은 기능·비기능 요구사항, 성능 목표치, 트래픽 프로파일이다. 테스트 설계와 환경 준비, 실행, 관찰, 분석, 결함 관리를 거쳐 통과·미통과 판정, 품질 지표, 개선 백로그를 만든다.
환경이 일치하지 않으면 환경·데이터를 보정한 뒤 다시 실행한다. 비결정적(flake) 테스트는 격리·재시도·시드 고정으로 다룬다.
서비스 형태에 따라 달라지는 검증 초점
신규 웹 서비스에서는 가입→검색→결제 같은 주요 사용자 여정을 엔드투엔드로 검증하고, 계약 테스트로 외부 API의 안정성을 확보한다. 비기능 측면에서는 95퍼센타일 응답시간 300ms, 동시 사용자 5만, 장애조치(Failover) 연습을 검증 범위로 둔다.
금융 결제 시스템은 정합성, 이중 청구 방지, 환불 규칙, 트랜잭션 경계를 기능 테스트로 확인한다. 비기능 테스트에서는 지연·시간동기·락 경합 하의 스트레스 테스트와 보안성·준수성 점검을 수행한다.
모바일 앱에서는 오프라인 상태 흐름, 재시도 로직, 푸시 처리를 검증한다. 해상도와 OS로 구성한 단말 매트릭스에서 사용성을 확인하고, 배터리와 메모리 효율을 측정한다.
마이크로서비스 전환 시에는 계약·합성 테스트로 서비스 경계를 검증하고 회귀 파이프라인을 구축한다. 카나리 배포와 지속 부하(Soak)는 메모리 릭과 스루풋 열화를 탐지하는 데 사용한다.
기능과 품질 속성을 보는 관점
| 지표 | 기능테스트 관점 | 비기능테스트 관점 | 측정 포인트 |
|---|---|---|---|
| 성능 | 기능 경로의 논리적 효율성 확인 | 응답시간, 처리량, 포화 한계 검증 | p95/p99, TPS, 큐 대기시간 |
| 확장성 | 기능 플로우의 스케일-세이프 디자인 검증 | 수평/수직 확장 시 성능 선형성 검증 | 오토스케일 지연, 노드 추가 대비 TPS 변화 |
| 일관성 | 트랜잭션/정합성 규칙 준수 검증 | 장애/네트워크 분할 시 최종 일관성 보장 검증 | 커밋 지연, 재시도율, 보상 트랜잭션 발생 |
| 안정성 | 예외 처리·복구 시나리오 검증 | 장기 부하·자원 누수·스로틀링 검증 | GC/메모리 릭, 에러율 드리프트 |
| 운영 편의 | 로그·진단 메시지 충분성 검증 | 모니터링·알림·SLO 연계 검증 | 대시보드 커버리지, 경보 정확도 |
배포 판단에 반영할 테스트 운영
기능 요구사항은 테스트 케이스로, 비기능 요구사항은 정량 지표(SLI/SLO)로 정의하고 수용 기준과 실패 기준을 명시한다. 기능 검증은 단위·통합·계약·UI 테스트를 조합해 테스트 피라미드를 설계한다. 비기능 검증은 부하·스트레스·Soak·사용성·보안 테스트의 범위와 JMeter, k6, Locust 등의 도구를 결정한다.
기능 테스트 환경에는 스테이징, 모킹, 시드 데이터, 마스킹 정책을 적용한다. 비기능 테스트는 실운영 유사 토폴로지, 트래픽 재현, 장애 시나리오(넷패턴, 카오스)를 구성한다.
실행 과정에서는 자동화와 함께 성능·리소스 메트릭을 수집하고, 로그와 트레이스의 상관관계를 분석한다. 실패 원인은 기능 결함, 환경 이슈, 테스트 플래키로 유형화해 재현성을 확보한다. 수정 이후에는 위험 기반 우선순위에 따라 회귀 테스트를 수행하고, 품질 게이트 기준으로 배포를 결정한다.
사내 CI 파이프라인 기준 가정에서 결함 누락률은 2040% 감소하고 주요 시나리오 MTTR은 1530% 단축될 수 있다. 성능 SLA 준수율 99% 수준 달성과 릴리스 리드타임 20~30% 단축도 기대 효과로 제시된다. 요구사항 추적성은 변경 리스크의 가시성을 높이고, 운영 이슈의 사전 검출은 고객 경험 품질과 신뢰성을 높인다.