3. 안정성(reliability)
시스템이 예외 상황이나 장애 상황에서도 얼마나 일관되게 동작할 수 있는지를 정의하는 요구사항입니다. ‘서버 한 대가 멈춰도 서비스가 유지되는가’, ‘네트워크 지연이 발생했을 때 요청이 정상적으로 복구되는가’, ‘타임아웃이나 실패 시 리소스가 제대로 해제되는가’와 같은 조건이 여기에 포함됩니다. 안정성 문제는 대부분 느려짐이 아니라 멈춤으로 나타납니다. 그리고 한 번 발생하면 복구 비용이 매우 큽니다. 테스트 환경에서는 잘 드러나지 않기 때문에 의식적으로 검증하지 않으면 놓치기 쉽습니다.
4. 보안(security)
악의적인 접근이나 데이터 유출로부터 시스템이 얼마나 안전하게 보호되는지를 정의하는 요구사항입니다. ‘인증, 인가, 암호화, 접근 제어, 입력 검증’ 등이 여기에 포함됩니다. ‘민감한 데이터가 암호화되어 저장되는가’, ‘권한 없는 사용자의 접근을 차단하는가’, ‘SQL 인젝션이나 크로스 사이트 스크립트(XSS) 같은 공격에 취약하지 않은가’ 등이 대표적인 예입니다. 보안 요구사항은 기능 테스트로는 거의 검증되지 않습니다. 기능이 잘 돌아간다는 이유로 넘어가기 쉽지만, 실제 사고는 대부분 이 영역에서 발생합니다.