요구 사항 관리

Tier: Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

요구 사항을 통해 제품을 기준으로 검사할 수 있는 기준을 설정할 수 있습니다. 이 기준들은 사용자, 이해관계자, 시스템, 소프트웨어 또는 캡처해야 할 중요한 다른 사항에 기반할 수 있습니다.

요구 사항은 GitLab에서 제품의 특정 동작을 설명하는 아티팩트입니다. 요구 사항은 장기간 유지되며 매뉴얼으로 해제되지 않습니다.

산업 표준이 응용 프로그램에 특정 기능이나 동작이 있는지 요구하는 경우, 이를 반영하기 위해 요구 사항을 만들 수 있습니다. 기능이 더 이상 필요하지 않은 경우, 관련 요구 사항을 아카이브할 수 있습니다.

note
요구 사항 및 테스트 케이스작업 항목으로 이전 중입니다. 이슈 323790에서 요구 사항을 테스트 케이스에 연결하는 것이 제안되었습니다. 자세한 정보는 제품 단계 방향 - 계획을 참고하세요.

개요는 요구 사항 관리에서 확인할 수 있습니다.

더 자세한 안내는 GitLab 요구 사항 추적 안내를 참고하세요 (2021년 2월).

요구 사항 디렉터리 보기

요구 사항 생성

각 프로젝트에서 페이지별로 요구 사항 디렉터리을 확인하고 새로운 요구 사항을 생성할 수 있습니다.

필수 사항:

  • 적어도 Reporter 역할이 있어야 합니다.

요구 사항을 생성하려면:

  1. 프로젝트에서 Plan > Requirements로 이동합니다.
  2. 새 요구 사항을 선택합니다.
  3. 제목과 설명을 입력하고 새 요구 사항을 선택합니다.

요구 사항 생성 보기

요구 사항 디렉터리에서 새로 생성한 요구 사항이 상위에 표시되며, 요구 사항 디렉터리은 작성 날짜를 기준으로 내림차순으로 정렬됩니다.

요구 사항 보기

디렉터리에서 요구 사항을 선택하여 해당 요구 사항을 보기 위해 선택할 수 있습니다.

요구 사항 보기

요구 사항을 보는 동안 편집하려면 요구 사항 제목 옆의 편집 아이콘()을 선택하세요.

요구 사항 편집

  • GitLab 16.11에서 변경: 작성자 및 담당자는 적어도 Reporter 역할이 없더라도 요구 사항을 편집할 수 있습니다.

요구 사항 디렉터리 페이지에서 요구 사항을 편집할 수 있습니다.

필수 사항:

  • 적어도 Reporter 역할이 있어야 합니다. 또는 요구 사항의 작성자 또는 담당자여야 합니다.

요구 사항을 편집하려면:

  1. 요구 사항 디렉터리에서 편집 아이콘()을 선택합니다.
  2. 텍스트 입력 필드에서 제목과 설명을 업데이트합니다. 편집 양식에서 만족 확인란을 사용하여 요구 사항을 만족시킬 수도 있습니다.
  3. 변경 사항 저장을 선택합니다.

요구 사항 아카이브

  • GitLab 16.11에서 변경: 작성자 및 담당자는 적어도 Reporter 역할이 없더라도 요구 사항을 아카이브할 수 있습니다.

열림 탭에 있는 상태에서 열린 요구 사항을 아카이브할 수 있습니다.

필수 사항:

  • 적어도 Reporter 역할이 있어야 합니다. 또는 요구 사항의 작성자 또는 담당자여야 합니다.

요구 사항을 아카이브하려면 아카이브를 선택합니다().

요구 사항이 아카이브되면 즉시 열림 탭에 표시되지 않습니다.

요구 사항 다시 열기

  • GitLab 16.11에서 변경: 작성자 및 담당자는 적어도 Reporter 역할이 없더라도 요구 사항을 다시 열 수 있습니다.

아카이브됨 탭에 있는 아카이브된 요구 사항 디렉터리을 볼 수 있습니다.

필수 사항:

  • 적어도 Reporter 역할이 있어야 합니다. 또는 요구 사항의 작성자 또는 담당자여야 합니다.

아카이브된 요구 사항 디렉터리

아카이브된 요구 사항을 다시 열려면 다시 열기를 선택합니다.

요구 사항이 다시 열리면 아카이브됨 탭에 표시되지 않습니다.

요구 사항 검색

다음 기준을 기반으로 요구 사항 디렉터리에서 요구 사항을 검색할 수 있습니다:

  • 제목
  • 작성자의 사용자 이름
  • 상태 (만족, 실패, 누락)

