Test cases
Составление тест-кейсов по best practice QA с экспортом в CSV для импорта в Zephyr Scale (Option 1) или созданием напрямую через MCP вашей TMS. Используй, когда пользователь просит сгенерировать, составить или подготовить тест-кейсы, чек-листы или CSV для импорта в TMS.From its SKILL.md
npx -y skills add akovalion/paranoid-qa --skill test-casesAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 9 stars9 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
20.0 KB, ~5.1k tokens by cl100k_base, as published. Nobody here has run it
Составь тест-кейсы по правилам ниже. Сначала готовь их в md-файле для валидации, затем — CSV для импорта (или прямое создание через MCP, раздел 13).
Учитывай логику требований и существующие макеты. При расхождении между макетом и реализацией — фиксируй вопросом аналитику.
-
Формат тест-кейсов:
- Наименование — короткое и понятное (объект: суть проверки, как «Открытие календаря», «Пагинация списка»). Без URL, селекторов и технических деталей в названии (им место в шагах/objective). Не пиши в названии TC-(номер ТК).
- Предусловия выполнения тест-кейса (если применимо)
- Шаги (максимально подробные, атомарные)
- Ожидаемый результат (указывай только после логически значимых шагов)
- Приоритет (High / Normal / Low)
- Тип (UI / Functionality / Integration — или значения, принятые в вашем проекте)
- Reference (ссылка или название макета из Figma/PDF, конкретный элемент) - если применимо
- Использовать ТОЧНЫЕ названия полей, кнопок, заголовков, плейсхолдеров как в реализации/макетах/ТЗ
- Если в макете поле называется «Кем выдан?» — писать «Кем выдан?», не «Кем выдан ДУЛ»
- Проверять: двоеточия, вопросительные знаки, регистр, пробелы в лейблах
- Если названия в требованиях и макетах расходятся — фиксировать как вопрос для аналитика
-
Шаги:
- Каждый шаг — одно действие
- Обязательно указывать: • "Кликнуть по кнопке «Название кнопки»" • "Ввести значение «…» в поле «Название поля»" • "Выбрать значение «…» из выпадающего списка «Название»" • "Навести курсор на элемент «…»" • "Открыть страницу по URL …"
- Избегай ссылок-сокращений: ❌ «аналогично», «повторить шаги», «как в предыдущем тест-кейсе», ❌ «выбрать значения согласно названию ТК» Каждый шаг должен читаться независимо от других ТК.
-
Ожидаемый результат:
- По умолчанию — отдельный Expected Result после значимых шагов, а не один общий в конце
- Указывай результат после шагов, где: • происходит валидация • меняется состояние UI • отправляются данные • отображается ошибка/сообщение и тд
- Формулировка: • "Система отображает…" • "Поле подсвечивается ошибкой…" • "Кнопка становится активной/неактивной…" и тд
- Источник ОР — требования/ТЗ, затем макеты. Реализация/стенд — НЕ источник ОР: из реализации берутся только точные названия элементов, а ожидаемое ПОВЕДЕНИЕ — из требований и макетов. Если реализация расходится с требованиями — это баг или вопрос аналитику, а не основа для ОР.
-
Покрытие: Негатив — обязательный артефакт, не опция. Выдели отдельную группу «Негатив/Границы»; в оценке покрытия (раздел 12) перечисли, какие негатив-классы закрыты и какие осознанно пропущены (с причиной). Позитив-only набор неполон, даже если объект кажется простым/навигационным. Оверлеи/модалки/панели (пример пака под тип объекта): блокировка прокрутки (позиция сохраняется, фон не скроллится, компенсация ширины скроллбара без «прыжка»), закрытие ×/Esc/клик по фону/Back, deep-link и перезагрузка (состояние в URL), даблклик/спам, ресайз при открытом, стекинг оверлеев, вмещаемость во вьюпорт на КАЖДОМ брейкпоинте (вкл. планшет и короткий/ландшафтный экран): контент не обрезается по вертикали И по горизонтали (не уезжает за края), при контенте выше вьюпорта — внутренний скролл, все элементы и кнопки (submit/футер/закрытие) доступны, безопасные отступы от краёв. У других типов объектов — свой негатив-пак (формы, списки, навигация, API; см. references). Включай в покрытие:
- Позитивные сценарии
- Негативные сценарии
- Граничные значения Не дублируй одинаковые проверки без причины.
- UI-состояния: • default • hover • focus • disabled • error • loading (если применимо) и тд
- Поведение при: • перезагрузке страницы • навигации • потере сети (если есть интеграции) и тд
- Должна быть качественная оптимизация, но не терять качество и покрытие
- Проверки производятся на разрешениях (если задача связана с UI/адаптивом): Desktop: 1920x1080, 1536x864, 2560x1440 Mobile: 414x896, 360x800, 393x873, 430x926 Tablet: 768x1024, 1024x768
- Целостность вёрстки на КАЖДОМ брейкпоинте — для ЛЮБОГО объекта, не только модалок: ничего не обрезается по вертикали и по горизонтали и не уезжает за края; все элементы, тексты, иконки и кнопки видимы и доступны; при контенте выше вьюпорта — скролл (для оверлеев внутренний); состав и расположение сверяются с макетом ИМЕННО для этого брейкпоинта (пункт не должен пропасть, переехать или сменить сторону иконки). Модалки/оверлеи — лишь частный случай.
- Повторное использование формы: • работоспособность после успешной отправки и возврата (кнопка «Отправить ещё» и т.п.) • корректность всех полей и списков при повторном заполнении
- Последовательная валидация: • смена типа ошибки при изменении ввода (например: ввод латиницы → стирание → ошибка должна смениться с «Только кириллица» на «Обязательное поле») • независимость ошибок между полями (ошибка в поле А не влияет на текст ошибки в поле Б)
- Точные тексты ошибок: • указывать ожидаемый текст ошибки в Expected Result, а не абстрактное «отображается ошибка» Если текст ошибки неизвестен - указывать ожидаемый смысл
- Если поле имеет дополнительные UI-элементы (кнопка «Нет отчества», тогл, иконка очистки) - проверять их наличие/отсутствие и поведение отдельно
-
Сверка с реализацией и макетами:
- При наличии макетов/скриншотов — сверять тест-кейсы с ними
- Figma — ОБЯЗАТЕЛЬНО смотреть макет ГЛАЗАМИ, а не только его структуру:
выгрузка дерева (
get_figma_data) даёт сетку и layout текстом, но часть контента скрыта в шаблонах компонентов (template=…) и в выгрузку не попадает; различия между брейкпоинтами (desktop/mobile) в дереве не видны. Дополнительно скачивать отрисованные фреймы (download_figma_images, desktop + mobile) и просматривать их — только визуал даёт точные подписи кнопок/карточек, полный состав групп и ловит расхождения между брейкпоинтами - По умолчанию ОР пишутся 1в1 с макетом (точные заголовки, тексты, полный состав списков/групп, названия, иконки) — дефолт максимальной точности. Послабление по контенту — ТОЛЬКО когда пользователь явно просит не привязываться к контенту (напр. наполнение тестового стенда отличается от макета): тогда проверять наличие блока и ключевые названия/заголовки/иконки, не впечатывая жёсткий полный перечень. Структуру, заголовки и ключевые названия сверять точно всегда
- Расхождения фиксировать как баги или вопросы
- Если поле по требованиям «необязательное», но в реализации требует ввода — это баг
-
Интеграции: Если есть API / внешние сервисы:
- Проверять: • корректную отправку параметров • обработку ошибок 4xx / 5xx • отсутствие падений UI и тд
- Указывать это в шагах и Expected Result
-
Структура:
- Порядок ТК: сначала High, затем Normal, затем Low
- Внутри каждой группы сначала позитивные сценарии, затем негативные
- Группируй логически (Отображение / Валидация / Навигация / Негатив)
- Разделяй Desktop и Mobile, если есть адаптив
- Целевые браузеры — по требованиям проекта; типовой минимум: Chrome (Desktop + Android), Safari (iOS)
- Для Mobile-only ТК добавляй префикс
[Mobile]в название
-
Стиль:
- Деловой, QA-стиль
- Без воды
- Четко, однозначно, воспроизводимо
-
Результат:
- Тест-кейсы должны быть готовы к импорту в TMS (CSV)
- Если подключён MCP вашей TMS (например, Zephyr Scale MCP с инструментом create_test_case) — после валидации md-файла предложи пользователю создать ТК напрямую вместо ручного импорта CSV; CSV остаётся как fallback
- Без сокращений и неоднозначных формулировок
- Имя файлов:
{TASK_KEY}_test_cases.mdи{TASK_KEY}_test_cases.csv(например:PROJ-1234_test_cases.md). Сохранять в текущую рабочую директорию.
-
Экспорт для Zephyr Scale
- Генерировать CSV в формате "Option 1" (Steps): Колонки строго: Name, Status, Step, Expected Result, Preconditions, Priority, Type
- Правило строк: 1 строка CSV = 1 шаг Для первого шага тест-кейса заполнять Name и Status Для последующих шагов этого же тест-кейса оставлять Name и Status пустыми
- Expected Result заполнять для каждого шага (в той же строке)
- Кодировка: UTF-8
- Разделитель: запятая (,)
- Все поля экранировать кавычками (") при необходимости (запятые/переносы/кавычки)
- Не использовать переменные/плейсхолдеры вида {…} в CSV (писать текстом)
- Анализ требований и уточнения
Различай два типа вопросов по неоднозначностям:
Критичные для генерации — без ответа невозможно корректно составить ТК (противоречие в макете и описании, неясный happy path, неизвестное поведение валидации, отсутствует ключевой сценарий):
- Задавай напрямую через
AskUserQuestionДО начала генерации - Группируй связанные вопросы в один вызов (макс. 4 вопроса за раз)
- Если уточнения по задаче уже пройдены ранее в этом разговоре (контекст собран из трекера, вопросы заданы) — переходи к генерации без повторных вопросов
Для аналитика — требуют бизнес-контекста, недоступного пользователю в чате (точные тексты ошибок из API, тайминги, политики, особенности интеграций):
- Собирай в отдельный список «Вопросы для аналитика» в конце ответа
- После того как пользователь принесёт ответы — актуализируй ТК
- Оценка полноты покрытия:
- В конце дай краткую оценку: что покрыто, что осознанно не покрыто и почему
- Прямое создание в TMS через MCP (если подключён):
- Границы. Если проект в TMS общий для нескольких команд — все операции
только внутри дерева папок своей команды; чужие корни не менять и не
выводить в отчёты. Зафиксируйте свою корневую папку в
CLAUDE.mdпроекта. - Перед созданием ВСЕГДА получай актуальное дерево папок (
get_foldersили аналог) — структура живая, подпапки добавляются; не работай по снимку из памяти. - Перед генерацией новых ТК сверь существующее покрытие целевой папки (поиск ТК по папке): генерируй только недостающее; пересечение с существующим ТК — повод актуализировать его через update, а не создавать дубликат.
- Пути папок использовать ДОСЛОВНО как вернул API: имена могут содержать трейлинг-пробелы. При создании новых папок избегать спецсимволов (кавычки, запятые) и смешения алфавитов в именах — они часто ломают поиск по API.
- Папку выбирай по функционалу фичи; для новой фичи без своей подпапки — предложи создать папку или уточни у пользователя.
- Правила контента те же, что для CSV: 1 шаг = 1 description, expectedResult после значимых шагов (правила выше); ОР формулировать «Система отображает…».
- Привязывай ТК к тикету трекера (issue_links или аналог) — всегда, если TMS это поддерживает.
- Учитывай, что TMS может перезаписывать статус при создании (напр. всегда «Draft»); перевод в «Approved» — после ревью и ответов аналитика через update.
- md-файл с ТК остаётся обязательным этапом валидации ДО создания в TMS; CSV (раздел 10) — fallback, если MCP недоступен.
- Прогоны по задаче (по запросу пользователя): создать test run → статусы по ходу прогона (Pass/Fail/Blocked). Статус Fail сопровождай комментарием с причиной/ссылкой на дефект.
- Точка входа — первым шагом ТК открывать страницу объекта проверки («Открыть страницу по URL …»), чтобы было видно где проверять. Для ТК с особым предусловием (экран успеха, заполненная форма) URL указывать в precondition.
- Если TMS рендерит описания как HTML (напр. Zephyr Scale DC) — URL
оформлять кликабельной ссылкой
<a href="https://...">https://...</a>, чтобы ссылка в ТК была кликабельна.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.