소프트웨어 QA를 공부하다 보면 기능 테스트(Functional Testing)와 비기능 테스트(Non-Functional Testing)라는 용어를 자주 접하게 됩니다.
이름만 보면 비슷해 보이지만 실제로는 확인하는 대상이 다릅니다. 쉽게 말하면 기능 테스트는 “무엇을 할 수 있는가?”를 확인하고, 비기능 테스트는 “얼마나 잘 작동하는가?”를 확인하는 테스트라고 생각하면 이해하기 쉽습니다.
오늘은 QA 입문자를 위해 기능 테스트와 비기능 테스트의 차이점과 실제 사례를 알아보겠습니다.
기능 테스트란 무엇일까?
기능 테스트는 소프트웨어의 각 기능이 요구사항대로 정상적으로 작동하는지 확인하는 테스트입니다.
예를 들어 쇼핑몰 웹사이트를 테스트한다고 생각해 보겠습니다.
회원가입을 할 수 있는지, 로그인이 정상적으로 되는지, 상품을 검색할 수 있는지, 장바구니에 상품을 추가할 수 있는지, 결제가 정상적으로 진행되는지 등을 확인합니다.
즉, 사용자가 서비스를 이용하면서 수행하는 구체적인 기능의 동작 여부를 확인하는 것이 기능 테스트의 핵심입니다.
기능 테스트의 대표적인 예
로그인 기능을 테스트한다면 다음과 같은 항목을 확인할 수 있습니다.
- 정상적인 아이디와 비밀번호로 로그인되는가?
- 잘못된 비밀번호를 입력하면 오류 메시지가 나타나는가?
- 아이디를 입력하지 않으면 안내 메시지가 표시되는가?
- 로그아웃 버튼을 누르면 정상적으로 로그아웃되는가?
이처럼 기능 테스트는 예상한 결과와 실제 결과가 일치하는지 확인하는 방식으로 진행됩니다.
비기능 테스트란 무엇일까?
비기능 테스트는 기능의 동작 여부보다는 소프트웨어의 품질과 성능을 확인하는 테스트입니다.
예를 들어 쇼핑몰에서 상품 검색 기능이 정상적으로 작동한다고 해도 검색 결과가 10초 후에 나온다면 사용자는 불편함을 느낄 수 있습니다.
이때 단순히 “검색 기능이 작동한다”는 것만으로는 서비스 품질을 판단하기 어렵습니다.
따라서 얼마나 빠르게 결과가 나오는지, 동시에 많은 사용자가 접속했을 때도 안정적으로 작동하는지 등을 확인해야 합니다.
이런 테스트가 비기능 테스트에 해당합니다.
비기능 테스트에는 어떤 종류가 있을까?
비기능 테스트에는 여러 종류가 있습니다.
성능 테스트
사용자가 많아졌을 때도 서비스가 안정적으로 작동하는지 확인합니다.
응답 속도, 처리량, 동시 사용자 수 등을 확인할 수 있습니다.
보안 테스트
사용자의 개인정보나 시스템이 안전하게 보호되는지 확인합니다.
권한이 없는 사용자가 다른 사용자의 데이터에 접근할 수 있는지 등을 확인할 수 있습니다.
사용성 테스트
서비스를 사용하기 편리한지 확인합니다.
버튼을 쉽게 찾을 수 있는지, 메뉴가 이해하기 쉬운지 등 실제 사용자의 관점에서 확인합니다.
호환성 테스트
다양한 환경에서 프로그램이 정상적으로 작동하는지 확인합니다.
웹 서비스라면 Chrome, Safari, Edge 등 여러 브라우저를 확인할 수 있고, 모바일 앱이라면 다양한 운영체제와 기기를 테스트할 수 있습니다.
기능 테스트와 비기능 테스트의 차이
두 테스트의 차이를 간단하게 정리하면 다음과 같습니다.
| 구분 | 기능 테스트 | 비기능 테스트 |
|---|---|---|
| 핵심 질문 | 기능이 제대로 작동하는가? | 얼마나 잘 작동하는가? |
| 주요 대상 | 기능과 요구사항 | 성능, 보안, 사용성 등 |
| 예시 | 로그인, 검색, 결제 | 속도, 안정성, 보안 |
| 목적 | 기능의 정상 동작 확인 | 서비스 품질 확인 |
예를 들어 로그인 기능을 생각해 보면 쉽게 이해할 수 있습니다.
기능 테스트에서는 “아이디와 비밀번호를 입력하면 정상적으로 로그인되는가?”를 확인합니다.
반면 비기능 테스트에서는 “동시에 수천 명이 로그인해도 서비스가 정상적으로 작동하는가?” 또는 “로그인 과정에서 개인정보가 안전하게 보호되는가?” 등을 확인할 수 있습니다.
QA에서 두 테스트가 모두 중요한 이유
실제 서비스에서는 기능만 정상적으로 작동한다고 해서 좋은 소프트웨어라고 할 수 없습니다.
아무리 결제가 정상적으로 된다고 해도 결제 화면이 너무 느리거나 개인정보가 제대로 보호되지 않는다면 사용자는 서비스를 신뢰하기 어렵습니다.
반대로 속도가 빠르고 보안이 뛰어나더라도 로그인이나 결제 같은 핵심 기능이 정상적으로 작동하지 않는다면 서비스 자체를 이용할 수 없습니다.
따라서 QA에서는 기능과 품질을 함께 확인하는 것이 중요합니다.
마무리
기능 테스트와 비기능 테스트의 차이는 처음에는 어렵게 느껴질 수 있지만 핵심은 간단합니다.
기능 테스트는 “기능이 제대로 작동하는가?”를 확인하고, 비기능 테스트는 “그 기능이 얼마나 안정적이고 편리하게 작동하는가?”를 확인합니다.
QA 직무를 준비하고 있다면 이 두 개념을 확실하게 구분해 두는 것이 좋습니다.
다음에는 QA 실무에서 자주 사용하는 Smoke Test와 Sanity Test의 차이점을 알아보겠습니다. 이름은 비슷하지만 사용하는 목적에는 차이가 있기 때문에 함께 알아두면 좋습니다.