소프트웨어 테스팅은 단순히 "버그를 찾는 것"이 아니라, 소프트웨어가 올바르게 동작하는지 확인하고, 품질을 보장하며, 비즈니스 리스크를 줄이는 과정이다.
테스팅의 목적은 프로젝트의 정황(요구사항, 개발 방식, 리스크 수준 등)에 따라 달라질 수 있지만, 일반적으로 다음과 같은 핵심 목적을 가진다.
1. 요구사항, 사용자 스토리, 설계, 소스 코드 등 작업 산출물 평가
➡ 소프트웨어가 올바르게 개발되고 있는지 검토하는 과정
💡 예제:
1. 개발팀이 "비밀번호 복잡성 규칙"을 추가했지만, 요구사항 문서에는 해당 내용이 없음 → 요구사항 검토 필요
2. 코드 리뷰를 통해 "불필요한 중복 코드" 발견 → 개선점 제안
2. 장애 유발 및 결함(Bug) 식별
➡ 소프트웨어의 오류(Bug)를 사전에 찾아내서 장애(Defect) 발생을 예방하는 것
💡 예제:
1. 사용자가 회원가입할 때 "아이디는 영문+숫자만 가능"이라는 규칙이 있는데, 특수문자도 입력됨 → 결함 발견
2. 로그인 버튼을 클릭했을 때 응답 시간이 10초 이상 지연 → 성능 이슈
3. 테스트 대상에 필요한 커버리지 보장
➡ 테스트 커버리지(Test Coverage)란? 소프트웨어의 얼마나 많은 부분을 테스트했는지를 나타내는 지표
💡 예제:
1. "비밀번호 찾기" 기능이 있지만, 테스트 케이스에서 빠져 있음 → 기능 커버리지가 낮음
2. "구매 취소" 기능에서 카드 결제는 테스트했지만, 카카오페이는 테스트 안 함 → 테스트 범위 부족
4. 소프트웨어 품질 부족으로 인한 리스크 수준 완화
➡ 소프트웨어 품질이 낮아지면, 비즈니스적으로 큰 손실이 발생할 수 있음
💡 예제:
1. 은행 앱에서 이체 금액을 입력하지 않아도 결제가 되는 버그 발견 → 심각한 보안 리스크
2. 온라인 쇼핑몰에서 "주문 버튼"을 눌러도 반응 없음 → 매출 손실 위험
5. 요구사항 충족 여부를 확인하는 베리피케이션(Verification)
➡ 소프트웨어가 "올바르게 만들어졌는지"를 확인하는 과정 (주로 개발 단계에서 진행)
💡 예제:
1. "한 개의 상품만 구매할 수 있어야 한다"는 요구사항이 있었지만, 현재 코드에서는 여러 개 구매 가능 → 요구사항 불일치
2. 로그인 기능 구현 후, "소셜 로그인"이 요구사항에 포함되어 있는지 확인
6. 계약, 법률, 규제 요구사항 준수 여부를 확인하는 베리피케이션(Verification)
➡ 소프트웨어가 법적, 규제적 요구사항을 준수하는지 확인하는 과정
💡 예제:
1. 금융 서비스에서 2단계 인증(OTP)이 적용되지 않음 → 보안 규정 위반 가능성
2. 사용자의 이메일을 수집하지만, 동의 절차가 없음 → 개인정보 보호법 위반 가능성
7. 이해관계자가 정보에 입각한 결정을 내리도록 지원
➡ 테스트 결과를 기반으로 제품 출시 여부, 추가 개발 필요성 등을 결정할 수 있도록 지원
💡 예제:
1. 테스팅 결과, 결함이 많고 안정성이 부족 → 제품 출시 연기 결정
2. 주요 기능 테스트가 완료되고 안정적 → 제품 출시 결정
8. 테스트 대상의 품질에 대한 자신감 획득
➡ 소프트웨어 품질이 충분히 검증되었음을 확인하고, 팀과 이해관계자가 신뢰할 수 있도록 보장
💡 예제:
"모든 주요 기능 테스트 완료 + 결함 없음" → 팀과 고객이 안심하고 제품을 사용할 수 있음
9. 테스트 대상의 완성 여부와 이해관계자의 기대 충족 여부를 확인하는 밸리데이션(Validation)
➡ 소프트웨어가 "사용자의 기대에 맞게 만들어졌는지"를 확인하는 과정 (실제 사용 관점에서 검증)
💡 예제:
1. 쇼핑몰에서 "상품 검색" 기능을 테스트했는데, 검색 결과가 너무 느림 → 사용자의 기대 충족 X
2. SNS 앱에서 "친구 추가" 기능이 있지만, 버튼이 너무 작아서 불편함 → UX 개선 필요