Услуги Портфолио Контакты БлогНовости +7 (800) 511‑32‑27 Обсудить проект
Статьи

Тестирование веб-приложений: виды, инструменты и чек-лист

10 июля 2023·Обновлено: 5 сентября 2026·15 мин чтения
Логотип YuSMP Group
Автор материалаРедакция компании YuSMP GroupБлог YuSMP Group
Профиль редакции
Тестирование веб-приложений: Как правильно тестировать и где искать ошибки
TL;DR. Тестирование веб-приложений охватывает 8 типов проверок — от функциональных и нагрузочных до безопасности и кросс-браузерных. Shift-left-подход снижает стоимость исправления ошибок в 10–100 раз. В статье — сравнение Cypress, Playwright и Selenium, чек-лист из 20 пунктов и схема интеграции в CI/CD.

Если вы заказываете разработку веб-приложения, команда QA становится неотъемлемой частью процесса. Без правильно организованного тестирования дефекты находят пользователи, а не инженеры — и цена ошибки в проде в 10–100 раз выше, чем на этапе разработки.

Сайт vs веб-приложение: что важно для QA

Подход к тестированию зависит от типа продукта. Статичный сайт и полноценное веб-приложение требуют разного объёма QA-работ.

Параметр Статичный сайт Веб-приложение
Состояние (state)НетЕсть (авторизация, корзина, сессии)
API-взаимодействиеМинимальноеИнтенсивное (REST, GraphQL)
Динамический контентНетДа (SPA, PWA, SSR)
Риски безопасностиНизкиеВысокие (OWASP Top 10)
Объём QAБазовыйКомплексный

8 видов тестирования веб-приложений

Каждый вид проверки решает конкретную задачу. В реальных проектах они работают в связке — упустить один тип значит оставить слепую зону.

Вид Что проверяет Инструменты
ФункциональноеБизнес-логика, пользовательские сценарииSelenium, Cypress, Playwright
UI / юзабилитиИнтерфейс, читаемость, UX-потокиBrowserStack, Figma, пользовательские сессии
API / БэкендREST/GraphQL, статусы, обработка ошибокPostman, REST-assured, Newman
База данныхЦелостность данных, транзакции, миграцииSQL-проверки, DbUnit, Flyway-тесты
НагрузочноеПоведение при пиковой и устойчивой нагрузкеJMeter, k6, Gatling
БезопасностиOWASP Top 10: XSS, SQLi, IDOR, SSRFOWASP ZAP, Burp Suite
Кросс-браузерноеChrome, Firefox, Safari, Edge, мобильныеBrowserStack, Sauce Labs, LambdaTest
РегрессионноеРаботоспособность после изменений кодаRobot Framework, pytest, Jest

Юзабилити-тестирование: что и как проверяем

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

QA-специалист наблюдает за сессией юзабилити-тестирования веб-приложения
  • Эвристическая оценка. Эксперт проверяет интерфейс по чек-листу принципов Нильсена (видимость статуса системы, соответствие системы реальному миру, контроль пользователя, консистентность) — быстро и без привлечения респондентов.
  • Модерируемое тестирование. Реальный пользователь выполняет задачи вслух («найдите и оформите заказ») под наблюдением исследователя — вскрывает точки, где логика продукта расходится с ожиданиями людей.
  • Немодерируемое тестирование. Респондент проходит сценарий самостоятельно через сервис (Maze, UserTesting, Lookback), а запись сессии и тепловые карты анализируют позже — дешевле и масштабируется на десятки участников.
  • А/Б-тестирование. Два варианта интерфейса показывают разным сегментам трафика и сравнивают метрики конверсии — подходит для точечных гипотез на уже живом продукте.

Юзабилити-тестирование стоит проводить дважды: на прототипе в Figma — до того, как код написан и правки дёшевы, и на боевой версии — чтобы поймать расхождения между дизайном и реализацией. Команда YuSMP проводит такие проверки в рамках UI/UX-дизайна — до старта разработки, пока ошибку в сценарии исправить дешевле всего.

Пирамида тестирования: от unit к e2e

