
테스트 종류를 계층별로 나누어 비중을 조절하는 전략
아래로 갈수록 많게, 위로 갈수록 적게
각 계층은 서로 다른 속도, 커버리지, 특성을 가짐
속도와 비용
정확한 피드백
신뢰성
안티 패턴 경계
함수·메서드의 독립적 로직 검증(Jest 스타일)
// 대상 함수: 10% 할인 적용
function applyDiscount(price) {
return price * 0.9;
}
// 단위 테스트 코드
test('할인 계산 로직검증', () => {
const result = applyDiscount(10000);
expect(result).toBe(9000);
});
모듈 간의 협력과 데이터 흐름 검증
test('회원가입 서비스 통합 검증', async () => {
const newUser = { id: 'test_id', name: '홍길동' };
// 1. 서비스 함수 실행 (DB 통신 발생)
await userService.signUp(newUser);
// 2. DB에서 데이터가 잘 저장되었는지 직접 조회
const userInDb = await db.findUserById('test_id');
expect(userInDb.name).toBe('홍길동');
});
실제 사용자 관점의 전체 시나리오 보장
test('로그인 성공 후 메인 페이지 이동', async ({ page }) => {
await page.goto('https://naver.com/login');
await page.fill('#query', 'Playwright');
await page.press('#query', 'Enter');
// 결과확인:페이지제목검증
await expect(page).toHaveTitle(/Playwright/);
});
