Кроссбраузерность · DevTools · DOM · Локаторы · Page Object · WebDriver · Charles · Allure · Моки · Пуши
Кроссбраузерное тестирование — проверка, что сайт/приложение одинаково работает в разных браузерах и на разных устройствах.
| Движок | Браузеры | Особенности |
|---|---|---|
| Blink | Chrome, Edge, Opera, Brave | Хромиум-семья, большинство рынка |
| WebKit | Safari | Часто проблемы с датами, CSS-анимациями |
| Gecko | Firefox | Редкие CSS-отличия, своя DevTools |
| Аспект | Примеры |
|---|---|
| Вёрстка | Элементы не съезжают, шрифты отображаются, адаптивность |
| Функциональность | Кнопки кликаются, формы отправляются, модалки открываются |
| Производительность | Страница грузится быстро, нет тормозов при скролле |
| Responsive | На мобильном, планшете, десктопе — всё корректно |
DevTools (F12) — встроенный набор инструментов разработчика в браузере. Для QA — основной инструмент поиска багов.
| Панель | Что делает | Когда использовать QA |
|---|---|---|
| Elements | DOM-дерево + стили CSS | Проверить вёрстку, найти элемент, посмотреть стили |
| Console | JS-ошибки и логи | Увидеть ошибки при действии на странице |
| Network | Все HTTP-запросы | Проверить какие API-запросы уходят, что возвращается, статусы |
| Application | Storage, Cookie, LocalStorage | Проверить токены, куки, сохранённые данные |
| Performance | Профилирование скорости | Найти тормозящие места |
| Lighthouse | Аудит: SEO, доступность, скорость | Общая оценка качества страницы |
DOM (Document Object Model) — это дерево элементов HTML-страницы. Браузер создаёт DOM из HTML, и через него JS может менять страницу.
→ DOM-дерево:
Локатор — способ найти элемент на странице для автотеста. Указывает: «найди мне кнопку с таким id/классом/текстом».
| Приоритет | Локатор | Пример | Надёжность |
|---|---|---|---|
| 🥇 | data-testid | [data-testid="login-btn"] | ⭐⭐⭐ Лучшая практика |
| 🥈 | ID | #login-btn | ⭐⭐⭐ Если уникальный |
| 🥉 | CSS | button.primary | ⭐⭐ Умеренная |
| 🥉 | XPath | //button[contains(text(),'Login')] | ⭐⭐ Мощный, но хрупкий |
| ❌ | По тексту | "Click me" | ⭐ Ломается при переводе |
| CSS Selector | XPath | |
|---|---|---|
| Синтаксис | Простой, как в CSS | Сложнее, XML-путь |
| По тексту | ❌ Не умеет | ✅ Умеет (contains) |
| Вверх по дереву | ❌ Не умеет (только вниз) | ✅ Умеет (parent::) |
| Скорость | Быстрее | Медленнее |
| Пример | div.card > button.primary | //div[@class='card']/button |
Page Object — паттерн проектирования автотестов. Каждая страница приложения = отдельный класс, который описывает элементы и действия.
WebDriver — протокол управления браузером. Позволяет программно: открыть страницу, кликнуть, ввести текст, сделать скриншот.
| Selenium | Playwright | |
|---|---|---|
| Возраст | Старый, проверенный | Современный (Microsoft) |
| Скорость | Медленнее | Быстрее |
| Ожидания | Явные/неявные waits (сложно) | Auto-waiting (сам ждёт) |
| Мультибраузерность | Chrome, Firefox, Safari, Edge | Chromium, Firefox, WebKit |
| Мобильное | Appium (отдельно) | Эмуляция устройств |
| API | W3C WebDriver | CDP + собственный протокол |
driver.get("https://example.com")driver.find_element(By.ID, "btn")element.click()element.send_keys("hello")element.textdriver.save_screenshot("shot.png")| Тип | Что делает | Использовать? |
|---|---|---|
| Implicit Wait | Глобальный таймаут на все find_element | ⚠️ Осторожно — может маскировать проблемы |
| Explicit Wait | Ждать конкретное условие (элемент кликабелен, видим) | ✅ Лучшая практика |
| sleep(5) | Ждать 5 секунд всегда | ❌ Плохо — то слишком долго, то мало |
Charles — прокси-сервер, который стоит между клиентом и сервером и перехватывает весь трафик. Network в DevTools, но для любого приложения (включая мобильные).
| Функция | Что делает | Зачем QA |
|---|---|---|
| Сниффинг | Показывает все запросы и ответы | Видеть что реально уходит на сервер и что возвращается |
| Rewrite | Подмена ответов (mock!) | Сервер вернул 200 → меняешь на 500, смотришь реакцию UI |
| Throttling | Замедление сети (3G, Edge) | Тестировать при плохом интернете: таймауты, спиннеры, потери данных |
| Breakpoints | Остановка запроса для ручного редактирования | На лету изменить тело запроса/ответа |
| Map Local | Подмена ответа локальным файлом | Вместо реального ответа — твой JSON-файл |
| HTTPS | Расшифровка HTTPS (нужен сертификат) | Видеть зашифрованный трафик |
Mock — подмена реального ответа/объекта на заранее заданный. Позволяет тестировать без зависимости от бэкенда.
| Инструмент | Как | Пример |
|---|---|---|
| Charles | Rewrite / Map Local — подмена ответа | Меняем 200 → 500 |
| Postman | Mock Server — отдельный сервер с заглушками | Создаёшь mock server для коллекции |
| Код (автотесты) | Библиотеки: mock, nock, pytest-mock | mock.when("/api/users").thenReturn({...}) |
Allure — инструмент для визуальных отчётов по автотестам. Показывает результаты прогона в красивом веб-интерфейсе.
| Фича | Описание |
|---|---|
| ✅❌ Результаты | Какие тесты прошли, какие упали |
| 📸 Скриншоты | Автоматический скриншот при падении |
| 📝 Шаги | Step-by-step: что делал каждый тест |
| 📊 Тренды | Графики: как меняется стабильность тестов со временем |
| 🏷 Категории | Группировка: product bugs, auto bugs, infrastructure |
| Allure | Qase | |
|---|---|---|
| Назначение | Отчёты по автотестам | Управление тест-кейсами (TMS) |
| Ручные тесты | ❌ Только авто | ✅ Ручные + авто |
| Скриншоты при падении | ✅ Автоматически | ⚠️ Надо прикреплять вручную |
| Где используется | CI/CD пайплайн → отчёт после прогона | Ведение тестовой документации |
Push — уведомление, которое приходит на устройство от сервера через системный сервис.
| Проверка | Что смотрим |
|---|---|
| Доставка | Приходит ли пуш вообще |
| Контент | Правильный текст, иконка, звук |
| Тап на пуш | Открывается ли нужный экран (deeplink) |
| Состояние приложения | Открыто / в фоне / закрыто — разное поведение |
| Оффлайн | При появлении сети пуш должен прийти |
| Отписка | Если юзер выключил пуши — не приходят |
❓ Для чего нужно кроссбраузерное тестирование?Разные браузеры используют разные движки рендеринга (Blink, WebKit, Gecko). Страница может выглядеть и работать по-разному. Основные проблемы: Safari — CSS и даты, Firefox — редкие фичи, мобильные — touch вместо hover.
❓ Какие панели DevTools самые полезные для QA?Network — видеть все запросы, статусы, тела. Console — JS-ошибки. Elements — проверить DOM и стили. Application — cookie, localStorage.
❓ Что такое DOM?Document Object Model — дерево объектов HTML-страницы. Браузер строит его из HTML. Автотесты ищут элементы в DOM.
❓ Какие локаторы лучше и почему?Лучший — data-testid (не зависит от вёрстки и текста). Затем ID, CSS, XPath.
❓ Что такое Page Object Model?Паттерн: каждая страница = класс с локаторами и методами. Если меняется UI — правишь одно место.
❓ Что такое Charles Proxy?Прокси для перехвата трафика. Для мобилок — замена DevTools. Умеет: сниффинг, подмена ответов (mock), throttling (плохая сеть).
❓ Что такое Mock?Заглушка — подмена реального ответа сервера на заранее заданный. Нужен когда бэкенд не готов, или чтобы тестировать ошибки без ломания прода.
❓ Что такое Allure?Инструмент для отчётности автотестов. Показывает результаты прогона, скриншоты при падении, шаги теста, тренды.
❓ Как тестировать push-уведомления?Сервер → FCM/APNs → устройство. Проверяем: доставка, контент, тап (deeplink), состояние приложения (открыто/фон/закрыто), оффлайн.