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를 추가합니다. 테스트 네이밍 # 테스트 이름은 테스트의 목적을 정의하는 읽기 쉬운 문장을 형성해야 합니다. 저희 테스팅 가이드는 Thoughtbot 테스팅 스타일 가이드 를 확장합니다. 이 페이지는 https://www.betterspecs.org/ 및 RSpec 네이밍 가이드 의 내용을 바탕으로 가이드라인을 명확히 설명합니다. 권장 방법 # 다음 블록은 Plan wiki content creation in a project adds a home page 라는 이름의 테스트를 생성합니다. # `RSpec.describe` is the DevOps Stage being covered RSpec.describe 'Plan', feature_category: :wiki do # `describe` is the feature being tested describe 'wiki content creation' do # `context` provides the condition being covered context 'in a project' # `it` defines the expected result of the test it 'adds a home page' ... end ... end ... end end 모든 describe , context , it 블록에는 짧은 설명이 첨부되어야 합니다. 설명은 가능한 한 간결하게 유지하세요. 설명이 길거나 조건이 여러 개인 경우, 분리해야 한다는 신호일 수 있습니다 (추가 context 블록 활용). 문서 스타일 가이드 는 간결하게 작성하는 방법과 능동태 사용법에 대한 권장 사항을 제공합니다. 가장 바깥쪽 Rspec.describe 블록은 DevOps Stage 이름 이어야 합니다. Rspec.describe 블록 내부에는 테스트 중인 기능 이름을 가진 describe 블록이 있습니다. 선택적 context 블록은 테스트 중인 조건을 정의합니다. context 블록 설명은 RuboCop 규칙 에 맞추어 when , with , without , for , and , on , in , as , 또는 if 로 시작해야 합니다. it 블록은 테스트의 통과/실패 기준을 설명합니다. 단일 예시가 있는 shared_examples 에서는 명명된 it 블록 대신 specify 블록을 사용할 수 있습니다. UI보다 API를 선호합니다 # End-to-end