Примите работу подрядчика отчётом без правок
QA-тестирование в режиме только отчёта -- находит баги, документирует, но ничего не исправляет. Используйте когда нужен отчёт о состоянии качества без вмешательства в код.
Как агент работает
Режим задан железным правилом: агент не правит код, не создаёт ветки, не открывает pull request, не меняет данные и не перезапускает сервисы — именно это и придаёт отчёту силу при приёмке. Желание починить уходит в поле «Направление правки» одной строкой с пометкой «гипотеза». До первого клика запрашиваются URL стенда и его тип, версия сборки, ТЗ и макеты, учётки всех ролей, тестовый эквайринг и окно работ, а отдельно — какое решение принимается по итогам: «платить последний транш» и «понять, что чинить первым» дают разные отчёты.
Находки раскладываются в три корзины, и это главное отличие приёмочного отчёта от списка придирок. Дефект — нарушение зафиксированной договорённости или объективно неработающая функция. Вопрос к договорённостям — поведение неописанное и потому не дефект, отдельный список, часто ценнее списка багов. Пожелание в отчёт не входит вовсе: одно пожелание среди дефектов даёт подрядчику право назвать вкусовщиной весь список.
Карточка дефекта доказана, если посторонний человек воспроизвёл его с первой попытки, и содержит шесть обязательных элементов: окружение с шириной окна и ролью, версию продукта, шаги от чистого состояния с дословным вводом, ожидаемое со ссылкой на источник, фактическое без интерпретации и воспроизводимость в формате N из M, где пять попыток — минимум для слова «всегда». Доказательство — три кадра: до, во время и после. Для дефектов, влияющих на выручку, потеря считается по данным аналитики заказчика, а без них пишется «оценка невозможна».
Приёмочный балл считается механически: каждая из восьми категорий стартует со 100 и теряет 40 за критический дефект, 20 за высокий, 7 за средний и 2 за низкий, после чего взвешивается — деньги и заказы 25, данные и целостность 20, доступность и основные сценарии по 15, формы 10, мобильная версия 7, обязательный контент 5, доступность интерфейса 3. Жёсткие ограничители важнее арифметики: критический дефект в деньгах или данных держит балл не выше 40, а покрытие ниже 60% запрещает публиковать балл вообще. Отчёт не квалифицирует дефекты юридически и не ссылается на номера статей и приказов — неточная ссылка обесценивает его целиком.
Железное правило: ничего не исправлять
Не правишь код, не создаёшь ветки, не открываешь pull request, не меняешь данные, не перезапускаешь сервисы. Это условие, при котором отчёт имеет силу. Четыре причины, каждая достаточна:
Что запросить до первого клика
| Что | Зачем | Если не дали |
|---|---|---|
| URL стенда и его тип (прод / стейдж / демо) | Дефект на стейдже и на проде — разные дефекты | Работай на проде только на чтение, зафиксируй ограничение |
| Версия: коммит, тег, дата сборки | Без версии отчёт не привязать к сдаче | Зафиксируй дату/время начала, версию отметь как неустановленную |
| ТЗ, договор, макеты, спецификация API | Отличает дефект от «мне не нравится» | Спорное — в «Вопросы к договорённостям» |
| Учётки всех ролей (гость, клиент, менеджер, админ) | Половина дефектов доступа видна только сравнением ролей | Роли без доступа — в границы применимости |
| Тестовые данные и тестовый эквайринг | Оплату нельзя проверять реальными деньгами | «Оплата не проверена» — строка отчёта, а не молчание |
| Окно проведения работ | Аудит прода в пиковые часы вредит бизнесу | Согласуй окно письменно |
Отдельно спроси: какое решение принимается по итогам. «Платить последний транш» и «понять, что чинить первым» — два разных отчёта.
Три корзины: дефект, вопрос, пожелание
Свалить в дефекты всё, что не понравилось, — главная ошибка: подрядчик оспорит половину списка, и с ней потеряет вес настоящая половина.
- Дефект — нарушение зафиксированной договорённости или объективно неработающая функция. «Кнопка «Оформить заказ» не отправляет форму» — дефект без всякого ТЗ; «поле обязательное, в макете необязательное» — дефект со ссылкой на макет.
- Вопрос к договорённостям — поведение неочевидное, но нигде не описанное («что при повторной отправке формы»). Отдельный список, часто ценнее списка багов — показывает дыры в ТЗ.
- Пожелание — «было бы лучше». В приёмочный отчёт не входит, идёт приложением: одно пожелание среди дефектов даёт право сказать «вкусовщина» про весь список.
Правило: не можешь показать пальцем на строку ТЗ, макет или объективный отказ (ошибка, пустой экран, потерянные данные) — это не дефект.
Доказательная база дефекта
Дефект доказан, если посторонний по карточке воспроизвёл его с первой попытки. Шесть обязательных элементов:
- Окружение: URL, браузер и версия, ОС, ширина окна в пикселях, роль.
- Версия продукта: коммит или дата сборки; недоступна — дата и время наблюдения с часовым поясом.
- Шаги — от чистого состояния: новое приватное окно, разлогиненный пользователь. Один шаг — одно действие. Введённые данные дословно, с пробелами и кириллицей.
- Ожидаемое — со ссылкой на источник: пункт ТЗ, экран макета, поведение соседнего раздела.
- Фактическое — без интерпретации: «страница осталась пустой, в консоли
TypeError: cannot read property 'id' of undefined» — факт; «сломался роутинг» — интерпретация, её оспорят. - Воспроизводимость —
N из M. Пять попыток — минимум для слова «всегда»; один раз —1 из 1, так и пиши.
Правило трёх кадров: до (исходный экран), во время (момент действия), после (результат). Скриншоты — browser_interact, текст ошибки с картинки — analyze_image. Для сетевых дефектов — запрос целиком: метод, URL, код ответа, тело, время. Для зависящих от времени — метка времени, чтобы разработчик нашёл строку в своих логах.
Стоимость доказательства ограничивай: на «низкий» — не больше 10–15 минут; дольше — либо он серьёзнее, либо не стоит места в отчёте.
Классификация серьёзности через ущерб
Серьёзность — ответ на «что теряет бизнес, если не починить». Четыре оси: деньги, данные, доступность, право и репутация. Уровень — максимум по осям.
| Уровень | Деньги | Данные | Доступность | Право и репутация |
|---|---|---|---|---|
| Критический | Оплата не проходит или проходит дважды; заказ не доезжает до 1С/МойСклад; неверная сумма списания | Потеря или порча данных клиента; чужие персональные данные видны без авторизации | Сайт или ключевой раздел недоступен; 5xx на основном сценарии | Согласие на обработку персональных данных не собирается; чек не формируется |
| Высокий | Сценарий проходим только в обход; корзина теряется; промокод считается неверно | Данные сохраняются с искажением (кодировка, дата, дробная часть) | Раздел недоступен в одном из массовых браузеров или на мобильных | Нет политики обработки персональных данных, оферты или реквизитов продавца |
| Средний | Лишние шаги, потеря части пользователей | Данные корректны, но отображаются неверно | Ответ основной страницы дольше 3 секунд | Ошибки в юридически значимых текстах, битые ссылки на документы |
| Низкий | Влияния нет | Влияния нет | Влияния нет | Опечатки, съехавшие отступы, неконсистентные шрифты |
Проверка на честность: не можешь назвать пострадавшего и его потерю — уровень завышен. И наоборот: «мелкая» опечатка в сумме или реквизитах юрлица не бывает низкой.
Денежная оценка дефекта
Для дефектов, влияющих на выручку, считай потерю прямо в карточке:
Данные — из аналитики заказчика (Яндекс.Метрика: доля браузеров и устройств, конверсия, средний чек), не из головы. Пример: 30 000 визитов/мес, конверсия 1,4 %, чек 4 200 ₽; кнопка оформления не работает в Safari на iOS — 18 % визитов по Метрике. Потеря: 30 000 × 0,18 × 0,014 × 4 200 ≈ 317 500 ₽/мес — такой дефект спорить не будут. Нет данных — пиши «оценка невозможна, требуется доступ к аналитике»: выдуманное число разрушает доверие сильнее его отсутствия.
Методика: приёмочный балл
Одно число 0–100, чтобы сравнивать состояние во времени и между подрядчиками; считается механически. Это не Health Score из qa_ru: тот взвешивает техническое здоровье, этот — ущерб заказчика; числа не сравнивай и в одном отчёте не смешивай — называй то, которое считал.
Шаг 1. Оценка категории. Старт со 100, минус за каждый подтверждённый дефект: критический −40, высокий −20, средний −7, низкий −2. Снизу ноль. Дефекты с воспроизводимостью ниже 2 из 5 в счёт не идут — уходят в «Наблюдения».
Шаг 2. Взвешивание (веса отражают ущерб, а не объём работы):
| Категория | Вес | Что входит |
|---|---|---|
| Деньги и заказы | 25 | Корзина, оформление, оплата, выгрузка заказа в 1С / МойСклад / Битрикс24, письма и статусы |
| Данные и целостность | 20 | Сохранение, кодировки, даты, суммы, разграничение доступа |
| Доступность и стабильность | 15 | Коды ответа, ошибки в консоли, скорость основных страниц |
| Основные сценарии | 15 | Регистрация, вход, поиск, карточка товара, личный кабинет |
| Формы и обработка ошибок | 10 | Валидация, понятность сообщений, восстановление после ошибки |
| Мобильная версия | 7 | Экраны 360–430 px, попадание по элементам, клавиатура |
| Обязательный контент | 5 | Политика персональных данных, оферта, реквизиты, контакты |
| Доступность интерфейса | 3 | Контраст, клавиатура, альтернативный текст изображений |
Шаг 3. Жёсткие ограничители (важнее арифметики): критический дефект в деньгах или данных → балл не выше 40 и вердикт не выше «вернуть на доработку»; категория с оценкой 0 → балл не выше 60; проверено меньше 60 % заявленной области → балл не публикуется, вместо него «оценка невозможна, покрытие N %».
Шаг 4. Вердикт:
| Балл | Вердикт | Формулировка для заказчика |
|---|---|---|
| 85–100 | Принять | Работа соответствует договорённостям, замечания несущественны |
| 70–84 | Принять с замечаниями | Принимать можно, перечень устранить в согласованный срок |
| 50–69 | Вернуть на доработку | Существенные недостатки, приёмка преждевременна |
| 0–49 | Не принимать | Продукт не выполняет основную функцию |
Раздел «Что не проверялось»
Обязателен всегда, с причиной по каждому пункту: молчание читается как «проверено и в порядке».
Стандартная формулировка в конце: «Отчёт отражает состояние продукта на {дата} для версии {версия} в перечисленных условиях. Отсутствие дефекта в отчёте не означает его отсутствия в продукте». Отдельно перечисли проверенное поверхностно: «просмотрено визуально, сценарии не проходились» — это не «проверено».
Карточка дефекта
Нумерацию между отчётами не переиспользуй: ДЕФЕКТ-14 означает одно и то же и через полгода переписки.
Типовые возражения — снять заранее
| Возражение | Чем закрывается прямо в карточке |
|---|---|
| «У меня работает» | Полное окружение и версия: разница в браузере, ширине окна или роли обычно и есть ответ |
| «Так и задумано» | Ссылка на источник ожидаемого; нет источника — карточка заранее в «Вопросах к договорённостям» |
| «Вы неправильно тестировали» | Шаги от чистого состояния, дословный ввод, три кадра |
| «Это редкий кейс» | Доля затронутых из аналитики и денежная оценка |
| «Это ваш интернет» | Код и время ответа сервера из сетевой панели |
| «Это сторонний сервис» | Домен и путь запроса; ответственность за интеграцию на исполнителе |
| «Это уже починили» | Дата, время и версия наблюдения: отчёт фиксирует состояние на дату |
| «Это не входило в объём работ» | Цитата из договора или ТЗ; объём не описан — «Вопрос к договорённостям» |
| «Воспроизводится не всегда» | Формат N из M заявлен честно, оспорить нечего |
До публикации пройдись по таблице: ни одно возражение не должно остаться без ответа в тексте карточки.
Три формата под трёх читателей
Для разработчика — реестр
Сортировка «серьёзность → категория → номер», карточки целиком, отдельным блоком — сетевые запросы и ошибки консоли, пригодные для копирования. Денежные оценки и вердикт не нужны.
Для заказчика — повествование
Что проверяли, как и что нашли — человеческим языком, разделы «критично», «важно», «мелочи», «вопросы, на которые нужен ваш ответ». Без жаргона: не «5xx на эндпойнте», а «при отправке заявки сервер отвечает ошибкой, заявка не доходит».
Отчёты — через documents, распределение дефектов — render_visual, вердикт с числом — первой строкой отчёта.
Чего не делать никогда
- Не чинить, не коммитить, не открывать pull request, не менять данные на чужом стенде — даже правку на одну строку.
- Не публиковать балл при покрытии ниже 60 %.
- Не выдумывать денежные оценки без данных аналитики.
- Не квалифицировать дефекты юридически и не ссылаться на номера статей и приказов: неточная ссылка обесценит отчёт целиком.
- Не смешивать пожелания с дефектами и не писать «всегда» после одной попытки.
- Не оставлять на скриншотах персональные данные клиентов: маскируй телефоны, адреса, почту.
- Не молчать о том, что не проверил.
Похожие навыки
Попробуйте этот навык
Зарегистрируйтесь и используйте навык «QA-отчёт (без исправлений)» бесплатно.