요구사항 기반 테스팅 (Requirements-based Testing)

요구사항 기반 테스팅은 소프트웨어 요구사항 명세서(SRS)에 명시된 기능적, 비기능적 요구사항을 검증하는 테스트 기법이다.
이 방법은 개발된 소프트웨어가 사용자와 개발 조직 간의 공식 합의에 따른 기능을 정확히 수행하는지 확인하는 것을 목표로 한다.

실제 예시를 통해 더 구체적으로 살펴보자.
온라인 쇼핑몰의 로그인 기능에 대한 요구사항이 있다고 가정해보자:
"사용자는 이메일과 비밀번호로 로그인할 수 있어야 한다. 이메일은 올바른 형식이어야 하며, 비밀번호는 최소 8자 이상이어야 한다. 로그인 실패 시 적절한 오류 메시지를 표시해야 한다."

이러한 요구사항을 기반으로 테스트를 설계하고 수행하는 과정을 단계별로 살펴보면:

  1. 요구사항 분석 단계
    먼저 요구사항을 세세하게 분석한다.
    위의 예시에서 다음과 같은 핵심 요소들을 도출할 수 있다:

    • 이메일 형식 검증
    • 비밀번호 길이 검증
    • 로그인 성공/실패 처리
    • 오류 메시지 표시
  2. 테스트 케이스 도출 단계
    각 요구사항 요소별로 테스트 케이스를 작성한다.
    예를 들어:

    • 올바른 이메일 형식으로 로그인 시도
    • 잘못된 이메일 형식으로 로그인 시도
    • 8자 미만의 비밀번호로 로그인 시도
    • 올바른 자격증명으로 로그인 시도
    • 잘못된 자격증명으로 로그인 시도
  3. 테스트 설계 단계
    각 테스트 케이스에 대해 구체적인 테스트 시나리오를 작성한다.
    여기에는 테스트 데이터, 실행 조건, 예상 결과 등이 포함된다.
    예를 들어: 입력값: test@example.com / password123 예상 결과: 로그인 성공, 메인 페이지로 이동

  4. 테스트 실행 단계
    설계된 테스트 케이스를 실제로 실행하고 결과를 기록한다.
    이때 요구사항과 실제 동작이 일치하는지 꼼꼼히 확인한다.

  5. 결과 분석 및 보고
    단계 테스트 결과를 분석하고, 요구사항 충족 여부를 평가한다.
    발견된 불일치나 문제점을 문서화하고 보고한다.

주요 특징

  1. 요구사항 중심: 테스트 케이스는 시스템의 문서화된 요구사항에서 직접 도출된다.
  2. 포괄적 검증: 각 요구사항에 대해 최소한 하나 이상의 테스트 케이스가 생성되어 모든 요구사항이 검증되도록 보장한다.
  3. 블랙박스 테스팅: 일반적으로 시스템의 내부 구조를 고려하지 않고 입력과 출력만을 바탕으로 테스트를 수행한다.
  4. 추적성: 요구사항과 테스트 케이스 간의 명확한 매핑을 통해 추적성을 제공한다.

프로세스

  1. 요구사항 이해: 프로젝트의 기능적, 비기능적 요구사항을 철저히 검토하고 이해한다.
  2. 테스트 케이스 생성: 이해된 요구사항에 기반하여 테스트 케이스를 설계한다.
  3. 요구사항 매핑: 생성된 테스트 케이스를 원래의 요구사항에 매핑한다.
  4. 테스트 실행: 설계된 테스트 케이스를 실행하고 결과를 분석한다.

장점

  1. 포괄적인 테스트 범위: 모든 요구사항이 테스트되도록 보장한다.
  2. 조기 결함 발견: 개발 프로세스 초기에 결함을 식별할 수 있다.
  3. 요구사항 명확화: 테스트 과정에서 모호한 요구사항을 식별하고 명확히 할 수 있다.
  4. 개발 및 테스트 팀 간 협력 강화: 요구사항을 중심으로 팀 간 의사소통이 개선된다.

한계점

  1. 요구사항 품질 의존성: 테스트의 효과성이 요구사항 문서의 품질에 크게 의존한다.
  2. 예상치 못한 시나리오 누락: 문서화되지 않은 요구사항이나 예외 상황을 놓칠 수 있다.
  3. 시간 소요: 모든 요구사항에 대한 테스트 케이스 설계와 실행에 상당한 시간이 필요할 수 있다.

요구사항 기반 테스팅을 더욱 효과적으로 수행하기 위한 방법들

  1. 요구사항 리뷰 참여 테스트 팀이 초기 요구사항 리뷰 단계부터 참여하여, 테스트 관점에서 요구사항의 명확성과 테스트 가능성을 검토한다.

  2. 추적성 매트릭스 활용 요구사항과 테스트 케이스 간의 매핑을 명확히 하여, 모든 요구사항이 적절히 테스트되는지 추적한다.

  3. 자동화 도구 활용 반복적인 테스트는 자동화하여 효율성을 높인다. 특히 회귀 테스트에서 유용하다.

실제 현장에서 요구사항 기반 테스팅을 적용할 때의 팁

  1. 우선순위 설정 모든 요구사항을 동일한 수준으로 테스트할 수는 없으므로, 중요도와 위험도를 고려하여 우선순위를 설정한다.

  2. 경계값 분석 요구사항에 명시된 조건들의 경계값을 집중적으로 테스트한다. 예를 들어, 비밀번호 길이가 8자인 경우, 7자와 8자, 9자의 케이스를 모두 테스트합니다.

  3. 네거티브 테스트 포함 요구사항을 만족하지 않는 상황에서의 시스템 동작도 테스트한다. 이는 시스템의 견고성을 높이는 데 중요하다.

이러한 요구사항 기반 테스팅은 소프트웨어 품질 보증의 기본이 되는 중요한 접근법이다. 특히 명확한 요구사항이 존재하는 프로젝트에서 매우 효과적이며, 다른 테스트 기법들과 보완적으로 사용될 때 최상의 결과를 얻을 수 있다.


참고 및 출처