Если вы заказываете разработку веб-приложения, команда 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, SSRF | OWASP ZAP, Burp Suite |
| Кросс-браузерное | Chrome, Firefox, Safari, Edge, мобильные | BrowserStack, Sauce Labs, LambdaTest |
| Регрессионное | Работоспособность после изменений кода | Robot Framework, pytest, Jest |
Юзабилити-тестирование: что и как проверяем
Функциональное тестирование отвечает на вопрос «работает ли фича», юзабилити-тестирование — «удобно ли ей пользоваться». Даже безупречно рабочая форма регистрации из пяти шагов с неочевидной навигацией теряет пользователей на середине воронки — и это не баг, который поймает автотест.

- Эвристическая оценка. Эксперт проверяет интерфейс по чек-листу принципов Нильсена (видимость статуса системы, соответствие системы реальному миру, контроль пользователя, консистентность) — быстро и без привлечения респондентов.
- Модерируемое тестирование. Реальный пользователь выполняет задачи вслух («найдите и оформите заказ») под наблюдением исследователя — вскрывает точки, где логика продукта расходится с ожиданиями людей.
- Немодерируемое тестирование. Респондент проходит сценарий самостоятельно через сервис (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/TS | JS/TS, Python, Java, .NET | Java, Python, JS, C#, Ruby |
| Браузеры | Chrome, Firefox, Edge (без Safari) | Все: Chrome, Firefox, Safari, Edge | Все через WebDriver |
| Параллельность | Платная (Cypress Cloud) | Встроенная, бесплатная | Через Selenium Grid |
| Headless | Да | Да | Да |
| Mobile-testing | Эмуляция | Эмуляция + реальные устройства | Через Appium |
| Порог входа | Низкий | Средний | Высокий |
| Лучше для | Небольшие SPA-проекты | Кросс-браузерные E2E | Enterprise, 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 — стандарт минимальной программы тестирования безопасности веб-приложений. Топ уязвимостей:
- SQL-инъекции. Пользовательский ввод попадает в SQL-запрос напрямую — атакующий может получить или стереть данные.
- Broken Access Control (IDOR). Пользователь получает доступ к чужим ресурсам, меняя ID в URL или запросе.
- Cryptographic Failures. Пароли в MD5 или открытый текст, HTTP вместо HTTPS, слабые ключи шифрования.
- XSS (Cross-Site Scripting). Вредоносный скрипт хранится на сервере (stored XSS) или отражается в ответе (reflected XSS).
- 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-процесс с нуля, придерживайтесь этой последовательности — она объединяет всё, что разобрано в статье, в единый рабочий цикл.
- Соберите тест-план и критерии приёмки. На основе ТЗ и пользовательских сценариев определите, что именно нужно проверить, и какие метрики (P95, Error Rate, LCP) считаются успехом.
- Настройте тестовое окружение. Отдельный stage-контур с тестовой БД и mock-сервисами для внешних API — тесты не должны трогать прод-данные.
- Постройте пирамиду автотестов. Начните с unit-тестов бизнес-логики, добавьте интеграционные для связки API → сервис → БД, и лишь затем — E2E-сценарии в Playwright или Cypress для критичных пользовательских путей.
- Проведите юзабилити- и кросс-браузерные проверки. Прогоните ключевые сценарии на матрице браузеров, устройств и с клавиатурной навигацией — вручную, автотест этого не заменяет.
- Запустите нагрузочное и security-тестирование. Смоделируйте плановый и пиковый трафик через k6 или JMeter, просканируйте приложение OWASP ZAP на уязвимости из Top 10.
- Автоматизируйте регрессию в 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 дня — бесплатно.




