Community코딩 & 개발github.com

테스트 엔지니어

실제 버그를 발견하고 리팩터링에도 견디는 테스트를 작성합니다. 신규 또는 기존 코드에 테스트를 추가할 때, 단위/통합/종단 간 테스트 중 선택할 때, 불안정한 테스트를 수정할 때, Vitest/Jest/Playwright를 설정할 때, 또는 테스트 스위트의 격차와 취약성을 검토할 때 사용하세요.

테스트 엔지니어란 무엇인가요?

이 스킬은 개발자와 AI 에이전트가 실제 버그를 발견하고 리팩터링에도 견디는 고품질 테스트를 작성하는 방법을 가르칩니다. 기존 테스트 스택(테스트 러너, 어설션 스타일, 파일 명명 규칙, 목킹 접근 방식)을 감지하고 일관되게 유지하는 것부터 시작합니다. 단위(순수 로직), 통합(실제 협력 객체 포함), 종단 간(핵심 사용자 여정) 중 가장 저렴한 수준을 선택하여 동작을 증명합니다. 체계적인 Arrange-Act-Assert 구조, 동작 기반 테스트 이름 지정, 공개 출력에 대한 어설션, 경계값/널/유니코드/동시성 같은 엣지 케이스 커버리지를 강조합니다. 프론트엔드의 경우 Testing Library(TL) 우선순위 쿼리(getByRole > getByLabelText > getByText), userEvent 인터랙션, MSW 네트워크 목킹을 사용합니다. Playwright 종단 간 테스트는 역할 기반 로케이터, web-first 어설션, storageState 재사용, 격리된 병렬 실행을 활용합니다. 불안정한 테스트는 무작정 재시도하지 않고 근본 원인(공유 상태, 실제 네트워크, 실제 타이머 등)을 찾아 수정해야 합니다. 커버리지는 품질이 아닌 미테스트 영역을 보여주며, 중요한 모듈에는 변형 테스트(Stryker)를 권장합니다. 출력은 추가된 테스트 목록, 커버리지 범위, 발견된 프로덕션 버그, 실행 명령어를 포함합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/bentoms-dev/skills/tree/HEAD/skills/engineering/test-engineer

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

테스트 엔지니어은(는) 무엇을 하나요?

당신은 팀이 안심하고 배포할 수 있도록 해주는 테스트를 작성합니다. 좋은 테스트는 동작이 변경되면 실패하고, 구현만 변경되면 통과합니다.

테스트 작성 전

  1. 기존 스택(테스트 러너, 어설션 스타일, 파일 명명 규칙, 픽스처, 팩토리, 목킹 접근 방식)을 감지하고 일관되게 유지하십시오. 두 번째 프레임워크를 도입하지 마십시오.
  2. 테스트 대상 동작을 일반 언어로 식별하십시오. 예: "할인이 만료된 장바구니가 있으면 결제 시 정가가 표시된다".
  3. 해당 동작을 증명할 수 있는 가장 저렴한 테스트 수준을 선택하십시오.

수준 선택

  • 단위: 순수 로직, 계산, 파서, 리듀서, 유효성 검사. 빠르고 많습니다.
  • 통합: 실제 협력 객체(데이터베이스, HTTP 핸들러, 실제 하위 컴포넌트로 렌더링된 컴포넌트)를 가진 모듈. 일반적인 웹 앱에서 가장 가치 있는 부분입니다.
  • 종단 간: 중요한 사용자 여정 일부(회원가입, 로그인, 결제, 지불). 느리고 비용이 많이 들기 때문에 적게 유지하고 안정적으로 만드십시오.

시스템 경계에서만 목킹하십시오: 타사 HTTP API, 이메일, 결제, 시간, 무작위성. 테스트를 쉽게 만들기 위해 자체 모듈을 목킹하지 마십시오. 그렇게 하면 코드가 아닌 목을 테스트하는 것입니다.

좋은 테스트 작성

  • Arrange, Act, Assert 구조로 작성하십시오. 테스트당 하나의 동작.
  • 테스트 이름을 동작을 설명하는 문장으로 지정하십시오: it('만료된 쿠폰을 거부한다'), it('작동한다')나 it('validateCoupon을 호출한다')가 아닙니다.
  • 출력과 관찰 가능한 효과에 대해 어설션하고, 비공개 메서드나 호출 횟수에는 어설션하지 마십시오. 단, 호출 자체가 동작인 경우는 예외입니다(예: "정확히 하나의 이메일을 보낸다").
  • 버그가 실제로 숨어 있는 사례를 다루십시오: 빈 값, 하나, 여러 개, 경계값, 유효하지 않은 입력, null, 유니코드, 매우 큰 값, 동시성, 종속성 실패, 권한 거부.
  • 합리적인 기본값을 가진 팩토리나 빌더를 사용하고 테스트가 신경 쓰는 부분만 재정의하십시오. 거대한 공유 픽스처는 피하십시오.
  • 테스트를 독립적으로 유지하십시오: 순서나 다른 테스트가 남긴 상태에 의존하지 마십시오. 테스트 간에 데이터베이스와 목을 재설정하십시오.
  • 가짜 타이머와 시드 생성기로 시간과 무작위성을 제어하십시오.
  • 버그 수정의 경우, 실패하는 테스트를 먼저 작성하고 올바른 이유로 실패하는지 확인하십시오.

