테스트를 어떤 비율로 갖출지를 피라미드 모양으로 나타낸 모델. 마이크 콘이 『Succeeding with Agile』에서 소개했다. 아래로 갈수록 빠르고 싸서 많이, 위로 갈수록 느리고 비싸서 적게 둔다.
- 단위 테스트(바닥, 가장 많이)(Unit Test): 함수·클래스를 격리해 검사한다. 매우 빠르고 쓰기 쉬워 대부분을 차지한다
- 통합 테스트(가운데)(Integration Test): 여러 모듈이나 DB·API 같은 실제 의존성을 일부 포함해 연동을 검사한다. API 테스트가 여기 든다(DRF API 테스트)
- E2E 테스트(꼭대기, 가장 적게)(End-to-End Test): 브라우저에서 사용자 시나리오를 처음부터 끝까지 검사한다. 가장 느리고 비싸고 잘 깨지므로 핵심 흐름만 남긴다
아이스크림 콘(Ice-Cream Cone)
비율이 뒤집혀 E2E와 수동 테스트가 가장 많은 상태. 피드백이 느리고 테스트가 툭하면 깨져 유지하기 힘들다.
다른 관점
프런트엔드에서는 구현 세부보다 사용자 관점의 통합 테스트에 무게를 두자는 "테스팅 트로피(Testing Trophy)" 같은 변형도 쓰인다. 사용자처럼 화면을 다루는 React Testing Library와 네트워크를 흉내 내는 MSW로 API 모킹가 이 방식을 받친다. 어느 모양이든 요지는 같다. 빠르고 싼 테스트로 대부분의 버그를 잡고, 비싼 테스트는 "전체가 정말 도는가"를 확인하는 데만 쓴다.
테스트를 기계적으로 늘리기보다 겹치는 커버리지를 줄이는 것도 중요하다(테스트 냄새, 구성요소 줄이기).
참고: Test Pyramid 마틴 파울러