요구 사항을 검색하려면:

  1. 프로젝트에서 Plan > 요구 사항 > 디렉터리으로 이동합니다.
  2. 검색 또는 결과 필터링 필드를 선택합니다. 드롭다운 디렉터리이 표시됩니다.
  3. 드롭다운 디렉터리에서 요구 사항 작성자 또는 상태를 선택하거나 요구 사항 제목으로 검색하기 위해 일반 문자를 입력합니다.
  4. 키보드의 Enter 키를 눌러 디렉터리을 필터링합니다.

요구 사항 디렉터리은 다음과 같이 정렬할 수도 있습니다:

  • 생성된 날짜
  • 업데이트된 날짜

CI 작업에서 요구 사항을 만족시키도록 허용

GitLab은 이제 요구 사항 테스트 보고서를 지원합니다. CI 파이프라인에 트리거될 때 모든 기존 요구 사항을 만족시키는 작업을 추가할 수 있습니다 (편집 양식에서 요구 사항을 매뉴얼으로 만족시킬 수 있습니다 요구 사항 편집).

CI에 매뉴얼 작업 추가

CI에서 매뉴얼으로 작업을 트리거할 때 요구 사항을 만족시키도록 설정하려면 아래 코드를 .gitlab-ci.yml 파일에 추가하세요.

requirements_confirmation:
  when: manual
  allow_failure: false
  script:
    - mkdir tmp
    - echo "{\"*\":\"passed\"}" > tmp/requirements.json
  artifacts:
    reports:
      requirements: tmp/requirements.json

이 정의는 CI 파이프라인에 수동으로 트리거될 (when: manual) 작업을 추가합니다. 블로킹(allow_failure: false)입니다. 또한 CI 작업을 트리거하는데 사용할 조건은 상관없으나 CI 작업이 트리거될 조건을 정하시면 됩니다. 또한 CI 작업에서 requirements.json 아티팩트가 생성되고 업로드되기만 하면 어떤 기존의 CI 작업이든 요구 사항을 만족시킬 수 있습니다.

이 작업을 수동으로 트리거하면 requirements.json 파일이 서버에 아티팩트로 업로드됩니다. 서버 측에서 요구 사항 보고서는 “모두 통과함” 기록 ({"*":"passed"}) 확인을 수행하고 성공하면 모든 열린 요구 사항을 만족시킵니다.

개별 요구 사항 지정

개별 요구 사항과 그 상태를 지정할 수 있습니다.

다음 요구 사항이 있다고 가정해 봅시다:

  • REQ-1 (IID 1)
  • REQ-2 (IID 2)
  • REQ-3 (IID 3)

첫 번째 요구 사항은 통과했으며, 두 번째 요구 사항은 실패했다고 지정할 수 있습니다. 유효한 값은 “passed”와 “failed”입니다. (IID인 REQ-3의 IID 3를 생략하면 결과가 기록되지 않습니다)

requirements_confirmation:
  when: manual
  allow_failure: false
  script:
    - mkdir tmp
    - echo "{\"1\":\"passed\", \"2\":\"failed\"}" > tmp/requirements.json
  artifacts:
    reports:
      requirements: tmp/requirements.json

CI에 조건부로 매뉴얼 작업 추가

CI를 구성하여 열린 요구 사항이 있는 경우에만 매뉴얼 작업을 포함하려면 CI_HAS_OPEN_REQUIREMENTS CI/CD 변수를 확인하는 규칙을 추가하세요.

requirements_confirmation:
  rules:
    - if: "$CI_HAS_OPEN_REQUIREMENTS" == "true"
      when: manual
    - when: never
  allow_failure: false
  script:
    - mkdir tmp
    - echo "{\"*\":\"passed\"}" > tmp/requirements.json
  artifacts:
    reports:
      requirements: tmp/requirements.json

요구 사항과 테스트 케이스작업 항목으로 이전되고 있다면, 프로젝트에서 작업 항목을 활성화한 경우 위의 구성에서 requirementsrequirements_v2로 대체해야 합니다.

      requirements_v2: tmp/requirements.json

CSV 파일에서 요구 사항 가져오기

적어도 보고자 역할이 있어야합니다.

프로젝트에 CSV 파일을 업로드하여 요구 사항을 가져올 수 있습니다. 이 때 업로드할 파일에는 titledescription 열이 있어야 합니다.

가져온 후, CSV 파일을 업로드한 사용자가 가져온 요구 사항의 작성자로 설정됩니다.

