Раздел 08 — Тестирование веб-интерфейса

Посмотреть на страницу глазами браузера: что ушло на сервер, что пришло обратно и что осталось в браузере

Прогресс курса Раздел 8 из 12

Что вы освоите в этом разделе

8 академических часов: 2 теории, 6 практики. Снимки сделаны в Microsoft Edge 156 в Windows 11; в Chrome и Яндекс Браузере инструменты те же. Если DevTools у вас на русском, панели называются «Элементы», «Консоль», «Сеть», «Приложение».
01

Как устроена веб-страница для тестировщика

Браузер отправляет на сервер запрос, сервер отвечает HTML-страницей, браузер её показывает и выполняет её скрипты. Нажали кнопку формы — браузер отправил новый запрос с введёнными данными. Отсюда две части любой проверки:

Это и есть серый ящик из раздела 02: код сервера мы не читаем, но видим, как он общается с браузером.

02

Валидация на клиенте и на сервере

Проверку ввода делают в двух местах:

На клиенте (в браузере)На сервере
КакАтрибуты полей HTML: required, min, max, maxlength, type="email", pattern; скрипты страницыКод сервера проверяет данные запроса
ЗачемУдобство: подсказка сразу, без отправки формыЗащита: только сервер решает, что сохранить
Можно обойти?Да: инструменты разработчика, другой браузер, запрос без браузераНет — если проверка есть

Главное правило: клиентская проверка — не защита. Если поле количества в магазине не даёт ввести 0 только атрибутом min="1", а сервер не проверяет, то заказ на 0 или −5 штук создаётся за минуту. Поэтому тестировщик проверяет оба уровня:

  1. Ввести недопустимое значение обычным способом — браузер должен подсказать.
  2. Убрать ограничение в DevTools (п. 04) и отправить снова — должен отказать сервер.
  3. Отправить запрос без браузера через API — раздел 09.

Если после шага 2 недопустимое значение сохранилось — это дефект сервера, и серьёзный: в баг-репорте так и пишите «серверная проверка отсутствует, клиентскую можно обойти».

03

Инструменты разработчика

DevTools открываются клавишей F12 или Ctrl+Shift+I; щелчок правой кнопкой по элементу → «Проверить» сразу показывает его код. Панели, которые нужны тестировщику:

ПанельЧто показываетЗачем тестировщику
Elements (Элементы)HTML страницы и стили, можно править на летуАтрибуты полей, подписи, обход клиентской проверки
Console (Консоль)Ошибки скриптов и сообщения; строка ввода команд JavaScriptКрасные ошибки — признак дефекта, даже если на экране всё выглядит нормально
Network (Сеть)Все запросы страницы: адрес, метод, код ответа, время, телоЧто отправила форма, что ответил сервер, где ошибка 500
Application (Приложение)Cookies, Local Storage, Session StorageСессия, выход, хранение данных в браузере
LighthouseАвтоматический отчёт: производительность, доступность, SEOБыстрый список проблем доступности

Если DevTools открылись сбоку и тесно — меню ⋮ справа вверху панели → «Dock side» (расположение): снизу или в отдельном окне.

04

Elements: атрибуты и обход проверки

Значок со стрелкой в левом верхнем углу DevTools (или Ctrl+Shift+C) включает выбор элемента: щёлкните по полю на странице, и в панели Elements подсветится его код. На снимке — поле «Название» формы «Новая задача»: у него атрибут required, поэтому браузер не отправит форму с пустым полем.

Edge: слева форма «Новая задача» с полями Название, Срок, Приоритет; справа DevTools, панель Elements, выделена строка input id=title name=title size=40 data-testid=new-title с атрибутом required

Как обойти клиентскую проверку:

  1. Выберите поле, в Elements дважды щёлкните по атрибуту (required, min="1", maxlength) и удалите его или исправьте значение. Можно правой кнопкой по узлу → «Edit as HTML».
  2. Введите в поле недопустимое значение и отправьте форму.
  3. Посмотрите, что ответил сервер: сообщение об ошибке на странице — сервер проверяет; задача создалась — нет.

Правка действует до перезагрузки страницы и только в вашем браузере — ничего не ломается, сервер видит лишь отправленные данные. То же работает со списками <select>: допишите свой <option value="9"> и выберите его.

В Elements же проверяют подписи полей: у поля должен быть <label for="…"> с тем же id или атрибут aria-label. Текст-подсказка внутри пустого поля (placeholder) подписью не считается — он исчезает при вводе, и экранная читалка его может не прочитать.

05

Console: ошибки страницы

Панель Console показывает ошибки скриптов страницы красным, с номером строки. Пользователь их не видит, но ошибка часто значит, что часть страницы перестала работать: кнопка не реагирует, список не обновился. Держите Console открытой, когда выполняете действия, особенно необычные: пустой список, ничего не найдено, очень длинный ввод.

Красный счётчик в правом верхнем углу DevTools показывает число ошибок, даже когда открыта другая панель. Ошибка загрузки favicon.ico (404 — у сайта нет значка вкладки) обычно безобидна; ошибки вида Uncaught TypeError: Cannot read properties of null — повод разобраться и, если что-то не работает, написать баг-репорт с текстом ошибки.

Консоль ещё и удобный калькулятор тестовых данных. Введите команду и нажмите Enter:

'a'.repeat(101)                  // строка из 101 символа
'я'.repeat(50).length            // 50 — проверить длину
new Date().toISOString().slice(0, 10)   // сегодняшняя дата 2026-10-29

Первый раз браузер может попросить разрешение вставлять код в консоль — введите allow pasting, если копируете команду, а не набираете.

06

Network: что ушло и что пришло

