qaground 가이드
이 문서는 qaground의 트랙 구성, 챌린지를 푸는 흐름, 채점 방식, 그리고 테스트 작성 기본기를 안내합니다. 처음이라면 위에서부터 차례로 읽어 보세요.
다섯 가지 트랙
관심사와 도구로 고르세요. 한 챌린지는 한 트랙에 속합니다.
자동화 · Playwright
실제형 화면에 UI 테스트를 작성합니다. 작성한 단언이 통과하면 합격이고, 러너가 연결되면 실제 브라우저로 실행해 채점합니다.
메뉴얼 · 테스트 설계
요구사항을 분석해 케이스를 설계하거나 심어둔 결함을 찾아 리포트합니다. 요구사항 충족 여부로 채점하고 모범 답안과 맞춰 봅니다.
API · Postman 스타일
요청을 구성하고 상태 코드·JSON·pm.test로 응답을 검증합니다. 브라우저 안에서 실제로 요청을 보내 바로 채점됩니다.
성능 · Web Vitals
Core Web Vitals와 리소스 병목을 측정하고, 재현 가능한 성능 리포트와 개선 우선순위를 정리합니다.
접근성 · Keyboard & Screen Reader
키보드 탐색, 포커스 표시, 라벨·에러 전달, 색 대비처럼 실제 사용성에 영향을 주는 접근성 문제를 점검합니다.
푸는 흐름
상단의 요구사항이 곧 검증 목표입니다. 무엇을 확인할지부터 잡습니다.
샌드박스나 API 엔드포인트의 구조와 셀렉터를 먼저 살핍니다.
정상 경로만이 아니라 경계와 예외까지 직접 설계해 작성합니다.
요구사항별 채점 결과와 모범 답안·피드백으로 빠진 곳을 메웁니다.
채점 방식
자동화 는 작성한 Playwright 단언이 통과하는지로 판정합니다(러너 연결 시 실제 실행, 미연결 시 구조·관련성 정적 채점).
메뉴얼 은 작성한 케이스·리포트가 요구사항을 충족하는지로 채점합니다. 키가 연결되면 AI가 내용을 읽고 요구사항별 피드백을 주고(배지 AI 채점), 아니면 요구사항 연결 기준의 구조적 채점(배지 임시 모드) 으로 동작합니다.
API 는 요청을 실제로 보내 단언·pm.test 통과 개수를 즉시 보여줍니다.
셀렉터 전략
UI 자동화는 data-testid 처럼 변하지 않는 셀렉터를 우선 사용합니다. 텍스트·클래스·DOM 구조는 디자인이 변경되면 테스트가 깨지기 쉽습니다. 챌린지마다 안정적인 셀렉터를 제공하니 그대로 활용하면 됩니다.
await page.goto('/sandbox/login');
await page.getByTestId('email').fill('[email protected]');
await page.getByTestId('password').fill('secret');
await page.getByTestId('submit').click();
await expect(page.getByTestId('error')).toBeVisible();응답 검증
상태 코드와 JSON 필드를 단언하거나 pm.test로 더 세밀하게 봅니다. 성공 경로뿐 아니라 4xx·5xx 실패 경로까지 단언하는 것이 견고한 API 테스트입니다.
pm.test('상태 코드는 200', () => {
pm.response.to.have.status(200);
});
pm.test('총 개수 메타데이터', () => {
pm.expect(pm.response.json().total).to.eql(12);
});좋은 테스트 케이스
한 시나리오에 사전조건 · 절차 · 기대 결과 를 명확히 적고, 각 케이스가 어떤 요구사항을 검증하는지 연결합니다(추적성). 정상만이 아니라 경계와 예외까지 도출하는 것이 핵심입니다.
- 정상
- 규칙대로 동작하는 대표 경로
- 경계
- 한도·최소·최대 같은 임계값 바로 안팎
- 예외
- 빈 값·잘못된 형식·권한 없음 같은 실패 경로