피처 플래그를 사용한 테스트
GitLab 엔드투엔드 테스트에서 피처 플래그를 활성화·비활성화하여 테스트를 실행하는 방법과 모범 사례를 설명합니다.
특정 테스트를 피처 플래그가 활성화된 상태로 실행하려면 QA::Runtime::Feature 클래스를 사용하여 피처 플래그를 활성화하거나 비활성화할 수 있습니다( API를 통해 ). 피처 플래그를 변경하려면 관리자 인가가 필요합니다. QA::Runtime::Feature 는 GITLAB_QA_ADMIN_ACCESS_TOKEN 을 통해 적절한 액세스 토큰을 제공하면(권장), 또는 GITLAB_ADMIN_USERNAME 과 GITLAB_ADMIN_PASSWORD 를 제공하면 자동으로 관리자로 인증합니다. feature_flag RSpec 태그 # 적절한 환경에서 테스트를 건너뛸 수 있도록 반드시 feature_flag 태그를 포함하세요. 필수 메타데이터 : name 형식: feature_flag: { name: 'feature_flag_name' } 정보 제공 목적으로 사용됩니다. 테스트 대상 피처 플래그를 확인하기 위해 반드시 포함해야 합니다. 선택적 메타데이터 : scope 형식: feature_flag: { name: 'feature_flag_name', scope: :project } scope 가 :global 로 설정되면, 모든 라이브 .com 환경에서 테스트가 건너뜁니다 . 이는 해당 환경의 다른 테스트나 사용자에게 영향을 미치는 피처 플래그 변경 문제를 방지하기 위함입니다. scope 가 다른 값( :project , :group , :user 등)으로 설정되거나 scope 가 지정되지 않으면, 카나리, 프로덕션, 사전 프로덕션 환경에서만 건너뜁니다 . 이는 해당 환경에서 관리자 액세스를 사용할 수 없기 때문입니다. 피처 플래그를 그룹, 프로젝트, 사용자 범위에서만 활성화 하거나, 피처 그룹 범위에서 활성화하는 방법을 먼저 시도하도록 강력히 권장합니다. 글로벌 피처 플래그를 반드시 사용해야 한다면, feature_flag 메타데이터에 scope: :global 을 적용하도록 강력히 권장합니다. 다만, 이는 SET(Software Engineer in Test)의 재량에 따라 위험 수준을 결정하도록 남겨져 있습니다. 예를 들어, 테스트가 애플리케이션의 일부 영역에만 영향을 미치는 글로벌 피처 플래그를 사용하고 라이브 환경의 중요한 이슈를 확인하는 데도 필요한 경우가 있습니다. 이런 시나리오에서는 테스트 실행을 건너뛰는 것이 더 위험할 수 있습니다. 이러한 경우 scope 를 메타데이터에서 생략하여 관리자 액세스가 있는 스테이징 같은 라이브 환경에서도 실행될 수 있도록 할 수 있습니다. requires_admin 에 대한 참고 사항 : 피처 플래그 업데이트와 무관하게 테스트 내에서 관리자 액세스가 필요한 다른 작업(예: API를 통한 사용자 생성)이 있다면 이 태그를 여전히 적용해야 합니다. 아래 코드는 테스트에서 생성된 프로젝트에 대해 :feature_flag_name 이라는 피처 플래그를 활성화합니다: RSpec.describe "with feature flag enabled", feature_flag: { name: 'fea