Концепция пирамиды тестирования описывает правильное соотношение типов тестов по объёму и скорости выполнения:

  • Unit-тесты (70%). Проверяют отдельные функции и модули. Работают за миллисекунды, не требуют браузера или БД. Инструменты: Jest, Vitest (JS/TS), pytest (Python), JUnit (Java).
  • Интеграционные тесты (20%). Проверяют взаимодействие модулей: API → сервис → БД. Медленнее unit, но ловят ошибки на стыках компонентов.
  • E2E-тесты (10%). Сценарии от браузера до БД. Самые медленные, имитируют реального пользователя. Не заменяют нижние уровни, а дополняют их.

Shift-left-подход означает, что тестирование начинается как можно раньше — с написания первого кода, а не после готовой фичи. По данным IBM, стоимость исправления дефекта в проде в 100 раз выше, чем на этапе дизайна.

Смотрите также: тестирование программного обеспечения от команды YuSMP Group.

Методологии: TDD, BDD и риск-ориентированный подход

TDD — разработка через тестирование

Test-Driven Development работает в трёх шагах: Red → Green → Refactor. Сначала пишется тест (он падает, потому что кода нет), затем минимальный код, который делает тест зелёным, и наконец — рефакторинг без потери работоспособности. TDD особенно эффективен для бэкенд-логики, где требования чёткие.

BDD — разработка через поведение

Behaviour-Driven Development описывает тесты языком бизнеса с помощью синтаксиса Gherkin:

Given пользователь открыл форму входа
When он вводит верный email и пароль
Then система перенаправляет его в личный кабинет

Инструменты: Cucumber (Java/JS), SpecFlow (.NET), Behave (Python). BDD сближает продукт, QA и разработчиков — все читают тесты как документацию.

Риск-ориентированное тестирование

При ограниченном времени тестируйте по приоритету риска: критическое (платежи, авторизация, персональные данные) → среднее (основные сценарии) → низкое (редкие edge-case). Такой подход позволяет выпускать качественный продукт даже в жёстких дедлайнах.

Инструменты автоматизации: Cypress vs Playwright vs Selenium

Три самых популярных E2E-фреймворка — у каждого свои сильные стороны.

Критерий Cypress Playwright Selenium
ЯзыкиJS/TSJS/TS, Python, Java, .NETJava, Python, JS, C#, Ruby
БраузерыChrome, Firefox, Edge (без Safari)Все: Chrome, Firefox, Safari, EdgeВсе через WebDriver
ПараллельностьПлатная (Cypress Cloud)Встроенная, бесплатнаяЧерез Selenium Grid
HeadlessДаДаДа
Mobile-testingЭмуляцияЭмуляция + реальные устройстваЧерез Appium
Порог входаНизкийСреднийВысокий
Лучше дляНебольшие SPA-проектыКросс-браузерные E2EEnterprise, legacy-стек

В 2026 году Playwright стал отраслевым стандартом для новых проектов: поддержка всех браузеров, встроенная параллельность и активное развитие от Microsoft. Cypress остаётся лучшим выбором для команд, которые ценят Developer Experience и работают с React/Vue SPA.

Тестирование совместимости: браузеры, устройства и доступность

Приложение, которое идеально работает у разработчика в Chrome на MacBook, может ломаться у пользователя в Safari на iPhone или в корпоративном Edge с отключённым JavaScript. Тестирование совместимости закрывает этот разрыв.

Кросс-браузерное и мультиустройственное тестирование веб-приложения на нескольких экранах
  • Матрица браузеров. Проверяйте последние 2 версии Chrome, Firefox, Safari, Edge — они покрывают более 90% трафика большинства проектов; для B2B-сегмента добавьте актуальную версию корпоративного браузера клиента.
  • Матрица устройств и разрешений. Минимум: десктоп 1920×1080, ноутбук 1366×768, планшет 768×1024, смартфон 375×667 и 390×844. Реальное устройство обязательно для Safari/iOS — эмулятор не воспроизводит его специфичный рендеринг и поведение тач-жестов.
  • Операционные системы. Windows, macOS, Android, iOS — различаются шрифты по умолчанию, поведение скроллбаров, нативные диалоги файлового ввода.
  • Доступность (a11y). Соответствие WCAG 2.2 (актуальная версия — октябрь 2023): контраст текста не ниже 4.5:1, вся функциональность доступна с клавиатуры (Tab, Enter, Esc), видимый фокус-индикатор, alt-тексты у изображений, корректные ARIA-атрибуты для скринридеров (NVDA, VoiceOver). Автоматическая проверка — axe-core или Lighthouse Accessibility, но она ловит не более 30-40% проблем: ручная проверка с клавиатуры и скринридером обязательна.

