본문으로 건너뛰기
QA-Lab
중급20

비기능 테스트란 무엇인가: 기능이 맞는 것과 충분한 것은 다르다

"잘 동작한다"와 "빠르고 안전하고 누구나 쓸 수 있다"는 서로 다른 질문이다. 비기능 테스트의 다섯 축을 개관하며 이 모듈의 지도를 그린다.

  • #비기능테스트
  • #품질속성

개념

"동작한다"와 "충분하다"는 다른 질문이다

모듈 1(레슨 4)에서 배운 테스트 유형 중, 지금까지 이 강의 대부분은 기능 테스트(Functional Testing) — "이 기능이 명세대로 동작하는가"를 다뤄왔다. 이 모듈은 다른 질문을 던진다.

기능 테스트: "로그인 버튼을 누르면 로그인이 되는가?"
비기능 테스트: "로그인이 1만 명이 동시에 몰려도 3초 안에 되는가?"
              "로그인 정보가 안전하게 전송되는가?"
              "시각장애인도 스크린 리더로 로그인할 수 있는가?"

기능은 완벽히 맞아도, 느리거나, 안전하지 않거나, 일부 사용자가 못 쓴다면 그 소프트웨어는 실제로 쓸모가 없다.

비기능 테스트의 다섯 축

이 모듈에서 다루는 다섯 가지 관점을 먼저 지도로 그려본다.

1. 성능(Performance) — 얼마나 빠르고, 얼마나 많은 부하를 견디는가 (레슨 2~4)
2. 보안(Security) — 공격과 취약점에 얼마나 안전한가 (레슨 5~6)
3. 접근성(Accessibility) — 장애가 있는 사용자도 쓸 수 있는가 (레슨 7)
4. 시각적 정확성(Visual) — 화면이 의도한 대로 보이는가 (레슨 8)
5. 호환성(Compatibility) — 다양한 환경에서 일관되게 동작하는가 (레슨 8)

왜 이 관점들이 자주 뒤로 밀리는가

기능 결함은 화면에 바로 드러나서 눈에 띄지만, 비기능 문제는 특정 조건에서만 드러난다 — 사용자가 갑자기 몰릴 때(성능), 공격자가 시도할 때(보안), 스크린 리더 사용자가 접근할 때(접근성). 평소에는 안 보이기 때문에 일정이 촉박하면 가장 먼저 생략되는 영역이 되기 쉽다. 하지만 문제가 실제로 터지면 그 파급력은 기능 버그보다 훨씬 크다 — 서비스 전체 장애(성능), 개인정보 유출(보안), 법적 분쟁(접근성, 모듈 8에서 배운 규제 산업일수록 더 그렇다)으로 이어질 수 있다.

비기능 테스트도 리스크 기반으로 접근한다

모듈 4(레슨 2)에서 배운 위험기반 테스트 원칙이 여기서도 그대로 적용된다. 모든 서비스가 다섯 축을 똑같은 깊이로 다룰 필요는 없다 — 결제 서비스는 보안에, 대규모 트래픽 서비스는 성능에, 공공기관 서비스는 접근성에 더 무게를 둬야 한다.

이 모듈의 목표는 전문가가 되는 것이 아니다

성능·보안·접근성은 각각 전담 전문가가 있을 만큼 깊은 영역이다. 이 모듈의 목표는 QA가 그 전문가가 되는 것이 아니라, "이 관점에서 뭔가 놓치고 있을 수 있다"는 감각을 갖추고, 최소한의 기초 검증을 스스로 할 수 있게 되는 것이다.

실무에서 왜 필요한가

"기능 테스트는 다 통과했는데 왜 배포 못 하나요?"라는 질문에, 비기능 테스트의 언어로 "동시 접속자 늘어나면 응답 시간이 급격히 느려질 수 있습니다"거나 "스크린 리더로 이 폼을 완성할 수 없습니다"라고 구체적으로 답할 수 있는 QA는, 서비스 전체의 완성도를 훨씬 폭넓게 책임질 수 있다.

실습 과제

과제 1 — 다섯 축에 배정하기 (10분)

다음 세 가지 잠재적 문제를 성능·보안·접근성·시각적 정확성·호환성 중 어느 축에 해당하는지 배정한다.

  1. "블랙프라이데이 세일 시작 순간 서버가 다운됐다"
  2. "SQL 인젝션 공격으로 사용자 정보가 유출될 수 있는 코드가 있었다"
  3. "다크 모드에서 버튼 글자가 배경색과 겹쳐 안 보인다"

과제 2 — 우리 서비스의 우선순위 정하기 (10분)

가상의 서비스(예: 병원 예약 시스템)를 하나 골라, 다섯 축 중 어느 것에 가장 높은 우선순위를 둬야 할지 판단하고 이유를 적는다.

자가 체크리스트

  • 기능 테스트와 비기능 테스트가 다른 질문을 다룬다는 것을 설명할 수 있다
  • 비기능 테스트의 다섯 축을 나열할 수 있다
  • 비기능 문제가 왜 일정 압박 속에서 자주 생략되는지, 그리고 그 위험을 설명할 수 있다
  • 비기능 테스트도 리스크 기반으로 우선순위를 정해야 하는 이유를 설명할 수 있다

흔한 실수

  • "기능이 다 되니까 끝났다"고 판단한다. 비기능 요소가 빠지면 실사용에서 심각한 문제가 될 수 있다.
  • 모든 서비스에 다섯 축을 똑같은 깊이로 적용하려 한다. 서비스 특성에 맞게 우선순위를 정해야 리소스를 효율적으로 쓸 수 있다.
  • 비기능 테스트를 "시간이 남으면 하는 것"으로 취급한다. 리스크가 큰 영역은 계획 단계(모듈 4)에서부터 포함시켜야 한다.

참고 자료