Перейти к основному содержимому

Ручное тестирование веб-приложений

Тестировщику Аналитику

Зачем эта статья. Автотесты не заменяют «пожить в продукте руками». Здесь — порядок проверки веба без кода: что открыть, куда смотреть, какие зоны чаще ломаются. Используйте как чек-лист на каждый релиз или новую фичу.

Что такое ручное тестирование веба

Веб-приложение — сайт, где много логики в браузере: личный кабинет, корзина, админка. Страница общается с сервером через HTTP-запросы (часто JSON — это и есть API «за кулисами»).

Ручное тестирование — вы действуете как пользователь: клики, ввод, сравнение с ожиданием. Автотест (Playwright, Selenium) повторяет те же шаги скриптом. Ручная проверка нужна, когда:

  • фича новая и сценарии ещё не стабильны;
  • нужна оценка «удобно ли» и визуальных мелочей;
  • автотестов мало или их ещё нет.

Словарь для первой сессии

ТерминПростыми словами
СтендКопия системы для тестов (test., staging.), не боевой прод
SmokeБыстрая проверка «вообще живо»: открылось, вошёл, главный путь прошёл
РегрессСтарые важные сценарии после изменений — не сломали ли прошлое
СессияПериод, пока сервер «помнит», что вы вошли (cookie, токен)
2xx / 4xx / 5xxКод ответа HTTP: успех / ошибка клиента / ошибка сервера
FlakyТест или баг «то есть, то нет» — часто из-за таймингов и сети

С чего начать сессию

Перед проверкой зафиксируйте контекст — без этого баг-репорты будут неполными:

Что записатьПример
URL и стендhttps://test.shop.example/catalog
Браузер и версияChrome 120, Firefox 115
Разрешение1920×1080, мобильная эмуляция 390×844
Учётная записьqa_user_01, роль «покупатель»
Сборка2.1.0 (build 4521)

Chrome DevTools — три вкладки на каждый день

Откройте Chrome DevTools (F12):

ВкладкаЗачем QA
ElementsВёрстка, скрытые элементы, атрибуты кнопок
ConsoleОшибки JavaScript (красные строки) — часто объясняют «белый экран»
NetworkУшёл ли запрос на сервер, какой статус и тело ответа

Подробнее про API через DevTools: Тестирование и анализ API.

:::tip Первый навык в Network Включите Preserve log, выполните действие (логин, «В корзину»), найдите запрос по имени (login, cart). Клик → Headers (статус), Response (JSON с ошибкой). Этот скрин спасает разработчика час отладки. :::


Порядок проверки (типовой сценарий)

  1. Smoke — сайт открывается, логин работает, главный сценарий проходит за 5–10 минут.
  2. Функциональность — по требованиям или тест-кейсам.
  3. Негативные сценарии — пустые поля, неверный формат, двойная отправка.
  4. Границы — длинные строки, спецсимволы, кириллица и латиница.
  5. Сессия и безопасность — выход, истечение токена, кнопка «Назад» в браузере.
  6. Совместимость — второй браузер, уменьшенное окно, мобильная вёрстка.
  7. Регресс — старые критичные сценарии после фикса.

:::tip Связка с документацией Оформляйте находки сразу по шаблону из Документации тестировщика. Хороший баг = воспроизводимые шаги + скрин + вкладка Network при ошибке API. :::


Чек-лист — формы и ввод

#ПроверкаНа что смотретьПример дефекта
1Обязательные поляСообщение при пустой отправке, фокус на первом ошибочном полеОтправка пустой формы создаёт заказ
2Маски и форматыТелефон, email, ИНН — принимается только валидноеabc в поле телефона проходит
3Границы длиныmin/max символов: обрезка или явная ошибка10 000 символов в «комментарий» — 500 на сервере
4ПробелыВ начале/конце строки — trim или отказЛогин " user " не находится
5КопипастИз Word/PDF — невидимые символыПоле «ломается» после вставки из PDF
6Двойной submitДва быстрых клика «Оплатить»Два заказа и два списания
7Tab-порядокФорма проходится с клавиатурыФокус прыгает в случайном порядке
8АвтозаполнениеБраузер подставил старые данныеСломалась валидация после autofill

Применяйте техники тест-дизайна: эквивалентные классы и граничные значения для полей «возраст 18–99», «пароль 8–64 символа» и т.д.

Мини-разбор — поле «Скидка 0–100 %»

ВводОжидание (пример ТЗ)
50Принято
0, 100Границы — принято
−1, 101Ошибка валидации
пустоОшибка «обязательное поле»
100.5, abcОшибка формата