Инструменты для матрицы браузеров и устройств: BrowserStack и Sauce Labs (облачные фермы реальных устройств), LambdaTest (бюджетная альтернатива), встроенный device toolbar в Chrome DevTools — для быстрой проверки на этапе разработки, но не как замена реальным устройствам перед релизом.

API-тестирование: что и как проверять

Смотрите также: разработка веб-приложений под ключ — проектируем API с нуля.

API-тестирование — один из самых эффективных типов: быстрее E2E, но покрывает бизнес-логику бэкенда без UI. Что проверяем:

  • HTTP-статусы. 200 OK, 201 Created, 400 Bad Request, 401 Unauthorized, 404 Not Found, 500 Internal Server Error — каждый должен возвращаться в правильном контексте.
  • Структура ответа. JSON-схема, обязательные поля, типы данных. Валидация через Pact или JSON Schema в Postman.
  • Граничные значения. Пустые строки, null, экстремально длинный ввод, спецсимволы.
  • Аутентификация и авторизация. Запросы без токена — 401; запросы с чужим токеном — 403.
  • Rate limiting. Приложение корректно отвечает 429 при превышении лимита и не падает при DDoS-имитации.

Инструментарий: Postman / Newman (GUI + CLI для CI/CD), REST-assured (Java-DSL), pytest + requests / httpx (Python), k6 (JS, совмещает API и нагрузочные тесты).

Нагрузочное тестирование: 4 типа и ключевые метрики

Нагрузочное тестирование моделирует поведение системы при разных сценариях трафика.

Тип Сценарий Цель
Load (нагрузочное)Плановая нагрузка (N пользователей)Система выдерживает расчётный трафик
Stress (стресс)Выше планового (2–5×)Найти точку отказа
Soak (длительное)Плановая нагрузка 4–8 часовMemory leaks, деградация производительности
Spike (всплеск)Резкий скачок: 10× за секундыFlash sale, вирусный пост, DDoS

Ключевые метрики: Throughput (RPS), время ответа P95/P99, Error Rate (норма < 1%). Рекомендуемые пороги: P95 < 500 мс для веб-страниц, P99 < 1000 мс. Инструменты: Apache JMeter, k6, Gatling.

Тестирование безопасности: OWASP Top 10

OWASP Top 10 — стандарт минимальной программы тестирования безопасности веб-приложений. Топ уязвимостей:

  1. SQL-инъекции. Пользовательский ввод попадает в SQL-запрос напрямую — атакующий может получить или стереть данные.
  2. Broken Access Control (IDOR). Пользователь получает доступ к чужим ресурсам, меняя ID в URL или запросе.
  3. Cryptographic Failures. Пароли в MD5 или открытый текст, HTTP вместо HTTPS, слабые ключи шифрования.
  4. XSS (Cross-Site Scripting). Вредоносный скрипт хранится на сервере (stored XSS) или отражается в ответе (reflected XSS).
  5. SSRF (Server-Side Request Forgery). Сервер выполняет запросы к внутренней инфраструктуре по указанию атакующего.

Инструменты: OWASP ZAP (бесплатный, CI-интеграция), Burp Suite Professional (ручной пентест), Trivy / Snyk (зависимости и Docker-образы). Профессиональную проверку проводит наша команда в рамках разработки мобильных приложений и веб-продуктов.

Тестирование локализации и глобализации (i18n/l10n)