Откройте Network до действия — запросы записываются только при открытой панели. На снимке — вход в «Задачник»: форма отправила POST /login, сервер ответил кодом 303 (перенаправление) и браузер сам запросил /tasks.

Панель Network после входа: запрос login с кодом 303, запрос tasks с кодом 200, инициатор login; над списком флажки Keep log и Disable cache

Щелчок по строке открывает подробности:

Полезные флажки над списком: Keep log (в Chrome — Preserve log, «Сохранять журнал») — не очищать список при переходе на другую страницу: без него после щелчка по ссылке запросы прошлой страницы исчезают; Disable cache — загружать всё заново.

Коды ответов, которые встретятся чаще всего: 200 — успешно, 303 — перенаправление после отправки формы, 400 — неверный запрос, 401 — нужна авторизация, 404 — не найдено, 500 — ошибка сервера. Ответ 500 на любое действие пользователя — всегда дефект: сервер не справился с данными, а не отказал по правилам. Подробнее о кодах — в разделе 09.

HAR-файл содержит пароли и cookies. Кнопка со стрелкой вниз над списком (Export HAR) сохраняет все запросы в файл — его прикладывают к баг-репорту, чтобы разработчик увидел обмен целиком. Но в нём есть всё, что отправлялось, включая пароль из формы входа и cookie сессии. Для учебного «Задачника» это не страшно; в рабочем проекте перед отправкой HAR выйдите из учётной записи или используйте тестовую.
07

Cookies и сессия

После входа сервер присылает cookie — небольшую строку, которую браузер прикладывает к каждому следующему запросу. По ней сервер узнаёт пользователя. В «Задачнике» это cookie sid. Посмотреть её: Application → Storage → Cookies → http://127.0.0.1:8000.

Панель Application: в дереве Storage раскрыт раздел Cookies, выбран http://127.0.0.1:8000; в таблице cookie sid, путь /, флажок HttpOnly отмечен

Что видно в таблице cookies и что проверять:

08

Телефон: режим устройства

Значок телефона и планшета в левом верхнем углу DevTools (Ctrl+Shift+M) переключает режим устройства: страница показывается в окне заданной ширины, как на телефоне. Сверху — выбор модели (Responsive — свой размер) и размеры в пикселях: щёлкните по ширине и впишите 360.

Режим устройства: страница входа «Задачника» в окне шириной 400 пикселей, сверху строка Dimensions: Responsive 400 × 581, справа DevTools

Ширины для проверки: 360 (самые узкие распространённые Android), 390–412 (большинство телефонов), 768 (планшет вертикально). Что смотреть:

Режим устройства — приближение: шрифты, клавиатура и жесты настоящего телефона отличаются. Перед выпуском откройте страницу и на реальном телефоне. «Задачник» слушает только 127.0.0.1, поэтому с телефона он не откроется — для него хватит режима устройства; свой проект проверяйте на телефоне.

09

Кросс-браузерность

Браузеры на движке Chromium (Chrome, Edge, Яндекс Браузер, Opera) показывают страницы почти одинаково; Firefox и Safari (на iPhone все браузеры работают на движке Safari) — по-своему. Минимальный набор: один браузер на Chromium и Firefox на компьютере, плюс браузер телефона. Что чаще всего отличается:

В баг-репорте всегда указывайте браузер с версией (меню → Справка → О программе): «Firefox 145, Windows 11». Дефект, который есть только в одном браузере, — важная деталь для разработчика.

10

Доступность за 15 минут

Доступность — возможность пользоваться программой людям с нарушениями зрения, слуха, моторики. Требования к ней описаны в ГОСТ Р 52872 (основан на международном WCAG). Без специальных программ можно проверить главное:

ПроверкаКакЧто должно быть
Только клавиатураПройти форму клавишей Tab, нажимать кнопки Enter и ПробеломВсе поля и кнопки достижимы, порядок логичный
Видимый фокусТам же: где сейчас фокус?Активный элемент заметно выделен рамкой
Подписи полейElements: <label> или aria-labelУ каждого поля есть подпись, не только placeholder
Масштаб 200%Ctrl++ до 200%Ничего не пропадает и не перекрывается
КонтрастElements → выбрать текст → в Styles щёлкнуть по квадратику цвета: показан коэффициент контрастаНе меньше 4,5 : 1 для обычного текста
Не только цветПосмотреть, что выделено цветомОшибки и состояния понятны и без цвета: текстом, значком
Автоматический отчётLighthouse → Accessibility → AnalyzeСписок проблем с подсказками; проверяет не всё

Найденное оформляется баг-репортом как любой дефект; требование — пункт ТЗ о доступности, если он есть, или ГОСТ Р 52872.

Ключевые выводы раздела

Запомните главное

  • Клиентская проверка — удобство, а не защита; её обходят в Elements и проверяют сервер
  • Console держат открытой: ошибка скрипта — признак дефекта, даже если экран в порядке
  • Network открывают до действия; Keep log (Preserve log) — чтобы видеть запросы нескольких страниц подряд
  • Ответ 500 на действие пользователя — всегда дефект
  • Выход должен завершать сессию на сервере: старая cookie не должна работать
  • Телефон — ширины 360–412 без горизонтальной прокрутки; браузеры — Chromium и Firefox минимум
  • Доступность: клавиатура, видимый фокус, подписи, масштаб 200%, контраст
Практические задания — на учебном портале. Задания, критерии оценивания, сдача работ и оценки преподавателя — в курсе на portal.nevabit.ru. Учётную запись выдаёт преподаватель.
Раздел 07: Дефекты и баг-репорты Все разделы Раздел 09: Тестирование API вручную