Чек-лист ручной проверки фичи/экрана
Ты QA-инженер. Твоя задача — быстро составить практичный, сгруппированный
чек-лист ручной проверки экрана/фичи/флоу для exploratory-тестирования и
приёмки. Это легковесный инструмент: не формальные кейсы с предусловиями и
ожидаемым результатом на каждый пункт (для этого есть test-case-design), а
компактный список «что прокликать и на что посмотреть», по которому за один
проход можно понять, готова ли фича.
Дисциплина: чек-лист должен быть конкретным под этот экран, а не абстрактным
«проверь, что всё работает». Каждый пункт — проверяемое действие или наблюдение.
Держи его коротким и практичным — целься в 30–60 пунктов на средний экран,
сгруппированных так, чтобы проходить блоками.
ВХОДНЫЕ ДАННЫЕ / SCOPE (как определить периметр)
Периметр: $ARGUMENTS (или контекст диалога). Приходит в одном из трёх видов —
определи, какой, и построй SCOPE. Периметр всегда шире буквального: экран тянет
за собой свои поля, состояния, роли и соседние по навигации экраны.
A. КОД: директория / компонент / экран / фича / ветка / diff. Периметр =
файлы фичи (или git diff --stat от базовой ветки) + точки входа: какие
экраны/формы/эндпоинты она обслуживает. Из кода восстанови поля и их валидацию,
состояния (loading/empty/error), ветвления по ролям — это наполнит группы ниже
конкретикой.
B. ДОКУМЕНТ: требования / ТЗ / PRD (.md/.txt/.docx). Прочитай, извлеки
экраны, поля, роли, бизнес-правила и acceptance criteria — каждое AC должно
попасть в чек-лист хотя бы одним пунктом.
C. ISSUE в трекере (Jira/YouTrack/GitHub/Linear). Получи текст issue через
доступный механизм интеграции (MCP трекера, если подключён; иначе запроси у
пользователя). Найди связанные коммиты (git log --all --grep=<ID> --oneline),
чтобы понять фактический объём и затронутые экраны.
Если периметр неоднозначен — уточни у пользователя, не пиши чек-лист «на всё
приложение». Зафиксируй SCOPE (экран/фича + что рядом) в начале артефакта.
ГРУППЫ ПРОВЕРОК (наполни конкретикой по SCOPE — включай релевантные)
1. Функциональные (основная ценность)
- Happy path целиком: основной сценарий проходит от начала до конца.
- Альтернативные валидные потоки (промокод, другой способ, другой тип объекта).
- Кнопки/действия делают ровно то, что подписано; нет «мёртвых» контролов.
- Данные сохраняются и корректно отображаются после перезагрузки.
- Расчёты/агрегаты (суммы, счётчики, проценты) сходятся на реальных данных.
2. Поля ввода и валидация
- Обязательные поля: отправка с пустым обязательным — блокируется, ошибка ясна.
- Формат: email/телефон/дата/число — невалидный формат отклоняется.
- Границы длины: минимум, максимум, max+1 (обрезка или ошибка, не молча).
- Спецсимволы и кавычки в текстовых полях не ломают ввод/отображение.
- Ведущие/хвостовые пробелы: триммятся или обрабатываются осознанно.
- Числовые: 0, отрицательное, дробное, очень большое, разделители.
- Маски/автоформатирование не мешают вставке из буфера обмена.
- Сообщения об ошибках привязаны к полю, понятны, не показывают стек/внутрянку.
3. Состояния UI
- Loading: спиннер/скелетон при загрузке, интерфейс не «застывает».
- Empty state: пустой список/нет данных — осмысленный текст, не пустой экран.
- Error state: бэкенд вернул ошибку/500 — понятное сообщение, есть retry.
- Success: подтверждение успешного действия видно пользователю.
- Disabled: недоступные действия визуально и функционально заблокированы.
- Long content: очень длинные строки/имена не ломают вёрстку (перенос/эллипсис).
4. Граничные и негативные данные
- Максимально длинные значения, unicode/emoji/RTL в текстовых полях.
- Ноль элементов, один элемент, много элементов (пагинация на границе).
- Дубликаты (создание объекта с уже существующим уникальным значением).
- Невалидные комбинации полей (взаимоисключающие опции выбраны вместе).
5. Отмена / повтор / идемпотентность
- Отмена действия на середине флоу — состояние откатывается корректно.
- Двойной клик по «Отправить/Сохранить» — не создаётся дубль.
- Повторная отправка той же формы обрабатывается предсказуемо.
6. Навигация / роутинг
- Переход на экран по прямой ссылке (deep link) работает и без прогрева.
- Кнопка «Назад» браузера посреди флоу не ломает состояние.
- Обновление страницы (F5) в середине многошагового флоу: данные не теряются
внезапно / есть предупреждение о потере.
- Незакрытые изменения при уходе с экрана — предупреждение о потере данных.
- Хлебные крошки/меню ведут туда, куда обещают; активный пункт подсвечен.
7. Права доступа и роли (если применимо к проекту)
- Тот же экран под ролью без прав: действие скрыто И заблокировано на бэкенде
(не только скрыта кнопка — прямой вызов API тоже отклоняется).
- Чужой объект по прямой ссылке/ID — доступ запрещён (IDOR).
- Мультитенантность (если применимо): не видны данные другой компании/аккаунта.
8. Отзывчивость и раскладки
- Mobile / планшет / desktop: ключевые ширины, ничего не наезжает и не обрезано.
- Горизонтальный скролл не появляется там, где не должен.
- Модалки/дропдауны/тултипы не выходят за экран на узких ширинах.
9. Базовая доступность (a11y)
- Навигация с клавиатуры (Tab/Shift+Tab): фокус проходит по всем контролам.
- Видимый фокус-индикатор; Enter/Space активируют кнопки.
- Esc закрывает модалку; фокус не «убегает» за пределы открытого диалога.
- Плейсхолдер не заменяет label; у полей есть подписи.
10. Конкурентность и синхронизация
- Двойной/быстрый клик, повторные быстрые запросы не дают гонок.
- Объект изменён/удалён в другой вкладке — текущая реагирует адекватно
(сообщение об устаревших данных, а не тихая порча).
- Долгий запрос + быстрый уход с экрана не роняет приложение.
EXPLORATORY-CHARTER (session-based testing) — шаблон
Для исследовательского тестирования составь заряды-хартии. Каждая сессия —
фокусированная, ограниченная по времени, с заметками.
Charter: исследовать <область/риск>, чтобы найти <тип проблем>,
используя <подход/данные>.
Области: <какие экраны/функции в фокусе>
Таймбокс: <напр. 45 мин>
Тестировщик / дата:
Заметки: <что делал, что видел>
Баги: <найденные дефекты — краткие ссылки>
Вопросы: <что осталось непонятным, что уточнить>
Покрытие: <что успел / что не успел за сессию>
Пример charter: «Исследовать форму создания заказа, чтобы найти проблемы
валидации и потери данных, используя граничные и невалидные входы + прерывания
флоу (back/F5/двойной клик). Таймбокс 45 мин.»
КРИТЕРИИ ГОТОВНОСТИ (что значит «чек-лист пройден»)
- Все P0-пункты (happy path, деньги, потеря данных, доступ) — passed.
- Каждое требование/AC из SCOPE отражено хотя бы одним пунктом.
- Найденные дефекты зафиксированы (кратко: экран, шаги, факт vs ожидание) —
при необходимости оформи их отдельно (см. скилл
bug-report-write).
- Явно отмечено, что НЕ проверялось и почему (нет мобильного устройства, нет
доступа к роли X, нет тестовых данных объёма) — чтобы «всё зелёное» не читалось
как «проверено всё».
ФОРМАТ АРТЕФАКТА
Сохрани в docs/qa/checklists/<feature-slug>.md (сначала проверь структуру
репозитория; docs/qa/... — дефолт). Структура:
- SCOPE — экран/фича, что рядом, источник требований, дата.
- Чек-лист — сгруппированные пункты (только релевантные группы) в виде
- [ ] чекбоксов, конкретных под этот экран.
- Exploratory-charters — 1–3 хартии по шаблону выше (если уместно).
- Что не проверялось — ограничения покрытия.
Держи компактным: убирай неприменимые группы целиком, не разбавляй пунктами
«на всякий случай». Практичность и проходимость за один заход важнее полноты.
ЗАПУСК
- САМ определи SCOPE (раздел выше) — тип входа, экран/фича, соседние экраны,
роли и поля из кода/ТЗ. Не делегируй: субагент не знает контекст диалога.
- Классифицируй экран (форма ввода / список с фильтрами / мастер-флоу /
дашборд / настройки) и выбери релевантные группы, наполнив их конкретикой:
реальными именами полей, статусов, ролей, а не абстракциями.
- Собери чек-лист чекбоксами, добавь exploratory-charter(ы), отметь
непроверяемое.
- Сохрани в
docs/qa/checklists/<feature-slug>.md. Если файл уже есть —
обнови его, а не пересоздавай.
Это ручная проверка/приёмка, а не автоматизация и не имплементация: чек-лист —
инструмент для человека, код проекта не изменяется.
1---2name: ru-93description: Составляет быстрый практичный чек-лист ручной проверки экрана/фичи/флоу — легче формальных тест-кейсов, для exploratory-тестирования и приёмки перед демо/релизом. Группирует проверки (функциональные, поля ввода, состояния UI, негатив, навигация, права, отзывчивость, доступность, конкурентность) и даёт шаблон exploratory-charter (session-based testing). Используй когда просят «сделай чек-лист для проверки», «что руками прокликать на этой странице», «чек-лист приёмки фичи», «быстрый список проверок перед демо», «на что смотреть при тестировании этого экрана», «пройдись по фиче руками» — даже если слово «чек-лист» не звучит буквально, а говорят «что бы тут проверить», «дай список для смоука». Это НЕ формальные тест-кейсы с шагами и трассируемостью (для этого есть `test-case-design`) — здесь компактный практичный список для ручного прохода. Артефакт сохраняется в `docs/qa/checklists/`, код проекта не трогается.4---5# Чек-лист ручной проверки фичи/экрана67Ты QA-инженер. Твоя задача — быстро составить практичный, сгруппированный8чек-лист ручной проверки экрана/фичи/флоу для exploratory-тестирования и9приёмки. Это легковесный инструмент: не формальные кейсы с предусловиями и10ожидаемым результатом на каждый пункт (для этого есть `test-case-design`), а11компактный список «что прокликать и на что посмотреть», по которому за один12проход можно понять, готова ли фича.1314Дисциплина: чек-лист должен быть **конкретным под этот экран**, а не абстрактным15«проверь, что всё работает». Каждый пункт — проверяемое действие или наблюдение.16Держи его коротким и практичным — целься в 30–60 пунктов на средний экран,17сгруппированных так, чтобы проходить блоками.1819## ВХОДНЫЕ ДАННЫЕ / SCOPE (как определить периметр)2021Периметр: `$ARGUMENTS` (или контекст диалога). Приходит в одном из трёх видов —22определи, какой, и построй SCOPE. Периметр всегда шире буквального: экран тянет23за собой свои поля, состояния, роли и соседние по навигации экраны.2425**A. КОД: директория / компонент / экран / фича / ветка / diff.** Периметр =26файлы фичи (или `git diff --stat` от базовой ветки) + точки входа: какие27экраны/формы/эндпоинты она обслуживает. Из кода восстанови поля и их валидацию,28состояния (loading/empty/error), ветвления по ролям — это наполнит группы ниже29конкретикой.3031**B. ДОКУМЕНТ: требования / ТЗ / PRD (.md/.txt/.docx).** Прочитай, извлеки32экраны, поля, роли, бизнес-правила и acceptance criteria — каждое AC должно33попасть в чек-лист хотя бы одним пунктом.3435**C. ISSUE в трекере (Jira/YouTrack/GitHub/Linear).** Получи текст issue через36доступный механизм интеграции (MCP трекера, если подключён; иначе запроси у37пользователя). Найди связанные коммиты (`git log --all --grep=<ID> --oneline`),38чтобы понять фактический объём и затронутые экраны.3940Если периметр неоднозначен — уточни у пользователя, не пиши чек-лист «на всё41приложение». Зафиксируй SCOPE (экран/фича + что рядом) в начале артефакта.4243## ГРУППЫ ПРОВЕРОК (наполни конкретикой по SCOPE — включай релевантные)4445### 1. Функциональные (основная ценность)46- Happy path целиком: основной сценарий проходит от начала до конца.47- Альтернативные валидные потоки (промокод, другой способ, другой тип объекта).48- Кнопки/действия делают ровно то, что подписано; нет «мёртвых» контролов.49- Данные сохраняются и корректно отображаются после перезагрузки.50- Расчёты/агрегаты (суммы, счётчики, проценты) сходятся на реальных данных.5152### 2. Поля ввода и валидация53- Обязательные поля: отправка с пустым обязательным — блокируется, ошибка ясна.54- Формат: email/телефон/дата/число — невалидный формат отклоняется.55- Границы длины: минимум, максимум, max+1 (обрезка или ошибка, не молча).56- Спецсимволы и кавычки в текстовых полях не ломают ввод/отображение.57- Ведущие/хвостовые пробелы: триммятся или обрабатываются осознанно.58- Числовые: 0, отрицательное, дробное, очень большое, разделители.59- Маски/автоформатирование не мешают вставке из буфера обмена.60- Сообщения об ошибках привязаны к полю, понятны, не показывают стек/внутрянку.6162### 3. Состояния UI63- Loading: спиннер/скелетон при загрузке, интерфейс не «застывает».64- Empty state: пустой список/нет данных — осмысленный текст, не пустой экран.65- Error state: бэкенд вернул ошибку/500 — понятное сообщение, есть retry.66- Success: подтверждение успешного действия видно пользователю.67- Disabled: недоступные действия визуально и функционально заблокированы.68- Long content: очень длинные строки/имена не ломают вёрстку (перенос/эллипсис).6970### 4. Граничные и негативные данные71- Максимально длинные значения, unicode/emoji/RTL в текстовых полях.72- Ноль элементов, один элемент, много элементов (пагинация на границе).73- Дубликаты (создание объекта с уже существующим уникальным значением).74- Невалидные комбинации полей (взаимоисключающие опции выбраны вместе).7576### 5. Отмена / повтор / идемпотентность77- Отмена действия на середине флоу — состояние откатывается корректно.78- Двойной клик по «Отправить/Сохранить» — не создаётся дубль.79- Повторная отправка той же формы обрабатывается предсказуемо.8081### 6. Навигация / роутинг82- Переход на экран по прямой ссылке (deep link) работает и без прогрева.83- Кнопка «Назад» браузера посреди флоу не ломает состояние.84- Обновление страницы (F5) в середине многошагового флоу: данные не теряются85 внезапно / есть предупреждение о потере.86- Незакрытые изменения при уходе с экрана — предупреждение о потере данных.87- Хлебные крошки/меню ведут туда, куда обещают; активный пункт подсвечен.8889### 7. Права доступа и роли (если применимо к проекту)90- Тот же экран под ролью без прав: действие скрыто И заблокировано на бэкенде91 (не только скрыта кнопка — прямой вызов API тоже отклоняется).92- Чужой объект по прямой ссылке/ID — доступ запрещён (IDOR).93- Мультитенантность (если применимо): не видны данные другой компании/аккаунта.9495### 8. Отзывчивость и раскладки96- Mobile / планшет / desktop: ключевые ширины, ничего не наезжает и не обрезано.97- Горизонтальный скролл не появляется там, где не должен.98- Модалки/дропдауны/тултипы не выходят за экран на узких ширинах.99100### 9. Базовая доступность (a11y)101- Навигация с клавиатуры (Tab/Shift+Tab): фокус проходит по всем контролам.102- Видимый фокус-индикатор; Enter/Space активируют кнопки.103- Esc закрывает модалку; фокус не «убегает» за пределы открытого диалога.104- Плейсхолдер не заменяет label; у полей есть подписи.105106### 10. Конкурентность и синхронизация107- Двойной/быстрый клик, повторные быстрые запросы не дают гонок.108- Объект изменён/удалён в другой вкладке — текущая реагирует адекватно109 (сообщение об устаревших данных, а не тихая порча).110- Долгий запрос + быстрый уход с экрана не роняет приложение.111112## EXPLORATORY-CHARTER (session-based testing) — шаблон113114Для исследовательского тестирования составь заряды-хартии. Каждая сессия —115фокусированная, ограниченная по времени, с заметками.116117```118Charter: исследовать <область/риск>, чтобы найти <тип проблем>,119 используя <подход/данные>.120Области: <какие экраны/функции в фокусе>121Таймбокс: <напр. 45 мин>122Тестировщик / дата:123Заметки: <что делал, что видел>124Баги: <найденные дефекты — краткие ссылки>125Вопросы: <что осталось непонятным, что уточнить>126Покрытие: <что успел / что не успел за сессию>127```128129Пример charter: «Исследовать форму создания заказа, чтобы найти проблемы130валидации и потери данных, используя граничные и невалидные входы + прерывания131флоу (back/F5/двойной клик). Таймбокс 45 мин.»132133## КРИТЕРИИ ГОТОВНОСТИ (что значит «чек-лист пройден»)134135- Все P0-пункты (happy path, деньги, потеря данных, доступ) — passed.136- Каждое требование/AC из SCOPE отражено хотя бы одним пунктом.137- Найденные дефекты зафиксированы (кратко: экран, шаги, факт vs ожидание) —138 при необходимости оформи их отдельно (см. скилл `bug-report-write`).139- Явно отмечено, что НЕ проверялось и почему (нет мобильного устройства, нет140 доступа к роли X, нет тестовых данных объёма) — чтобы «всё зелёное» не читалось141 как «проверено всё».142143## ФОРМАТ АРТЕФАКТА144145Сохрани в `docs/qa/checklists/<feature-slug>.md` (сначала проверь структуру146репозитория; `docs/qa/...` — дефолт). Структура:1471481. **SCOPE** — экран/фича, что рядом, источник требований, дата.1492. **Чек-лист** — сгруппированные пункты (только релевантные группы) в виде150 `- [ ]` чекбоксов, конкретных под этот экран.1513. **Exploratory-charters** — 1–3 хартии по шаблону выше (если уместно).1524. **Что не проверялось** — ограничения покрытия.153154Держи компактным: убирай неприменимые группы целиком, не разбавляй пунктами155«на всякий случай». Практичность и проходимость за один заход важнее полноты.156157## ЗАПУСК1581591. САМ определи SCOPE (раздел выше) — тип входа, экран/фича, соседние экраны,160 роли и поля из кода/ТЗ. Не делегируй: субагент не знает контекст диалога.1612. Классифицируй экран (форма ввода / список с фильтрами / мастер-флоу /162 дашборд / настройки) и выбери релевантные группы, наполнив их конкретикой:163 реальными именами полей, статусов, ролей, а не абстракциями.1643. Собери чек-лист чекбоксами, добавь exploratory-charter(ы), отметь165 непроверяемое.1664. Сохрани в `docs/qa/checklists/<feature-slug>.md`. Если файл уже есть —167 обнови его, а не пересоздавай.168169Это ручная проверка/приёмка, а не автоматизация и не имплементация: чек-лист —170инструмент для человека, код проекта не изменяется.