QA The Other WayОбеспечение качества в эпоху тестов, написанных искусственным интеллектом. QA The Other Way.
Практическое QA

Называйте шаги по вопросу, на который они отвечают.

Сделайте отчёт читаемым шагами с проверками, не принимая названия за доказательства.

5 мин. чтенияQA The Other Way
Авторское дерево отчёта связывает названные шаги с проверками.
Авторская редакционная иллюстрация.
Иллюстративное видео к этой статье. английский экранный текст; выберите субтитры для этого языка.

Переведенное издание. Технические идентификаторы остаются в своей первоначальной форме.

Сделайте отчёт читаемым шагами с проверками, не принимая названия за доказательства.
Локальный пример раннера с вымышленными данными, не интерфейс клиента или поставщика.

Отчёт говорит Шаг 1 успешен, Шаг 2 успешен, Шаг 3 неуспешен. Порядок сохранён, смысла мало. Другой говорит Успешно сохранено, хотя код только нажал кнопку. Название обещает непроверенный вывод.

Руководство использует API Playwright Test для вымышленной локальной настройки. Нет аккаунта или сервера. Границы отчёта должны соответствовать вопросам кода, не превращать слова в доказательства.

Дайте каждому шагу проверяемый вопрос

test.step группирует действия под названием. Имя объясняет намерение, отвечающая проверка остаётся внутри. Прочитать текущую настройку честнее, чем Сохранено навсегда при просмотре одной страницы.

await test.step('Read the current demo preference', async () => {
  await expect(page.getByRole('status')).toHaveText('Demo preference: off');
});
await test.step('Enable the local demo preference', async () => {
  await page.getByRole('button', { name: 'Enable demo preference' }).click();
  await expect(page.getByRole('status')).toHaveText('Demo preference: on');
});

Нужны пример и импортированные test и expect. Проверяются локальное начальное и изменённое состояния, не серверное хранение. Название теста, шаги и скриншот должны сохранять границу.

Отделите подготовку от доказательств

Открытие готовит. Чтение начального состояния даёт доказательство. Клик действует, чтение нового состояния даёт другое доказательство. Общее Завершить настройку скрывает изменение вопроса.

Слишком мелкие шаги тоже мешают. Каждый локатор не требует отдельного шага. Группируйте по полезному вопросу, не строкам или желаемому числу.

Вложенность может отражать иерархию, но не прячьте проверки под расплывчатыми именами. Ревьюер должен найти их без цепочки Подготовить, Обработать, Завершить.

Возвращайте нужное следующему шагу

API описывает возврат результата callback из test.step. Это держит контролируемый идентификатор рядом с происхождением. Передавайте необходимое, не создавайте скрытый глобальный склад состояния.

Проверяйте значение. Существующий объект не доказывает правильность записи. Назовите источник и проверки смысла. Используйте разрешённые данные и не включайте частные имена в публичные заголовки.

Проверьте отчёт локальным запуском

Два шага проверяют начальное и изменённое состояния. Контролируемый скриншот показывает локальный результат. Успех не доказывает удалённое хранение. Фильм объясняет структуру отчёта, не записывает клиентский процесс.

При сбое название помогает найти вопрос, не заменяя детали. Читайте проверку и контекст. Не каждое действие успешного шага проверено отдельно. Одни клики могут пройти без доказательства результата.

Проверяйте названия и код вместе

Правило короткое: имя задаёт вопрос, тело содержит нужное действие и проверку, область честная. Обновляйте имена при изменении реализации. Старая подпись может обманывать при корректном, но более узком коде.

AnyTest описывает исследование и тесты для ревью. Спросите, соответствуют ли названия собранным доказательствам. Формат шагов AnyTest не заявляется. Названия облегчают чтение, проверки несут доказательство.

Общие вопросы

Доказывает ли успешный шаг своё название?

Доказательства дают только проверки тела. Само название ничего не доказывает.

Может ли test.step вернуть значение?

Да. Возвращает результат callback; проверьте его перед использованием.

Источники