К основному содержанию
правило официальный · GitHub

qa-engineering-best-practices — правило для GitHub Copilot: тесты и QA

Правило для GitHub Copilot с набором инструкций по тестированию: пирамида тестов, именование, ассерты, баг-репорты. Пригодится, когда Copilot пишет тесты в вашем проекте.

Установить в GitHub Copilot · Вручную: положить файлы Все способы и платформы ↓
.github/instructions/qa-engineering-best-practices.instructions.md
Открыть на GitHub

Что делает qa-engineering-best-practices

Это файл инструкций, который Copilot подхватывает при работе с кодом тестов. Внутри — принципы тестирования: писать тесты рядом с кодом, проверять одно поведение за раз, добиваться детерминированности и независимости тестов. Отдельные разделы посвящены пирамиде тестов с долями unit, integration и E2E, соглашениям об именовании в стиле Given/When/Then и выбору конкретных матчеров вместо проверок на истинность.

Есть блоки про тестовые данные и моки: фабрики вместо захардкоженных объектов, изоляция состояния между тестами, мокирование на границах — HTTP-клиенты, адаптеры БД, очереди. Дальше идут разделы по API-тестированию (статусы, схемы ответов, авторизация, граничные значения), UI и E2E (доступные селекторы, явные ожидания вместо sleep, скриншоты при падении), производительности и интеграции с CI. В конце — стандарт баг-репорта из семи пунктов и правила покрытия.

Правило применяется ко всем файлам, потому что в нём стоит applyTo: '**'. Это значит, что инструкции будут влиять на любую задачу, где Copilot трогает тесты, — в том числе когда вы просили совсем другое. Если в проекте уже есть свои соглашения по тестам, они начнут конфликтовать с этим файлом, так что стоит заранее сузить applyTo до каталогов с тестами. Установка — просто копирование файла в .github/instructions/.

Какие задачи решает

  • договориться о едином стиле именования тестов в команде
  • разложить тесты по уровням пирамиды без перекоса в E2E
  • заменить проверки на истинность конкретными матчерами
  • описать баг-репорт так, чтобы его воспроизвели с первого раза
  • убрать sleep и флаки из UI-тестов

Примеры запросов агенту

  • напиши unit-тесты для этого модуля по правилам qa-engineering-best-practices
  • проверь мои тесты на соответствие пирамиде тестов и предложи, что перенести в integration
  • оформи баг-репорт по этому падению: заголовок, окружение, шаги, ожидаемый и фактический результат

Как установить qa-engineering-best-practices

Вручную: положить файлы

.github/instructions/qa-engineering-best-practices.instructions.md

Поле applyTo задаёт, к каким файлам применять

По шагам, с командами для каждой платформы: AGENTS.md и CLAUDE.md: что это, кто читает и какой выбрать

Из того же набора732

Весь набор →
shell Правило, которое заставляет GitHub Copilot писать чистые и безопасные shell-скрипты. Применяется к файлам *.sh автоматически. ★ 40 418звёзд репо scala2 Правило задаёт Copilot стиль Scala по гайду Databricks: неизменяемость, чистые функции, именование. Пригодится, если пишете на Scala 2.12 или 2.13. ★ 40 418звёзд репо rust-mcp-server Правило задаёт Copilot ориентиры при написании MCP-серверов на Rust через официальный SDK rmcp. Пригодится, когда проект на Rust и нужен свой MCP-сервер. ★ 40 418звёзд репо r Задаёт Copilot правила генерации кода на R: стиль проекта, безопасность, работа с путями и данными. Пригодится, если в репозитории есть .R, .Rmd или .qmd файлы. ★ 40 418звёзд репо powershell Правило для GitHub Copilot, которое заставляет его писать идиоматичные скрипты PowerShell по гайдлайнам Microsoft. Пригодится, если в проекте есть .ps1 и .psm1. ★ 40 418звёзд репо power-platform-connector Правило для GitHub Copilot, которое подсказывает, как писать JSON-схемы кастомных коннекторов Power Platform: Swagger 2.0, apiProperties и settings. ★ 40 418звёзд репо power-bi-devops-alm-best-practices Правило для GitHub Copilot: подсказывает агенту, как вести Power BI-проект в Git, собирать CI/CD и раскатывать отчёты по средам. ★ 40 418звёзд репо power-bi-custom-visuals-development Правило для GitHub Copilot, которое подсказывает агенту, как писать кастомные визуалы Power BI на React, D3.js и TypeScript. ★ 40 418звёзд репо

Похожие

