DevTools: Ваш самый мощный инструмент тестирования
DevTools браузера — самый ценный инструмент в арсенале веб-тестировщика. Он позволяет видеть всё, что происходит под поверхностью — сетевые запросы, ошибки JavaScript, изменения DOM, данные хранилищ, метрики производительности и многое другое.
Каждый крупный браузер включает DevTools: Chrome DevTools (F12), Firefox Developer Tools, Safari Web Inspector и Edge DevTools. Этот урок фокусируется на Chrome DevTools, так как он используется наиболее широко, но концепции применимы ко всем браузерам.
Открытие DevTools
Есть несколько способов открыть DevTools:
- F12 или Ctrl+Shift+I (Windows/Linux) / Cmd+Option+I (Mac)
- Правый клик на любом элементе и выбор «Исследовать элемент»
- Меню Chrome > Дополнительные инструменты > Инструменты разработчика
После открытия DevTools можно прикрепить к нижней, правой, левой части экрана или вынести в отдельное окно. Для тестирования прикрепление справа часто самое практичное, потому что вы видите страницу и инструменты одновременно.
Вкладка Elements
Вкладка Elements показывает живое дерево DOM и все CSS-стили, применённые к каждому элементу.
Инспекция элементов
Кликните правой кнопкой на любой элемент страницы и выберите «Исследовать элемент», чтобы перейти к нему в дереве DOM. Отсюда вы можете:
- Просматривать HTML-структуру — видеть отношения родитель-потомок, атрибуты и текстовое содержимое
- Редактировать HTML в реальном времени — двойной клик на любом атрибуте или тексте для временного изменения
- Удалять элементы — выделить и нажать Delete для удаления элементов и наблюдения перекомпоновки страницы
- Искать по DOM — нажать Ctrl+F в панели Elements для поиска по имени тега, атрибуту, тексту или CSS-селектору
Инспекция стилей
Панель Styles справа показывает все CSS-правила, применённые к выбранному элементу, в порядке специфичности. Вы можете:
- Переключать свойства — клик на чекбокс для отключения/включения любого CSS-свойства
- Редактировать значения — клик на любое значение для его изменения в реальном времени
- Добавлять новые свойства — клик в пустом пространстве внутри правила для добавления нового CSS
- Видеть вычисленные значения — переключиться на вкладку «Computed» для просмотра финальных рассчитанных значений
- Принудительно включать состояния элемента — кнопка
:hovдля переключения состояний:hover,:active,:focus,:visited
Визуализация блочной модели
Внизу панели Styles (или во вкладке Computed) вы видите визуальное представление блочной модели — content, padding, border и margin с точными значениями в пикселях. Это необходимо для диагностики багов вёрстки.
Вкладка Console
Console — место, где появляются ошибки JavaScript и где вы можете выполнять команды JavaScript.
Чтение сообщений консоли
Сообщения выделены цветом:
- Красные (Ошибки): Исключения JavaScript, неудачные сетевые запросы, нарушения безопасности
- Жёлтые (Предупреждения): Уведомления об устаревании, предупреждения о производительности, некритичные проблемы
- Синие (Инфо): Информационные сообщения приложения
- Серые (Подробные): Детальные сообщения отладки
Каждое красное сообщение об ошибке потенциально является багом, достойным расследования.
Полезные команды консоли для тестирования
// Подсчитать все элементы определённого типа
document.querySelectorAll('button').length
// Найти элементы по текстовому содержимому
[...document.querySelectorAll('*')].filter(el =>
el.textContent.includes('Искомый текст')
)
// Проверить видимость элемента
const el = document.querySelector('.my-element');
const style = window.getComputedStyle(el);
console.log('Display:', style.display, 'Visibility:', style.visibility);
// Мониторить события на элементе
monitorEvents(document.querySelector('#myButton'), 'click');
// Сделать скриншот всей страницы
// Ctrl+Shift+P > "Capture full size screenshot"
// Очистить консоль
console.clear()
Фильтрация консоли
Используйте фильтры в выпадающем списке для отображения только ошибок, предупреждений, информации или подробных сообщений. Также можно фильтровать по тексту через поле поиска. При тестировании начинайте с фильтрации только ошибок — они имеют наивысший приоритет.
Вкладка Network
Вкладка Network — место мониторинга всего HTTP-трафика между браузером и серверами.
Понимание списка запросов
Каждая строка представляет один HTTP-запрос. Ключевые столбцы:
- Name: URL-путь или имя файла
- Status: Код статуса HTTP (200, 404, 500 и т.д.)
- Type: Document, Script, Stylesheet, XHR/Fetch, Image и т.д.
- Size: Размер передачи и фактический размер
- Time: Сколько занял запрос
- Waterfall: Визуальная временная шкала запроса
Фильтрация запросов
Используйте кнопки фильтра для отображения определённых типов запросов:
- XHR/Fetch: API-вызовы — здесь видно большинство backend-багов
- JS: JavaScript-файлы
- CSS: Файлы стилей
- Img: Изображения
- Doc: HTML-документы
Инспекция запроса
Кликните на любой запрос для просмотра деталей:
- Headers: Заголовки запроса и ответа, включая cookies, тип контента и токены аутентификации
- Payload: Данные, отправленные в POST/PUT-запросах (form data или JSON)
- Preview: Отформатированное представление ответа (JSON в виде дерева)
- Response: Сырое тело ответа
- Timing: Разбивка времени DNS, подключения, TLS, ожидания и загрузки
Сетевой throttling
Выпадающий список throttle позволяет имитировать медленные соединения. Тестируйте с:
- Fast 3G: Типичное мобильное соединение
- Slow 3G: Плохое мобильное соединение
- Offline: Полное отсутствие связи
Это выявляет баги, проявляющиеся только при медленной сети — загрузочные спиннеры, которые никогда не исчезают, гонки данных, обработка таймаутов.
Сохранение логов
Включите «Preserve log» для сохранения сетевых запросов при переходах между страницами. Это критически важно для тестирования:
- Потоков авторизации (редиректы очищают лог по умолчанию)
- Отправок форм с редиректом
- Многошаговых мастеров
Вкладка Application
Вкладка Application (называется Storage в Firefox) показывает клиентское хранилище данных.
Cookies
Просмотр, редактирование и удаление cookies текущего домена. Что важно проверять:
- Сессионные cookies: Истекают ли при закрытии браузера?
- Постоянные cookies: Разумно ли время истечения?
- Флаг Secure: Помечены ли чувствительные cookies как Secure (только HTTPS)?
- Флаг HttpOnly: Являются ли cookies аутентификации HttpOnly (недоступны для JavaScript)?
- SameSite: Установлен ли атрибут SameSite для предотвращения CSRF?
Local Storage и Session Storage
Просмотр пар ключ-значение, хранящихся в браузере:
- localStorage: Сохраняется до явной очистки
- sessionStorage: Очищается при закрытии вкладки
Протестируйте, что происходит при ручном удалении элементов хранилища — корректно ли приложение обрабатывает отсутствующие данные?
Service Workers
Если приложение использует service workers (для офлайн-поддержки или push-уведомлений), их можно инспектировать здесь. Проверьте:
- Работает ли приложение офлайн?
- Обновляются ли кэшированные ресурсы при появлении новых версий на сервере?
- Корректно ли приходят push-уведомления?
Вкладка Performance
Запись трейса производительности для анализа загрузки страницы и runtime-производительности.
Запись трейса
- Нажмите кнопку Record (или Ctrl+E)
- Выполните действие, которое хотите измерить
- Остановите запись
Трейс показывает:
- Кадры в секунду (FPS): Падения ниже 60 указывают на подтормаживания
- Использование CPU: Пики означают тяжёлую обработку
- Сетевые запросы: Временная шкала всех запросов во время записи
- Активность основного потока: Выполнение JavaScript, layout, paint и compositing
Сценарии тестирования производительности
Используйте запись производительности для тестирования:
- Время загрузки страницы: Запись от начальной навигации
- Производительность скроллинга: Запись при прокрутке длинных списков
- Плавность анимаций: Запись во время CSS- или JavaScript-анимаций
- Отправка формы: Запись полного цикла от отправки до ответа
Продвинутые техники DevTools
Эмуляция устройств
Нажмите Ctrl+Shift+M для переключения эмуляции устройств. Это позволяет:
- Выбирать профили конкретных устройств (iPhone, Pixel, iPad)
- Устанавливать произвольные размеры экрана
- Имитировать сенсорные события
- Менять device pixel ratio
- Эмулировать геолокацию
- Имитировать ориентацию устройства
Breakpoints во вкладке Sources
Хотя это в основном для разработчиков, знание о breakpoint помогает QA:
- DOM breakpoints: Правый клик на элементе > «Break on» > модификации поддерева, модификации атрибутов или удаление узлов. Отладчик останавливается при изменении DOM, помогая отлавливать динамические баги.
- XHR breakpoints: Во вкладке Sources добавьте breakpoint, срабатывающий при запросе к определённому URL. Полезно для отладки проблем с API-вызовами.
- Event listener breakpoints: Пауза на определённых типах событий (click, submit, keypress) для понимания поведения приложения.
Упражнение: Полное расследование с DevTools
Выберите веб-приложение и выполните этот чеклист расследования:
- Вкладка Elements: Найдите основную навигацию. Используются ли семантические теги
<nav>? Проверьте все ссылки на валидные атрибутыhref. - Вкладка Console: Отметьте все сообщения об ошибках. Для каждой ошибки определите — реальный баг или проблема стороннего скрипта.
- Вкладка Network: Отфильтруйте по XHR/Fetch. Определите все API-endpoint, которые вызывает страница. Отметьте неудачные запросы (4xx/5xx).
- Вкладка Application: Проверьте cookies на флаги безопасности (Secure, HttpOnly, SameSite). Проверьте localStorage на наличие чувствительных данных.
- Вкладка Performance: Запишите загрузку страницы. Отметьте общее время загрузки и время Largest Contentful Paint (LCP).
Задокументируйте находки в таблице:
| Вкладка | Находка | Серьёзность | Баг? |
|---|---|---|---|
| Console | TypeError: Cannot read property ‘map’ of undefined | Высокая | Да |
| Network | GET /api/user возвращает 401 при авторизованном пользователе | Высокая | Да |
| Application | Токен аутентификации в localStorage (должен быть httpOnly cookie) | Средняя | Да (Безопасность) |
Ключевые выводы
- DevTools — самый мощный инструмент для веб-тестирования, изучайте его глубоко
- Вкладка Elements показывает живой DOM и CSS; используйте для расследования визуальных багов
- Console показывает ошибки JavaScript, которые пользователи не видят, но которые указывают на реальные баги
- Вкладка Network раскрывает всю API-коммуникацию — фильтруйте по XHR для фокуса на backend-вызовах
- Вкладка Application показывает клиентское хранилище; проверяйте cookies на флаги безопасности
- Эмуляция устройств позволяет тестировать адаптивное поведение без физических устройств
- Сохраняйте логи при переходах между страницами при тестировании многошаговых потоков