С какими вкладками DevTools работаешь
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Работа с DevTools вкладками в браузере
DevTools — незаменимый инструмент для QA инженера при тестировании веб-приложений. За 10+ лет работы я научился использовать практически все вкладки DevTools для быстрого выявления проблем, анализа производительности и отладки функционала. Расскажу подробно о каждой.
1. Inspector / Elements
Назначение: Просмотр и редактирование HTML структуры и CSS стилей
Основное применение при тестировании:
- Проверка наличия необходимых элементов (buttons, inputs, labels)
- Проверка видимости элементов (display: none, visibility: hidden, z-index)
- Анализ CSS стилей и их влияние на внешний вид
- Проверка доступности (alt-текст, aria-labels, semantic HTML)
Практические примеры:
- Тестирую видимость кнопки на мобильном: изменяю viewport и проверяю, что кнопка не скрывается
- Проверяю, что disabled состояние элемента имеет правильные стили
- Анализирую, почему элемент не кликается (может быть перекрыт другим элементом с z-index)
- Проверяю responsive design, изменяя размер окна браузера
Советы:
- Правый клик на элементе → "Inspect" для быстрого выделения
- Edit HTML для быстрого тестирования изменений
- :hover состояние можно спровоцировать через меню элемента
- Lighthouse для проверки accessibility issues
2. Console
Назначение: Просмотр ошибок JavaScript и взаимодействие с приложением через JS
Основное применение при тестировании:
- Проверка ошибок JavaScript (неработающий функционал часто из-за ошибок в консоли)
- Проверка сообщений об ошибках при операциях
- Вызов функций для тестирования
- Проверка значений переменных
Практические примеры:
// Получить значение элемента
document.querySelector('button').textContent
// Получить все элементы с классом
document.querySelectorAll('.product-item').length
// Спровоцировать клик
document.querySelector('button').click()
// Установить значение в input
document.querySelector('input').value = 'test@example.com'
// Проверить state (если React)
window.__REACT_DEVTOOLS_GLOBAL_HOOK__
Вкладки:
- Console — основной лог
- Warnings (⚠️) — предупреждения (deprecated API, неправильное использование)
- Errors (❌) — критичные ошибки
Реальный пример из работы: Тестировал платежный функционал, платеж не проходил. В консоли нашел ошибку: "Token validation failed". Это помогло разработчикам быстро найти проблему с генерацией токена.
3. Network / Сеть
Назначение: Мониторинг сетевых запросов и ответов
Основное применение при тестировании:
- Проверка правильных API endpoints
- Анализ payload запроса и структуры ответа
- Проверка статус-кодов (200, 404, 500 и т.д.)
- Анализ времени отклика
- Проверка обработки ошибок сети
Что я проверяю:
Метод запроса:
- GET для получения данных
- POST для создания
- PUT/PATCH для обновления
- DELETE для удаления
Статус-коды:
200 OK — успешный запрос
201 Created — ресурс создан
400 Bad Request — ошибка в request'е клиента
401 Unauthorized — не авторизован
403 Forbidden — нет прав доступа
404 Not Found — ресурс не найден
500 Internal Server Error — ошибка сервера
503 Service Unavailable — сервис недоступен
Примеры анализа:
// Request
POST /api/v1/checkout HTTP/1.1
Content-Type: application/json
{
"items": [
{"id": 123, "quantity": 2}
],
"payment_method": "credit_card"
}
// Response (200 OK)
{
"order_id": "ORD-12345",
"status": "completed",
"total": 99.99
}
Полезные фильтры:
- Фильтр по типу: XHR (только AJAX запросы)
- Фильтр по domain: api.example.com
- Поиск по названию запроса
Особенности:
- Timing — сколько времени заняла каждая фаза (DNS, TCP, TTFB, Download)
- Size — размер request/response (помогает выявить неоптимизированные данные)
- Waterfall — визуализация времени загрузки ресурсов
Мой подход при тестировании API:
- Открываю Network tab
- Выполняю операцию в приложении
- Проверяю запрос (метод, URL, parameters, headers, body)
- Проверяю ответ (status, headers, body/JSON)
- Убеждаюсь, что данные правильно обрабатываются приложением
4. Application / Storage
Назначение: Просмотр и редактирование данных на клиенте (cookies, localStorage, sessionStorage, IndexedDB)
Основное применение при тестировании:
LocalStorage:
- Проверка, что приложение сохраняет user preferences
- Проверка persistence при перезагрузке
- Очистка данных при logout
Пример: Тестировал сохранение языка интерфейса. При выборе Russian должно сохраниться в localStorage. Проверяю:
localStorage.getItem('language') // 'ru'
Cookies:
- Проверка session cookies
- Проверка expiration времени
- Проверка Secure и HttpOnly флагов (для безопасности)
SessionStorage:
- Временные данные для текущей сессии
- Очищается при закрытии вкладки
IndexedDB:
- Большие объемы данных (кэширование)
- Offline функциональность
Практический пример: Тестировал offline функциональность PWA приложения:
- Отключаю сеть (DevTools → Network → Offline)
- Проверяю, что приложение работает
- В Application → IndexedDB вижу закэшированные данные
- При возврате онлайн данные синхронизируются
5. Performance / Производительность
Назначение: Анализ производительности приложения
Основное применение при тестировании:
Основные метрики:
- FCP (First Contentful Paint) — когда пользователь видит первый контент (target: < 1.8 сек)
- LCP (Largest Contentful Paint) — когда загружается главный контент (target: < 2.5 сек)
- CLS (Cumulative Layout Shift) — сколько элементы смещаются при загрузке (target: < 0.1)
- FID (First Input Delay) — задержка при клике (target: < 100ms)
Профилирование:
- Запись timeline во время операции
- Анализ, на что уходит время (JavaScript, Rendering, Painting)
- Выявление bottleneck'ов
Практический пример: Тестировал загрузку списка товаров. Использовал Performance tab:
- Запустил запись
- Открыл страницу товаров
- Остановил запись
- Анализирую timeline:
- DOM parsing: 200ms
- JavaScript execution: 500ms (много!)
- Rendering: 300ms
- Paint: 100ms
Итог: JavaScript выполняется долго, нужна оптимизация.
6. Network Throttling / Сетевые условия
Назначение: Имитация медленной сети
Основное применение:
- Тестирование на 3G/4G/5G
- Проверка пользовательского опыта при медленной сети
- Проверка loading states и spinners
Как использую: Network tab → Throttling dropdown → выбираю "Slow 3G"
Это имитирует:
- Download: 400 Kbps
- Upload: 400 Kbps
- Latency: 400ms
Проверяю:
- Появляется ли loading spinner
- Работает ли cancel операции
- Правильно ли обрабатываются таймауты
7. Sources / Отладчик
Назначение: Отладка JavaScript кода
Основное применение при тестировании:
- Установка breakpoints
- Step through кода
- Проверка значений переменных
- Отслеживание вызовов функций (Call stack)
Практический пример: Тестирую расчет скидки при добавлении промокода. Функция не работает:
- Устанавливаю breakpoint в функции applyPromo()
- Вводу промокод
- Код останавливается на breakpoint'е
- Проверяю значения переменных
- Вижу, что discount = 0 вместо ожидаемых 10
- Помогает разработчикам быстро найти ошибку
8. Security
Назначение: Проверка безопасности
Основное применение при тестировании:
- Проверка HTTPS
- Анализ security headers
- Выявление смешанного контента (HTTP + HTTPS)
- Проверка certificate'а
Практический пример: Сайт загружает JavaScript с HTTP вместо HTTPS (смешанный контент):
Mixed Content: The page at 'https://example.com' was loaded over HTTPS, but requested an insecure script 'http://cdn.example.com/script.js'
Это потенциальная уязвимость, которую нужно исправить.
Мой типичный workflow при тестировании веб-приложения
- Открываю DevTools: F12 или Ctrl+Shift+I
- Inspector: Проверяю структуру HTML
- Console: Смотрю на ошибки
- Network: Захватываю все запросы
- Performance: Анализирую скорость
- Application: Проверяю localStorage/cookies
- Security: Убеждаюсь в защите
Итог
DevTools — это мощный инструмент, который экономит мне часы при тестировании. Владение всеми вкладками позволяет:
- Быстро выявлять проблемы
- Давать разработчикам точные данные для отладки
- Проверять производительность и безопасность
- Анализировать сетевые запросы
- Тестировать на разных сетевых условиях
Основное правило: если веб-приложение работает неправильно, первое, что я делаю — открываю DevTools. В 80% случаев проблема выявляется в течение минуты.