← Work
Live2026 · Solo Builder· Started(First Commit date)
QA Learning 101
테스팅 방법론과 자동화를 실습으로 익히는 QA 학습 플랫폼 - 실무를 닮은 연습용 앱에 직접 테스트를 짜본다.
- QA
- Education
- React
- FastAPI
Setup
- Problem
QA 엔지니어 입문자가 "무엇을 어떤 순서로 배워야 하는지"의 지도가 없다. 책은 무겁고, 강의는 일방향이라 손이 안 움직인다.
- Context
QA 엔지니어로 14년 동안 "입문자에게 매번 같은 걸 다시 설명하는" 시간을 한 곳에 정리하려는 시도.
Build
- What I did
- FastAPI·PostgreSQL 백엔드와 React·TypeScript 프론트로 된 풀스택 학습 앱 (인증·게시판·댓글·할 일·칸반·캘린더·실시간 채팅·파일)
- QA Hub - 은행 대시보드·예약 시스템·이커머스·소셜 피드 등 실무를 닮은 연습용 앱을 만들어, 자동화 테스트를 짜볼 대상으로 제공
- 화면 전반에 CSS·구조와 무관한 data-testid 셀렉터 규칙을 심어 E2E가 리팩토링에 안 깨지게
- Playwright(Python)·pytest로 E2E·API 테스트, Locust로 부하 테스트, GitHub Actions CI
- KO/EN 다국어(i18next)와 GA4 분석, Sentry 에러 모니터링
- Product decisions
- 다크 모드·반응형·접근성을 처음부터 - 학습 도구가 접근성을 안 지키면 메시지가 무너진다
- 연습용 앱을 '예제'가 아니라 은행·예약·이커머스처럼 실무를 닮은 화면으로 - 입문자가 실제와 같은 대상에 테스트를 짜보게
- data-testid를 셀렉터 표준으로 - CSS·컴포넌트 구조가 바뀌어도 E2E가 안 깨지는 습관을 학습 단계에서 들인다
- 매니지드(Render + Neon)로 시작했다가 비용 문제로 자체 호스팅한 Mac Mini + Cloudflare Tunnel로 이전 - 사이드 프로젝트에 매달 나가는 고정비를 줄였다
- QA considerations
- data-testid 셀렉터가 CSS·컴포넌트 구조 변경에도 안 깨져 E2E가 리팩토링에 견디는가(학습용 표준의 실증)
- QA Hub 연습용 앱(은행·예약·이커머스·소셜 피드)이 실무를 닮은 상태·엣지 케이스를 실제로 담고 있는가
- 학습 콘텐츠 자체의 정확성 - 방법론 설명이나 예제가 틀리면 입문자에게 잘못된 습관이 5년을 가므로 가장 회피할 회귀인가
- 테스트 자동화 플레이그라운드가 연습용 앱 안에 격리돼, 학습자가 짠 테스트가 실계정·실데이터를 건드리지 않는가
- Playwright·pytest E2E, Locust 부하 테스트가 GitHub Actions CI에서 회귀 게이트로 도는가
- 실시간 채팅(WebSocket)·인증·파일 업로드 같은 상태 의존 경로가 재접속·토큰 만료에서 견고한가
- 매니지드→자체 호스팅(Mac Mini + Cloudflare Tunnel) 이전 후에도 동일 동작이 유지되는가
Outcome
- Metrics
qalearningweb.com에 라이브. 프론트는 Cloudflare Pages, 백엔드(FastAPI)와 Postgres는 처음 Render + Neon 매니지드로 올렸다가 비용 문제로 자체 호스팅한 Mac Mini로 옮기고 Cloudflare Tunnel로 노출한다. 사용자 수치는 미공개.
- Tech stack
- React
- TypeScript
- Vite
- Tailwind
- Zustand
- React Query
- i18next
- FastAPI
- Python
- PostgreSQL
- SQLAlchemy
- Redis
- WebSocket
- Playwright
- pytest
- Locust
- Sentry
- Cloudflare Pages
- Cloudflare Tunnel
- Mac Mini
- Links