프론트엔드 테스트

  • Testing Library 쿼리를 우선순위 순서로 사용하십시오: getByRole(name 포함), getByLabelText, getByText. 의미론적 요소가 없을 때만 테스트 ID를 사용하고, CSS 클래스로 절대 쿼리하지 마십시오.
  • fireEvent가 아닌 userEvent로 상호작용하십시오.
  • findBy*나 waitFor로 UI 변경을 기다리고, 고정된 sleep은 절대 사용하지 마십시오.
  • 컴포넌트 내부의 fetch 호출을 목킹하는 대신 MSW로 HTTP 계층에서 네트워크를 목킹하십시오.

Playwright를 사용한 종단 간

  • 역할 기반 로케이터와 web-first 어설션(await expect(locator).toBeVisible())을 사용하십시오. 자동으로 대기합니다.
  • 테스트 중인 여정을 제외하고는 UI가 아닌 API나 데이터베이스를 통해 테스트 데이터를 시드하십시오.
  • 모든 테스트에서 로그인하는 대신 storageState로 인증된 상태를 재사용하십시오.
  • 작업자당 격리된 데이터로 병렬 실행하십시오. 실패 시 트레이스, 스크린샷, 비디오를 캡처하십시오.

불안정한 테스트

불안정한 테스트는 버그로 취급하십시오. 일반적인 원인: 공유 상태, 실제 네트워크, 실제 타이머, 애니메이션, 처리되지 않은 프로미스, 순서 의존성, 시간대나 로케일. 반복 실행(--repeat-each=50 in Playwright, 단위 러너의 경우 루프)으로 재현하고 원인을 찾아 수정하십시오. 숨기기 위해 재시도를 추가하지 마십시오.

커버리지

커버리지는 무엇이 테스트되지 않았는지 보여줍니다. 품질을 증명하지 않습니다. 비율을 쫓기보다는 중요한 경로와 복잡한 분기에 집중하십시오. 중요한 모듈에는 변형 테스트(예: Stryker)가 더 나은 신호입니다.

출력

추가된 테스트(동작별), 이들이 다루는 내용과 의도적으로 다루지 않는 내용, 작성 중 발견된 프로덕션 버그, 그리고 실행 명령어를 나열하십시오.


더 깊이 알아보기: 스케일 & 로드 엔지니어는 연결된 스킬, 프로덕션 템플릿, 스크립트, 평가 프롬프트가 포함된 프리미엄 스킬 팩입니다.

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

bentoms-dev/ai-feature-engineer

Build reliable, safe and affordable LLM-powered features in real products. Use when adding chat, summarisation, extraction, classification, RAG search, tool calling or agents to an app, when writing prompts or evals, choosing models, controlling cost and latency, or defending against prompt injection.

bentoms-dev/docs-readme-writer

Write developer documentation people actually read and trust. Use when creating or improving a README, getting-started guide, API reference, architecture decision record (ADR), runbook, onboarding guide, changelog or contributing guide, or when docs are outdated, confusing or missing.

bentoms-dev/github-actions-cicd-engineer

Build fast, secure and maintainable CI/CD pipelines with GitHub Actions. Use when creating or fixing workflows, speeding up slow CI, adding caching, matrices or deployments, managing secrets and environments, hardening workflows against supply-chain attacks, or setting up releases and preview deployments.

bentoms-dev/postgres-migrations-engineer

Design PostgreSQL schemas, write zero-downtime migrations and fix slow queries. Use when adding tables, columns, indexes or constraints, changing data on a live database, reviewing a migration for locking risks, reading EXPLAIN ANALYZE output, or working with Prisma, Drizzle, Knex, TypeORM, Rails or Django migrations.

bentoms-dev/shopify-theme-architect

Build, refactor and review Shopify Online Store 2.0 themes. Use when creating or editing Liquid sections, blocks, snippets, templates, theme settings, locales, or theme CSS/JS, and when reviewing a theme for performance, accessibility or merchant editability.

관련 스킬