테스트 레벨
GitLab의 단위, 통합, 시스템, 엔드투엔드 테스트 레벨의 개념과 각 레벨에서 무엇을 테스트해야 하는지를 설명합니다.
이 다이어그램은 GitLab에서 사용하는 각 테스트 유형의 상대적 우선순위를 나타냅니다. e2e 는 엔드투엔드를 뜻합니다. 안정성과 속도를 확보하면서 테스트 커버리지를 달성하기 위해 테스트 피라미드로 테스트 분포를 정합니다. 대부분의 테스트는 단위 레벨에 있어야 하고, 위쪽 계층으로 올라갈수록 테스트 수가 줄어들어야 합니다. 맨 위의 엔드투엔드 테스트는 실행과 유지 관리 비용이 가장 큽니다. 그래서 전체 테스트에서 가장 작은 비중을 차지해야 합니다. 2025-02-03 기준으로 레벨별 테스트 분포는 다음과 같이 추정됩니다. 테스트 레벨 Community Edition Enterprise Edition Community + Enterprise Edition 시스템 레벨 블랙박스 테스트(엔드투엔드 또는 QA 테스트) 401 (0.14%) 303 (0.10%) 704 (0.24%) 시스템 레벨 화이트박스 테스트(시스템 또는 기능 테스트) 8,362 (2.90%) 4,082 (1.41%) 12,444 (4.31%) 통합 테스트 39,716 (13.76%) 17,411 (6.03%) 57,127 (19.79%) 단위 테스트 139,504 (48.32%) 78,955 (27.35%) 218,459 (75.66%) 단위 테스트 # 공식 정의: https://en.wikipedia.org/wiki/Unit_testing 이 유형의 테스트는 코드 단위 하나(메서드 하나)가 기대한 대로 동작하는지 확인합니다(입력이 주어지면 예측 가능한 출력이 나옵니다). 이 테스트는 가능한 한 격리되어야 합니다. 예를 들어 데이터베이스와 아무 작업도 하지 않는 모델 메서드에는 데이터베이스(DB) 레코드가 필요하지 않습니다. 데이터베이스 레코드가 필요하지 않은 클래스는 가능한 한 스텁과 더블을 사용해야 합니다. 코드 경로 테스트 경로 테스트 엔진 참고 app/assets/javascripts/ spec/frontend/ Jest 자세한 내용은 프론트엔드 테스트 가이드 절에 있습니다. app/finders/ spec/finders/ RSpec app/graphql/ spec/graphql/ RSpec app/helpers/ spec/helpers/ RSpec app/models/ spec/models/ RSpec app/policies/ spec/policies/ RSpec app/presenters/ spec/presenters/ RSpec app/serializers/ spec/serializers/ RSpec app/services/ spec/services/ RSpec app/uploaders/ spec/uploaders/ RSpec app/validators/ spec/validators/ RSpec app/views/ spec/views/ RSpec app/workers/ spec/workers/ RSpec bin/ spec/bin/ RSpec config/ spec/config/ RSpec config/initializers/ spec/initializers/