End-to-end 테스트 모범 사례
GitLab End-to-end 테스트 작성 시 클래스 네이밍, 테스트 케이스 연결, API 우선 원칙, 기대값 작성, 병렬화 등 모범 사례를 설명합니다.
이 문서는 테스팅 가이드에 있는 모범 사례 를 End-to-end 테스트에 맞게 확장한 내용입니다. 클래스 및 모듈 네이밍 # QA 프레임워크는 클래스 및 모듈 자동 로딩을 위해 Zeitwerk 를 사용합니다. 기본 Zeitwerk inflector 는 snake_case 파일명을 PascalCase 모듈 또는 클래스명으로 변환합니다. inflection 수동 관리를 피하기 위해 이 패턴을 따르는 것이 권장됩니다. 커스텀 inflection 로직이 필요한 경우, qa.rb 파일의 loader.inflector.inflect 메서드 호출에 커스텀 inflector를 추가합니다. 테스트와 테스트 케이스 연결 # 모든 테스트는 GitLab 프로젝트 테스트 케이스 에 대응하는 테스트 케이스와 Quality Test Cases 프로젝트 의 결과 이슈를 가져야 합니다. 테스트 케이스 이슈가 아직 존재하지 않는 경우, GitLab 팀원이라면 누구든 GitLab 프로젝트의 CI/CD > Test cases 페이지에서 임시 제목으로 새 테스트 케이스를 생성할 수 있습니다. 테스트 케이스 URL이 코드의 테스트에 연결되면, 리포팅이 활성화된 파이프라인에서 테스트가 실행될 때 report-results 스크립트가 자동으로 테스트 케이스와 결과 이슈를 업데이트합니다. 결과 이슈가 아직 존재하지 않는 경우, report-results 스크립트가 자동으로 이슈를 생성하고 해당 테스트 케이스에 연결합니다. 테스트에 테스트 케이스를 연결하려면 testcase RSpec 메타데이터 태그를 수동으로 추가해야 합니다. 대부분의 경우 단일 테스트는 단일 테스트 케이스와 연결됩니다. 예시: RSpec.describe 'Stage' do describe 'General description of the feature under test' do it 'test name', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/:test_case_id' do ... end it 'another test', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/:another_test_case_id' do ... end end end 공유 테스트의 경우 # 대부분의 테스트는 spec 파일의 단일 줄로 정의되므로 testcase 태그를 통해 단일 테스트 케이스에 연결할 수 있습니다. 그러나 일부 테스트는 spec 파일의 한 줄과 테스트 케이스 사이에 일대일 관계가 없습니다. 이는 단일 줄이 여러 테스트와 연결되는 방식으로 정의된 테스트가 있기 때문입니다. 여기에는 다음이 포함됩니다: 병렬화된 테스트. 템플릿화된 테스트. 두 개 이상의 예시를 포함하는 공유 예시의 테스트. 이러한 경우와 유사한 상황에서는 다른 방법으로 테스트 케이스 링크를 포함해야 합니다. 예를 들어, qa/specs/features/ee/browser_ui/3_create/rep