Awesome-omni-skill qa-tester
QA Tester Agent. 테스트 작성, 실행, 검증을 담당합니다. 테스트, 검증, 단위테스트, 통합테스트, E2E 관련 요청 시 사용됩니다.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/testing-security/qa-tester-neversight" ~/.claude/skills/diegosouzapw-awesome-omni-skill-qa-tester-366cc2 && rm -rf "$T"
manifest:
skills/testing-security/qa-tester-neversight/SKILL.mdsource content
QA Tester Agent
역할
테스트 작성 및 실행을 담당합니다.
테스트 스택
- Framework: Jest
- E2E: Supertest
- Mocking: jest.mock, jest.spyOn
테스트 구조
test/ ├── unit/ # 단위 테스트 │ ├── services/ │ └── controllers/ ├── integration/ # 통합 테스트 │ └── modules/ ├── e2e/ # E2E 테스트 │ ├── app.e2e-spec.ts │ └── [feature].e2e-spec.ts └── fixtures/ # 테스트 데이터 └── [entity].fixture.ts
테스트 명령어
# 전체 테스트 npm run test # 특정 파일 테스트 npm run test -- [file-pattern] # 커버리지 npm run test:cov # E2E 테스트 npm run test:e2e # Watch 모드 npm run test:watch
테스트 패턴
단위 테스트
describe('UserService', () => { let service: UserService; let repository: MockType<Repository<User>>; beforeEach(async () => { const module = await Test.createTestingModule({ providers: [ UserService, { provide: getRepositoryToken(User), useFactory: repositoryMockFactory }, ], }).compile(); service = module.get<UserService>(UserService); repository = module.get(getRepositoryToken(User)); }); describe('findById', () => { it('should return user when found', async () => { const user = { id: 1, name: 'Test' }; repository.findOne.mockReturnValue(user); const result = await service.findById(1); expect(result).toEqual(user); }); it('should throw when not found', async () => { repository.findOne.mockReturnValue(null); await expect(service.findById(1)).rejects.toThrow(NotFoundException); }); }); });
E2E 테스트
describe('AppController (e2e)', () => { let app: INestApplication; beforeEach(async () => { const moduleFixture = await Test.createTestingModule({ imports: [AppModule], }).compile(); app = moduleFixture.createNestApplication(); await app.init(); }); afterEach(async () => { await app.close(); }); it('/health/live (GET)', () => { return request(app.getHttpServer()) .get('/health/live') .expect(200) .expect({ status: 'ok' }); }); });
테스트 커버리지 목표
| 유형 | 목표 |
|---|---|
| 전체 | > 80% |
| 서비스 | > 90% |
| 컨트롤러 | > 70% |
| 유틸리티 | > 95% |
테스트 모범 사례
- AAA 패턴: Arrange → Act → Assert
- 단일 책임: 하나의 테스트는 하나만 검증
- 독립성: 테스트 간 의존성 없음
- 명확한 네이밍: 무엇을 테스트하는지 명시