파일 가져오기

파일을 가져오기 전에:

  • 큰 가져오기를 취소할 방법은 없으므로, 몇 개의 요구 사항만 포함한 테스트 파일을 가져오는 것을 고려해 보세요. 큰 가져오기를 되돌릴 수 있는 방법은 GitLab API를 사용하는 것뿐입니다.
  • CSV 파일이 파일 형식 요구 사항을 충족하는지 확인하세요.

요구 사항을 가져오려면:

  1. 프로젝트에서 Plan > Requirements로 이동합니다.
    • 요구 사항이 있는 프로젝트의 경우, 오른쪽 상단에서 수직 타원 모양()을 선택한 다음 요구 사항 가져오기()를 선택합니다.
    • 요구 사항이 없는 프로젝트의 경우, 페이지 중간에서 CSV 가져오기를 선택합니다.
  2. 파일을 선택한 다음 요구 사항 가져오기를 선택합니다.

파일이 백그라운드에서 처리되며 가져오기가 완료되면 알림 이메일이 전송됩니다.

가져온 CSV 파일 형식

CSV 파일에서 요구 사항을 가져올 때 다음과 같은 형식을 준수해야 합니다:

  • 헤더 행: CSV 파일에는 반드시 다음 헤더가 포함되어야 합니다: titledescription. 헤더는 대소문자를 구분하지 않습니다.
  • 열: titledescription 이외의 열에서 가져오지 않습니다.
  • 구분 기호: 열 구분 기호는 헤더 행에서 자동으로 감지됩니다. 지원되는 구분 기호는 쉼표(,), 세미콜론(;), 탭(\t)입니다. 행 구분 기호는 CRLF 또는 LF가 될 수 있습니다.
  • 이중 인용 부호 문자: 이중 인용 부호(") 문자는 필드를 인용하는 데 사용되어, 필드 내에서 구분 기호를 사용할 수 있게 합니다 (아래 예시 CSV 데이터의 세 번째 줄 참조). 인용된 필드에 이중 인용 부호(")를 삽입하려면 연속된 두 개의 이중 인용 부호 문자("")를 사용합니다.
  • 데이터 행: 헤더 행 이하의 연속된 행은 동일한 열 순서를 따라야 합니다. title 텍스트는 필수이며, description은 선택 사항이며 비워둘 수 있습니다.

예시 CSV 데이터:

title,description
나의 요구 사항 제목,나의 요구 사항 설명
다른 제목,"쉼표가 있는 설명"
"하나의 더 제목","하나의 더 설명"

파일 크기

이 한도는 GitLab 인스턴스의 최대 첨부 파일 크기 구성 값을 따릅니다.

GitLab.com의 경우, 10MB로 설정됩니다.

요구 사항을 CSV 파일로 내보내기

GitLab 요구 사항을 다음과 같은 CSV 파일로 내보낼 수 있습니다. 이 파일은 기본 알림 이메일로 첨부하여 전송됩니다.

요구 사항을 내보내면, 여러분과 여러분의 팀은 이를 다른 도구에 가져오거나 고객과 공유할 수 있습니다. 요구 사항을 내보내면 고수준 시스템과의 협업, 감사 및 규정 준수 작업에 도움이 됩니다.

필수 조건:

  • 적어도 보고자 역할이 있어야 합니다.

요구 사항을 내보내려면:

  1. 프로젝트에서 Plan > Requirements로 이동합니다.
  2. 오른쪽 상단에서 수직 타원 모양()을 선택한 다음 CSV로 내보내기()를 선택합니다.

    확인 모달이 표시됩니다.

  3. 고급 내보내기 옵션에서 내보낼 필드를 선택합니다.

    기본적으로 모든 필드가 선택되어 있습니다. 내보내기에서 특정 필드를 제외하려면 해당 필드 옆의 확인란을 지웁니다.

  4. 요구 사항 내보내기를 선택합니다. 내보낸 CSV 파일은 사용자와 연결된 이메일 주소로 전송됩니다.

내보낸 CSV 파일 형식

내보낸 CSV 파일은 Microsoft Excel, OpenOffice Calc, 또는 Google Sheets와 같은 스프레드시트 편집기에서 미리 볼 수 있습니다.

내보낸 CSV 파일에는 다음 헤더가 포함되어 있습니다:

  • 요구 사항 ID
  • 제목
  • 설명
  • 작성자
  • 작성자 사용자 이름
  • 만든 날짜 (UTC)
  • 상태
  • 상태 업데이트된 날짜 (UTC)