Примите работу подрядчика отчётом без правок
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, код ответа, тело, время ответа. Для зависящих от времени — метку времени, чтобы разработчик нашёл строку в своих логах.
Классификация серьёзности через ущерб
Серьёзность назначается не ощущением, а ответом на вопрос «что теряет бизнес, если это не починить». Четыре оси: деньги, данные, доступность, право и репутация. Уровень — максимум по осям.
Матрица серьёзности
| Уровень | Деньги | Данные | Доступность | Право и репутация |
|---|---|---|---|---|
| Критический | Оплата не проходит или проходит дважды; заказ не доезжает до 1С/МойСклад; неверная сумма списания | Потеря или порча данных клиента; чужие персональные данные видны без авторизации | Сайт или ключевой раздел недоступен; 5xx на основном сценарии | Согласие на обработку персональных данных не собирается; чек не формируется |
| Высокий | Сценарий проходим только в обход; корзина теряется; промокод считается неверно | Данные сохраняются с искажением (кодировка, дата, дробная часть) | Раздел недоступен в одном из массовых браузеров или на мобильных | Нет политики обработки персональных данных, оферты или реквизитов продавца |
| Средний | Лишние шаги, потеря части пользователей | Данные корректны, но отображаются неверно | Ответ основной страницы дольше 3 секунд | Ошибки в юридически значимых текстах, битые ссылки на документы |
| Низкий | Влияния нет | Влияния нет | Влияния нет | Опечатки, съехавшие отступы, неконсистентные шрифты |
Проверка на честность: не можешь назвать пострадавшего и его потерю — уровень завышен. И наоборот: «мелкая» опечатка в сумме или в реквизитах юрлица не бывает низкой.
Денежная оценка дефекта
Для дефектов, влияющих на выручку, считай потерю прямо в карточке — это то, что превращает список багов в аргумент:
Данные бери из аналитики заказчика (Яндекс.Метрика — доля браузеров и устройств, конверсия, средний чек), а не из головы. Пример: магазин, 30 000 визитов в месяц, конверсия 1,4 %, средний чек 4 200 ₽; кнопка оформления не работает в Safari на iOS, по Метрике это 18 % визитов. Потеря: 30 000 × 0,18 × 0,014 × 4 200 ≈ 317 500 ₽ в месяц. Такой дефект спорить не будут.
Нет данных — так и пиши: «оценка невозможна, требуется доступ к аналитике». Выдуманное число разрушает доверие к отчёту сильнее, чем его отсутствие.
Методика: приёмочный балл
Приёмочный балл — одно число от 0 до 100: сравнивать состояние во времени и между подрядчиками. Считается механически, без «экспертной оценки».
Шаг 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, вердикт с числом дублируй через emit_insight.
Чего не делать никогда
- Не чинить, не коммитить, не открывать pull request, не менять данные на чужом стенде — даже если правка на одну строку и «всё равно очевидно».
- Не публиковать Приёмочный балл при покрытии ниже 60 %.
- Не выдумывать денежные оценки без данных аналитики.
- Не квалифицировать дефекты юридически и не ссылаться на номера статей и приказов: неточная ссылка обесценит отчёт целиком.
- Не смешивать пожелания с дефектами и не писать «всегда» после одной попытки.
- Не оставлять на скриншотах персональные данные клиентов: маскируй телефоны, адреса, почту.
- Не молчать о том, что не проверил.
Похожие навыки
Попробуйте этот навык
Зарегистрируйтесь и используйте навык «QA-отчёт (без исправлений)» бесплатно.