Чек-лист — навигация и UI

#ПроверкаТипичный баг
1Все ссылки в меню404, редирект не туда
2Хлебные крошкиНеверный уровень, не кликаются
3Кнопка «Назад» браузераПотеря данных, повторная отправка формы
4Модальные окнаНе закрываются по Esc / клику вне
5ЛоадерыБесконечный спиннер при медленном API
6Пустые состояния«Нет товаров», «Пустая корзина» — текст и CTA
7Ошибки 404/500Своя страница, а белый экран
8Favicon и title«undefined», один title на всех страницах

Повторная отправка формы: после «Назад» браузер может предложить «повторить отправку» — опасно для оплаты. Ожидание по ТЗ: предупреждение или POST-redirect-GET после успеха.


Чек-лист — сеть и API (без Postman)

Даже ручной QA должен заглядывать в Network:

#ДействиеОжидание
1Выполнить действие (логин, добавить в корзину)Запрос ушёл, статус 2xx
2Ошибка на экранеВ Network — 4xx/5xx, тело ответа с кодом ошибки
3Повторить с отключённым Wi‑FiПонятное сообщение пользователю
4Медленная сеть (DevTools → Throttling)Нет двойных списаний, есть индикатор загрузки
5Размер ответаОгромный JSON на списке — риск по производительности

Коды HTTP — шпаргалка для баг-репорта

КодСмыслЧто писать в баге
200, 201Успех«POST /orders → 201, тело: id=1001»
400Неверный запрос (валидация)Фрагмент JSON с полем ошибки
401Не авторизованПосле логина всё ещё 401 — баг сессии
403Нет правОжидали 403 для гостя на /admin
404Не найденоURL запроса
500Ошибка сервераВремя, Request-Id если есть

Если API проверяете системно — Postman и curl.


Чек-лист — авторизация и сессии

Сессия — способ сервера узнать «это тот же пользователь». Обычно: cookie с идентификатором сессии или JWT в заголовке (токен с подписью и сроком жизни).

#ПроверкаЗачем
1Логин / логаутСессия реально завершается, защищённые страницы недоступны
2«Запомнить меня»Дольше живёт cookie — по ТЗ
3Доступ к /admin без прав403 или редирект на логин
4Истечение сессииРедирект на логин, понятное сообщение
5Два аккаунта в двух браузерахКорзины и профили не смешиваются
6Смена пароляСтарые сессии инвалидируются (если в требованиях)

Кроссбраузерность и адаптив

Минимальный набор для большинства проектов:

  • Chrome (основной)
  • Firefox или Safari (второй движок — другой рендер и движок JS)
  • Мобильная эмуляция в DevTools или реальное устройство
ЗонаЧто проверить
≤ 768pxМеню-бургер, таблицы не вылезают за экран
Клавиатура на телефонеПоля не перекрываются, кнопка «Далее» видна
Zoom 125–150%Текст читаем, кнопки кликабельны (доступность)

Полный E2E через браузер — End-to-End и системное; автоматизация — Playwright или Selenium.


Пример одной тест-сессии (15–20 минут)

Фича: добавление товара в корзину на test.shop.example.

  1. Записать браузер, URL, пользователя qa_buyer.
  2. Smoke: главная открылась, каталог без ошибок в Console.
  3. Добавить товар A — счётчик «1», Network: POST /cart → 200.
  4. Обновить страницу (F5) — корзина всё ещё «1» (данные с сервера).
  5. Два быстрых клика «+» — количество 2, один товар в Network (нет дубля).
  6. Выйти — /cart редирект на логин.
  7. Firefox: повторить шаги 3–4.

Нашли расхождение счётчика и Network → баг с шагами, скрином, HAR при необходимости.


Типичные баги в отчётах новичков

ПлохоЛучше
«Не работает корзина»«После добавления товара X счётчик остаётся 0, Network: POST /cart → 500»
Без скринаСкрин + HAR при сетевой ошибке
«У всех ломается»«Chrome 120 Win11, test, пользователь без админ-прав»
Один браузерУказать, проверяли ли Firefox/Safari

Куда дальше

ТемаСтатья
Оформление кейсов и баговДокументация тестировщика
Сквозной сценарий + SeleniumПроверка пользовательского сценария
Проверка данных в БДSQL для тестировщика
Современная UI-автоматизацияPlaywright

См. также

Другие статьи этого же раздела в боковом меню (как на странице «О разделе»).