Даже если сейчас у продукта один язык интерфейса, закладывать проверку локализации стоит заранее — переделывать архитектуру строк после выхода на второй рынок дороже, чем один раз всё протестировать сразу.

  • Форматы данных. Даты (ДД.ММ.ГГГГ в России vs MM/DD/YYYY в США), числа (разделитель разрядов — пробел или запятая), валюта и её позиция относительно суммы, часовые пояса при отображении времени события.
  • Расширение текста при переводе. Немецкие и финские строки могут быть на 30-40% длиннее английских — кнопки и лейблы должны выдерживать увеличение без переноса макета.
  • Кодировка и спецсимволы. UTF-8 везде: формы, БД, API-ответы, экспорт в CSV/PDF. Смешивание кодировок — частая причина «кракозябр» вместо кириллицы.
  • RTL-языки. Если планируется арабский или иврит, интерфейс должен зеркалироваться (CSS `direction: rtl`), а не просто переворачивать текст.
  • Псевдолокализация. Техника, при которой строки временно заменяют на удлинённые версии с диакритикой (например, «Ĥéllŏ Ŵőrld») — так до перевода на реальный язык видно, где вёрстка сломается от увеличения длины текста.

Инструменты: i18next и Lokalise (управление строками и переводами), Crowdin (командная локализация с контекстом для переводчиков), автоматические проверки полноты перевода — прямо в CI, чтобы забытый непереведённый ключ не ушёл в прод.

Интеграция тестирования в CI/CD

Правильно выстроенный пайплайн гарантирует, что в прод попадает только протестированный код. Типовая структура на GitLab CI:

stages:
  - lint          # ESLint, Prettier, Stylelint
  - unit          # Jest / Vitest — секунды
  - integration   # API-тесты против тест-БД
  - e2e           # Playwright / Cypress
  - security      # OWASP ZAP / Trivy

e2e:
  stage: e2e
  image: mcr.microsoft.com/playwright:v1.44.0
  script:
    - npx playwright test --reporter=html
  artifacts:
    paths: [playwright-report/]
    when: always

Принципы грамотной CI/CD-интеграции:

  • Быстрые тесты (unit) — в каждый коммит; медленные (E2E) — в каждый MR/PR.
  • Упавший тест блокирует деплой (fail-fast).
  • Артефакты с отчётами и скриншотами хранить минимум 7 дней.
  • Параллельный запуск E2E сокращает время пайплайна с 20 до 5 минут.

Как провести тестирование веб-приложения: пошаговый план

Если вы запускаете QA-процесс с нуля, придерживайтесь этой последовательности — она объединяет всё, что разобрано в статье, в единый рабочий цикл.

  1. Соберите тест-план и критерии приёмки. На основе ТЗ и пользовательских сценариев определите, что именно нужно проверить, и какие метрики (P95, Error Rate, LCP) считаются успехом.
  2. Настройте тестовое окружение. Отдельный stage-контур с тестовой БД и mock-сервисами для внешних API — тесты не должны трогать прод-данные.
  3. Постройте пирамиду автотестов. Начните с unit-тестов бизнес-логики, добавьте интеграционные для связки API → сервис → БД, и лишь затем — E2E-сценарии в Playwright или Cypress для критичных пользовательских путей.
  4. Проведите юзабилити- и кросс-браузерные проверки. Прогоните ключевые сценарии на матрице браузеров, устройств и с клавиатурной навигацией — вручную, автотест этого не заменяет.
  5. Запустите нагрузочное и security-тестирование. Смоделируйте плановый и пиковый трафик через k6 или JMeter, просканируйте приложение OWASP ZAP на уязвимости из Top 10.
  6. Автоматизируйте регрессию в CI/CD. Подключите unit- и API-тесты к каждому коммиту, E2E — к каждому MR, а упавший тест сделайте блокирующим для деплоя.

Чек-лист тестирования веб-приложения

Используйте этот чек-лист перед каждым релизом.

Функциональная проверка

  • Все формы принимают корректный ввод и возвращают ожидаемый результат
  • Граничные значения полей: пустое, максимальная длина, спецсимволы
  • Авторизация: вход, выход, сброс пароля, «запомнить меня»
  • CRUD-операции: создание, чтение, обновление, удаление данных
  • Роли и доступы: пользователь не видит данные другого, admin-панель закрыта
  • Email-уведомления отправляются в нужный момент
  • Пагинация, поиск и сортировка работают корректно

