테스트 레벨
GitLab의 단위, 통합, 시스템, 엔드투엔드 테스트 레벨의 개념과 각 레벨에서 무엇을 테스트해야 하는지를 설명합니다.
이 다이어그램은 우리가 사용하는 각 테스트 유형의 상대적 우선순위를 보여줍니다. e2e 는 end-to-end를 의미합니다. 안정성과 속도를 갖춘 테스트 커버리지를 달성하기 위해, 테스트 배분을 안내하는 테스트 피라미드를 사용합니다. 대부분의 테스트는 단위 레벨에서 이루어져야 하며, 레벨이 올라갈수록 테스트 수가 줄어들어야 합니다. 최상단의 엔드투엔드 테스트는 실행 및 유지 비용이 가장 많이 듭니다. 따라서 전체 테스트에서 가장 작은 비율을 차지해야 합니다. 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/ RSpec con