test-strategy kindlmann Собирает документ по стратегии тестирования на несколько кварталов: уровни тестов, критерии входа и выхода, KPI качества. Пригодится, когда пора описать подход к QA, а не отдельный релиз. CX Codex +1 1 500установок ai-bug-triage kindlmann Скилл выстраивает гибридный пайплайн триажа багов: нормализует логи CI, дедуплицирует ошибки по отпечаткам и поручает модели оценку критичности и составление тикетов. CX Codex +1 1 400установок qa-expert zhaono1 Скилл для планирования тестового покрытия и настройки quality gates. Пригодится, когда нужно разложить проверки по уровням риска и стадиям CI. CX Codex +1 753установок test-flakiness Donchitos Скилл находит нестабильные тесты в логах CI игровых движков, считает долю сбоев и отправляет проблемные проверки на карантин. CX Codex +1 408установок principal-engineering riekelt Скилл задаёт строгие инженерные правила перед правками: запрещает заглушать ошибки, требует чекпоинт рисков и проверку работы реальным кодом, а не догадками. CX Codex +1 18 000установок ai-first-engineering affaan-m Задаёт правила работы команды, где большую часть кода пишут ИИ-агенты: что проверять на ревью, какие тесты требовать, как строить архитектуру. CX Codex +1 4 600установок engineering-advanced-skills Alireza Rezvani Индекс из 37 инженерных скиллов для архитектуры, автоматизации, надёжности и платформенных задач. Пригодится, когда проекту нужны отдельные рабочие сценарии. 2 019установок

Рядом в каталоге

Всё по теме «Тесты и QA» →

Вопросы о qa-engineering-best-practices

Как установить qa-engineering-best-practices в GitHub Copilot?

Скопируйте файл в .github/instructions/qa-engineering-best-practices.instructions.md в корне репозитория. Copilot читает инструкции из этой папки.

Что делает это правило?

Задаёт Copilot набор инструкций по QA: принципы тестирования, пирамиду, именование, ассерты, работу с тестовыми данными и моками, API- и E2E-тесты, баг-репорты и покрытие.

На какие файлы оно распространяется?

В нём указано applyTo: '**', то есть инструкции действуют для всех файлов проекта. Если это мешает, сузьте шаблон до каталога с тестами.

Исходный текст

qa-engineering-best-practices.instructions.md · MIT
---
applyTo: '**'
description: 'Comprehensive QA engineering best practices covering test strategy, test pyramid, naming conventions, assertion patterns, bug reporting, and automation guidelines for modern software projects.'
---

# QA Engineering Best Practices

A structured set of instructions for GitHub Copilot to assist with quality assurance engineering tasks including test design, automation, and defect management across any technology stack.

---

## Core Testing Principles

- **Test early, test often**: Shift testing left — write tests alongside code, not after.
- **Test one thing at a time**: Each test case should verify a single behaviour or assertion.
- **Tests are first-class code**: Apply the same readability, naming, and refactoring standards to test code as to production code.
- **Fail fast**: Tests should produce clear, actionable failures that point directly to the broken behaviour.
- **Deterministic tests**: Tests must produce the same result on every run. Eliminate randomness, timing dependencies, and shared mutable state.
- **Independent tests**: No test should depend on another test's side effects. Tests must be runnable in any order.

---

## Test Pyramid

Follow the test pyramid to balance coverage, speed, and maintenance cost:

| Layer | Scope | Quantity | Speed |
|-------|-------|----------|-------|
| Unit | Single function / class | Many (60–70 %) | Milliseconds |
| Integration | Module boundaries, DB, API contracts | Moderate (20–30 %) | Seconds |
| End-to-End | Full user journey across UI + backend | Few (5–10 %) | Minutes |

- Prefer unit tests for business logic and edge cases.
- Use integration tests to validate contracts between services and external dependencies.
- Reserve end-to-end tests for critical user paths and smoke suites.

---

## Test Naming Conventions

Use the **Given / When / Then** (GWT) or **should_doX_whenY** pattern consistently.

```
// Good – describes scenario, action, expected result
test('should return 404 when product id does not exist')
test('given an expired token, when the user calls /me, then it returns 401')

// Bad – vague, implementation-focused
test('test1')
test('check user')
```

- Group related tests in `describe` / `context` blocks named after the unit under test.
- Use `it` or `test` for individual cases.
- Test names must be readable as standalone sentences.

---

## Assertion Best Practices

- **One logical assertion per test** where practical; avoid asserting multiple unrelated things.
- Use **specific matchers** over equality checks (`toContain`, `toBeGreaterThan`, `toMatchObject`).
- Always assert the **exact expected value**, not just truthiness (`expect(result).toBe(42)` not `expect(result).toBeTruthy()`).
- For exception testing, assert both the exception type and message.
- Prefer **positive assertions** over negative ones when testing the happy path.