Производительность

  • Time to First Byte (TTFB) < 200 мс
  • Largest Contentful Paint (LCP) < 2.5 с (Core Web Vitals)
  • Страница выдерживает плановый RPS без деградации P95
  • Нет memory leaks при 4-часовой soak-нагрузке
  • Ассеты сжаты: gzip/Brotli, изображения в WebP/AVIF

Безопасность

  • SQL-инъекции: все поля обработаны параметризованными запросами
  • XSS: HTML-сущности экранированы, CSP-заголовок настроен
  • HTTPS повсюду, HTTP → 301 → HTTPS
  • Cookies: флаги HttpOnly, Secure, SameSite=Strict
  • Rate limiting на эндпоинтах входа и сброса пароля

Кросс-браузерное и мобильное

  • Корректный рендеринг в Chrome, Firefox, Safari, Edge (последние 2 версии)
  • Мобильная вёрстка: viewport meta, touch-события, нет горизонтального скролла
  • Реальное iOS-устройство или BrowserStack — Safari рендерит иначе, чем эмулятор
  • Шрифты и иконки загружены при медленном соединении (3G-throttling)
  • Accessibility: контраст 4.5:1, фокус-кольца видны, базовый audit axe-core

Частые вопросы о тестировании веб-приложений

Что такое тестирование веб-приложения?

Тестирование веб-приложения — процесс проверки его функциональности, производительности, безопасности и кросс-браузерной совместимости. Цель — обнаружить и устранить дефекты до выхода в прод.

Какие виды тестирования веб-приложений бывают?

Восемь основных видов: функциональное (бизнес-логика), UI/юзабилити, API/бэкенд, тестирование БД, нагрузочное (load/stress/soak/spike), безопасности (OWASP Top 10), кросс-браузерное и регрессионное. Подробная таблица с инструментами приведена в статье.

Чем ручное тестирование отличается от автоматизированного?

Ручное тестирование выполняет QA-специалист — подходит для exploratory-тестирования и UX-проверок. Автоматизированное использует скрипты (Selenium, Cypress, Playwright) для повторяющихся сценариев: быстрее и экономичнее при частых релизах.

Как часто нужно тестировать веб-приложение?

Оптимально — на каждом этапе: unit-тесты при написании кода, функциональные — при сборке, регрессионные — перед каждым релизом. Shift-left-подход снижает стоимость исправления ошибок в 10–100 раз по сравнению с обнаружением дефекта в проде.

Можно ли провести тестирование веб-приложения самостоятельно?

Базовую функциональную проверку — да. Нагрузочные тесты, тестирование безопасности и автоматизированную регрессию лучше доверить профессиональной QA-команде: пропущенная уязвимость или незамеченный под нагрузкой сбой обходятся значительно дороже.

Как интегрировать тестирование в CI/CD-пайплайн?

Типовая схема: lint → unit-тесты (каждый коммит) → API-тесты → E2E (каждый MR) → security-сканирование. Playwright и Newman запускаются в Docker-контейнерах через GitLab CI или GitHub Actions. Упавший тест блокирует деплой — это ключевое правило CI-культуры.

Нужно ли тестировать локализацию, если сайт работает только на одном языке?

Да, если есть шанс выхода на новый рынок. Форматы дат, чисел и валют, кодировка UTF-8 и запас по длине текста в вёрстке — дешевле заложить сразу, чем переделывать архитектуру строк после того, как продукт уже вырос из одного языка.

Чем юзабилити-тестирование отличается от UX-исследования?

Юзабилити-тестирование проверяет, может ли пользователь выполнить конкретную задачу в уже существующем интерфейсе — вход, оформление заказа, поиск. UX-исследование шире: интервью, персоны и discovery ещё до того, как интерфейс спроектирован.

Обсудим ваш проект?

Соберём команду под вашу задачу и оценим проект за 2 дня — бесплатно.

Обсудить проект