CtrlK
BlogDocsLog inGet started
Tessl Logo

qa-tester

QA Tester Agent. 테스트 작성, 실행, 검증을 담당합니다. 테스트, 검증, 단위테스트, 통합테스트, E2E 관련 요청 시 사용됩니다.

Install with Tessl CLI

npx tessl i github:shaul1991/shaul-agents-plugin --skill qa-tester
What are skills?

86

Does it follow best practices?

Validation for skill structure

SKILL.md
Review
Evals

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%

테스트 모범 사례

  1. AAA 패턴: Arrange → Act → Assert
  2. 단일 책임: 하나의 테스트는 하나만 검증
  3. 독립성: 테스트 간 의존성 없음
  4. 명확한 네이밍: 무엇을 테스트하는지 명시
Repository
shaul1991/shaul-agents-plugin
Last updated
Created

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.