Test Case Template
Формат портируется в Qase / TestRail / Notion / TestLink через CSV-импорт или копирование. Каждый test case — отдельная секция в файле, начинается с ## TC-....
Шаблон одного кейса
## TC-{T#}-{AREA}-{NNN} — {Краткое название}
**Type:** Smoke | Functional | Negative | Edge | Exploratory
**Priority:** P0 | P1 | P2 | P3
**Regression:** yes | no | conditional
**Roles:** Franchise | Franchisee | Manager | Cashier | All
**Linked bugs:** BUG-NNN, BUG-NNN | —
**Tags:** auth, crud, validation, ...
### Preconditions
- Войти под ролью {role}
- Существует {entity} с {properties}
- Перейти в {section}
### Steps
1. {Атомарное действие}
2. {Атомарное действие}
3. {Действие, вызывающее проверяемое поведение}
### Expected
- {Что должно произойти}
- {Какой response от API}
- {Какое состояние UI}
### Postconditions (опционально)
- {Что нужно откатить после кейса}
- {Что должно остаться в БД}Приоритеты
- P0 — критический функционал, без которого невозможно работать (логин, создание ЮЛ, RBAC)
- P1 — основной happy-path фич (CRUD сущностей, базовая валидация)
- P2 — edge cases, негативные сценарии, нестандартные комбинации
- P3 — UX/визуальные/малозначимые
Типы
- Smoke — быстрая проверка «вообще живо ли»
- Functional — проверка по требованиям (happy path)
- Negative — проверка валидации и обработки ошибок
- Edge — граничные значения, нестандартные комбинации
- Exploratory — без формальных шагов, фиксируется в логе сессии
Regression
- yes — попадает в каждый регрессионный прогон (P0 functional, RBAC checks, критичные negative)
- conditional — прогоняется только если затронута соответствующая область (по changelog)
- no — прогоняется один раз при первом тестировании фичи (exploratory, эстетические)
Roles
Если кейс должен работать одинаково для всех ролей-владельцев — Roles: All + явно укажи в Preconditions сценарии scope-различий.
Если кейс специфичен для роли — указать роли через запятую.
Если кейс именно про RBAC негатив — Roles: {роль которая НЕ должна иметь доступ} + Type: Negative.
Пример заполнения
## TC-T1-AUTH-001 — Login by valid email/password
**Type:** Smoke
**Priority:** P0
**Regression:** yes
**Roles:** All
**Linked bugs:** —
**Tags:** auth, login
### Preconditions
- Существует активный сотрудник с email `franchise@test.local` / паролем `Test12345`
- Открыт `/login`
### Steps
1. Ввести `franchise@test.local` в поле Email
2. Ввести `Test12345` в поле Password
3. Нажать «Войти»
### Expected
- Redirect на `/dashboard`
- Cookie `access_token` установлена
- `GET /auth/me` возвращает 200 с `{ id, email, franchise_id, role_ids, permissions }`
- В шапке отображается имя сотрудникаГруппировка
Файлы тестера группируются по фичам (01-authorization.md, 02-franchises.md и т.д.). Внутри файла кейсы идут от smoke → functional → negative → edge.
При импорте в TMS:
- Файл = Suite
## TC-...= Test Case- Поля до
### Steps= Custom fields