```typescript
// Good
expect(response.status).toBe(200);
expect(response.body.items).toHaveLength(3);

// Avoid
expect(response).toBeTruthy();
expect(response.body).not.toBeNull();
```

---

## Test Data Management

- Use **factories or builders** to create test data — avoid hardcoding raw objects in every test.
- Keep test data **minimal**: only include fields relevant to the test.
- Use **unique identifiers** per test run to avoid collision in shared environments.
- Never use production data or PII in tests.
- Reset or isolate state between tests (in-memory DB, transactions rolled back, mocked dependencies).

---

## Mocking and Stubbing Guidelines

- Mock **at the boundary** (HTTP clients, DB adapters, message queues) — not deep inside business logic.
- Prefer **real implementations** for pure functions and simple value objects.
- Stubs return controlled data; mocks additionally verify interactions — choose the right tool.
- Reset all mocks between tests to prevent state leakage.
- Document why a dependency is mocked if the reason is non-obvious.

---

## API Testing

- Validate **status code**, **response schema**, **headers**, and **response time** for every endpoint.
- Test all **HTTP methods** the endpoint exposes (GET, POST, PUT, PATCH, DELETE).
- Cover **authentication and authorisation** paths: valid token, expired token, missing token, wrong role.
- Test **boundary values** for inputs: empty string, null, max length, special characters, Unicode.
- Validate **error response bodies** follow a consistent schema.
- Assert **idempotency** for PUT and DELETE operations.

---

## UI / End-to-End Testing

- Target **user-visible behaviour**, not implementation details (avoid asserting CSS classes or internal state).
- Use **accessible selectors** in order of preference: `role` → `label` → `test-id` → `text`.
- Avoid `sleep` / fixed waits; use **explicit waits** on element state (visible, enabled, network idle).
- Run E2E tests against a **stable, isolated environment** (not shared staging).
- Keep E2E scenarios **short and focused** — break long flows into smaller composable steps.
- Capture **screenshots and traces** on failure for easier debugging.

---

## Performance Testing

- Define **SLOs** (Service Level Objectives) before writing performance tests: target latency p50/p95/p99, throughput, error rate.
- Include **ramp-up**, **steady state**, and **ramp-down** phases in load tests.
- Test under **realistic data volumes** — synthetic tests with empty DBs are not representative.
- Track results over time to detect **performance regressions**.
- Distinguish between **load testing** (expected traffic), **stress testing** (beyond capacity), and **soak testing** (sustained load over time).

---

## Bug Reporting Standards

A good bug report includes:

1. **Title**: concise, specific — include component, action, and symptom (`[Checkout] Order total is incorrect when coupon is applied`).
2. **Environment**: OS, browser/runtime version, deployment environment.
3. **Steps to reproduce**: numbered, minimal, deterministic.
4. **Expected result**: what should happen.
5. **Actual result**: what actually happens, including error messages and stack traces.
6. **Severity**: Critical / High / Medium / Low (defined by business impact).
7. **Attachments**: screenshots, logs, network traces, test IDs.

---

## Test Coverage Guidelines

- Aim for **meaningful coverage**, not a percentage target — 100 % line coverage with trivial tests is worthless.
- Prioritise coverage for **critical paths**, **complex logic**, and **previously buggy areas**.
- Track **branch coverage** and **mutation scores** alongside line coverage.
- Use coverage reports to find untested **edge cases**, not to game metrics.

---

## CI/CD Integration

- Tests must pass in CI before any merge to main/trunk — no exceptions.
- Run **fast tests** (unit, lint) on every commit; run **slow tests** (integration, E2E) on PR merge or nightly.
- Make test failures **visible and actionable** in CI output — include test name, failure reason, and relevant logs.
- Archive **test reports and artefacts** (JUnit XML, coverage HTML, traces) as CI build artefacts.
- Configure **flaky test detection**: auto-retry once, flag as flaky after repeated inconsistency.

---

## Test Review Checklist

Before approving a PR that changes tests:

- [ ] New behaviour is covered by tests at the appropriate pyramid level.
- [ ] Tests are named clearly and follow the project convention.
- [ ] No `sleep`, `Thread.Sleep`, or arbitrary timeouts.
- [ ] Mocks are reset after each test.
- [ ] No hardcoded environment-specific values (URLs, credentials).
- [ ] Tests are independent and can run in isolation.
- [ ] Test code is readable without needing to read the implementation.

© github · MIT · github/awesome-copilot

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой