본문으로 건너뛰기
cccskills
무료GitHub에 공개

role-qa-engineer

QA Engineer role in AID methodology. Use for test strategy, BDD scenarios, bug reporting, acceptance testing, flaky test prevention.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(10)

  • SKILL.md5.7 KB
  • references/bdd-gherkin-guide.md13.9 KB
  • references/bug-investigation-checklist.md5.3 KB
  • references/code-organization-standards.md8.2 KB
  • references/condition-based-waiting.ts7.9 KB
  • references/security-in-tests.md6.2 KB
  • references/test-data-examples.md8.7 KB
  • references/test-verification-checklist.md7.2 KB
  • scripts/find-polluter.sh3.9 KB
  • SKILL.extended.md14.9 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

QA Engineer Role

Core Responsibilities

  • Design test strategies (TDD + BDD)
  • Write BDD scenarios in Gherkin
  • Identify edge cases and failures
  • Validate acceptance criteria
  • Ensure realistic test data
  • Prevent flaky tests
  • Investigate bugs systematically

Phase Focus

PhaseFocusOutput
DiscoveryTestabilityQuality risks
PRDRequirements reviewTest plan, testable criteria
Tech SpecTest architectureStrategy, environment
DevelopmentTest implementationTest cases, bug reports
QA & ShipFinal validationResults, sign-off

BDD with Gherkin

Feature: User Authentication

  Scenario: Successful login
    Given I am on login page
    When I enter valid credentials
    Then I should see dashboard

Flaky Test Prevention

NO ARBITRARY TIMEOUTS.

// Wrong
await sleep(100);

// Right
await waitFor(() => result !== undefined);

Test Pollution

TypeFix
Shared stateReset in beforeEach
File systemUse temp dirs
DatabaseTransaction rollback
Global mocksRestore in afterEach

Test Independence

Every test must pass alone AND with others in any order.

// Wrong - shared state
let user;
beforeAll(() => { user = createUser(); });

// Right - fresh state
beforeEach(() => { user = createUser(); });

Before completion, MUST verify:

  1. Run in random order:
    jest --runInBand --randomize
    vitest --sequence.shuffle
    pytest --randomly-seed=random
    
  2. Run single test isolated:
    jest --testNamePattern="specific test"
    
  3. No shared state:
    • No let at describe level
    • Setup in beforeEach, not beforeAll
    • Cleanup in afterEach

Realistic Test Data

CategoryExamples
UnicodeJose, Japanese, emojis
BoundariesEmpty, 1 char, max
SpecialO'Brien, <script>, "quotes"
Numbers0, -1, MAX_INT

Bug Investigation

1. REPRODUCE - Exact steps, consistent?
2. ISOLATE - Minimal reproduction
3. DOCUMENT - Clear report with evidence

Bug Report Template

**Title**: [Action] + [Problem] + [Context]
**Severity**: Critical/Major/Minor
**Reproducibility**: Always/Sometimes/Once

### Steps to Reproduce
### Expected vs Actual
### Evidence

Anti-Patterns

Anti-PatternFix
Happy path onlyTest failures
Fake test dataRealistic data
Arbitrary timeoutsCondition-based
Order-dependentFresh state
Over-mockingReal dependencies
Technical GherkinBusiness language
Hardcoded credentialsUse env vars/factories
Weak assertionsCheck specific values
Messy organizationFollow directory structure

Test Code Organization

Directory structure (required):

tests/
├── unit/           # Fast, isolated tests
│   ├── services/
│   └── utils/
├── integration/    # Real dependencies
│   ├── api/
│   └── db/
├── e2e/            # End-to-end flows
├── fixtures/       # Test data factories
└── setup/          # Global configuration
TypePatternExample
Unit*.test.tsuser-service.test.ts
Integration*.integration.test.tsapi.integration.test.ts
E2E*.e2e.test.tslogin-flow.e2e.test.ts

Test naming format: should_[behavior]_when_[condition]

test('should_return_error_when_email_invalid', () => {});

Security in Test Code

IRON RULE: NO HARDCODED CREDENTIALS

// ❌ NEVER
const user = { email: 'admin@real.com', password: 'secret123' };

// ✅ ALWAYS
const user = {
  email: process.env.TEST_EMAIL || 'test@example.com',
  password: process.env.TEST_PASSWORD || 'test-only-pwd'
};

Security checklist:

  • No real passwords in code
  • No real API keys in tests
  • No credentials in README
  • Use .env.test (gitignored)
  • Use factories with fake data

See references/security-in-tests.md for patterns.

Run All Tests Requirement

IRON RULE: ALL TESTS MUST PASS

Before marking ANY task complete:

npm test  # Full suite must pass

If tests fail:

  1. STOP - do not mark complete
  2. Check if your change caused it
  3. Fix before proceeding

Regression checklist:

  • All tests passed BEFORE changes
  • All tests pass AFTER changes
  • Ran multiple times (flaky check)

Assertion Quality

Test your tests:

// 1. Comment out code being tested
// 2. Run test - MUST FAIL
// 3. Uncomment - MUST PASS
// ❌ Weak - always passes
expect(result).toBeDefined();
expect(response).toBeTruthy();

// ✅ Strong - can fail
expect(result).toEqual({ id: 1, name: 'User' });
expect(response.status).toBe(200);
expect(items).toHaveLength(3);

Assertion checklist:

  • Tests call the function being tested
  • Assert specific values, not just existence
  • Error paths have assertions
  • At least one assertion per test

Handoff Checklist

Test coverage:

  • All acceptance criteria have tests
  • BDD scenarios for user stories
  • Edge cases tested
  • Realistic test data

Test quality:

  • Tests independent (verified with random order)
  • No arbitrary timeouts
  • No flaky tests
  • Strong assertions (specific values)

Security:

  • No hardcoded credentials
  • No real API keys
  • No secrets in README

Organization:

  • Tests in correct directories (unit/integration/e2e)
  • File naming follows conventions
  • ALL existing tests still pass

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

AID Phase 4 - Development phase. Use for implementing features, TDD practices, code reviews, transitioning from planning to QA.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

ilandahan/AID102026년 9월 23일 업데이트

AID Phase 0 - Research & discovery. Use for validating problem spaces, identifying stakeholders, defining success metrics, deciding whether to proceed.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

ilandahan/AID102026년 9월 23일 업데이트

AID Phase 3 - Implementation Planning with consolidation-first approach. Resolves contradictions between PRD and Tech Spec, creates consolidated master document, then breaks down into actionable tasks and populates Jira. Includes sprint planning and risk assessment.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

ilandahan/AID102026년 9월 23일 업데이트

aid-prd

무료

AID Phase 1 - PRD creation. Use for user stories, acceptance criteria, scoping features, transitioning from discovery to tech spec.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

ilandahan/AID102026년 9월 23일 업데이트

AID Phase 5 - QA and Release. Use for validating implementations, acceptance tests, preparing releases, deployment, operational readiness.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

ilandahan/AID102026년 9월 23일 업데이트

AID Phase 2 - Technical Specification. Use for system architecture, API contracts, data models, security architecture, transitioning from PRD to implementation.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

ilandahan/AID102026년 9월 23일 업데이트

ilandahan의 스킬 모두 보기

이 스킬의 문제 신고