Тестирование сайтов: как находить баги до релиза

Тестирование сайтов: как находить баги до релиза
0
35

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

Зачем проверять сайт до публикации

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

Иногда используют эвристическую модель 1–10–100, чтобы показать возможный рост затрат на исправление проблемы по мере её продвижения к пользователям. Условная единица на этапе требований, десять — во время разработки, сто — после выхода в продакшен. Это наглядная модель затрат. В проде к исправлению добавляются диагностика, срочный выпуск, поддержка клиентов и возможные потери выручки.

Например, если корзина интернет-магазина не сохраняет товар, при обсуждении требований это можно выявить вопросом о правилах хранения корзины. На этапе разработки проблему найдёт проверка API или интерфейса. После релиза покупатели могут не завершить заказ, а команда будет разбирать логи, восстанавливать сценарий и выпускать исправление в условиях работающего сервиса.

Какие виды тестирования нужны сайту

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

  • Функциональное тестирование (functional testing) проверяет функции по требованиям: регистрацию, поиск, оплату, восстановление пароля.
  • Регрессионное тестирование (regression testing) проверяет, что изменения не нарушили уже работавшие функции. 
  • Smoke-тестирование (smoke testing) — короткий набор проверок, который помогает понять, пригодна ли сборка для дальнейшего тестирования.
  • UI/UX-тестирование оценивает отображение и удобство взаимодействия: читаемость, понятность ошибок, доступность основных элементов.
  • Кроссбраузерное тестирование (cross-browser testing) сравнивает поведение сайта в разных браузерах. Мобильное тестирование проверяет адаптивную верстку, сенсорное управление и сценарии на телефонах.
  • Нагрузочное тестирование (load testing) оценивает производительность при заданном числе пользователей и запросов.

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

Как устроены окружения Dev, Stage и Prod

Окружение (environment) — это отдельная конфигурация приложения и зависимостей, на которой выполняются разработка, проверка или эксплуатация. Обычно команда использует Dev для разработки, Stage (Pre-prod) для проверки сборки перед выпуском и Prod (production) для реальных пользователей. Stage должен по возможности повторять настройки и интеграции продакшена, при этом тестовые данные и доступы следует отделять от настоящих.

Тестирование сайтов: как находить баги до релиза

На локальной машине разработчика могут отличаться версии браузера, базы данных, переменные окружения, сетевые правила и содержимое кэша. Поэтому фраза «у меня всё работает» подтверждает поведение только в конкретной конфигурации. Проверка на Stage помогает выявить несовпадения до публикации, хотя сама по себе не гарантирует полного совпадения со всеми условиями прода.

Как подготовить тесты и описать дефект

Чек-лист — это список условий или действий для проверки без подробного сценария выполнения. Он удобен, когда специалист знает продукт и может пройти проверки гибко. Тест-кейс (test case) описывает предусловия, шаги, данные и ожидаемый результат, поэтому его проще повторить другому человеку или автоматизировать.

Баг-репорт (bug report) должен помогать воспроизвести и диагностировать дефект. Вместо заголовка «Не работает кнопка» укажите: «После нажатия “Оплатить” запрос POST /orders завершается ответом 500, заказ не создаётся». Если запрос не отправляется: «После нажатия “Оплатить” запрос POST /orders не появляется во вкладке Network; заказ не создаётся».

ПолеЧто указатьЧего избегать
Summary«Корзина очищается после обновления страницы в Safari на iPhone»«Сайт сломан»
Steps to reproduceТочные шаги: добавить товар, открыть корзину, обновить страницу«Зайти и проверить»
Actual resultЧто произошло: корзина отображается пустойПредположений о причине
Expected resultЧто должно произойти согласно требованиямНеясного «должно работать»
EnvironmentСборка, браузер и версия, ОС, устройство«Мой телефон»
Logs/ScreenshotsСкриншот, сетевой запрос или сообщение ошибкиИзображения без пояснения

Плохой пример: «Не работает оплата». Непонятно, где возникает сбой, какие данные использовались и повторяется ли проблема.

Хороший пример: «Оплата картой не создаёт заказ на Stage, Chrome 130, Windows 11. Войти тестовым покупателем, добавить товар за 1 200 ₽, перейти в корзину и нажать “Оплатить”. Фактически заказ не появляется, в Network запрос POST /orders завершается с 500. Ожидается создание заказа и экран подтверждения. Скриншот и время запроса приложены».

Тестирование сайтов: как находить баги до релиза

Жизненный цикл бага

Статусы зависят от настроек трекера задач, например Jira, но типичный путь дефекта выглядит так:

  1. New — дефект зарегистрирован и ожидает оценки.
  2. In Progress — разработчик взял задачу в работу.
  3. Fixed — исправление готово и доступно в сборке для проверки.
  4. Verified — тестировщик подтвердил исправление на нужном окружении.
  5. Closed — работа завершена, дефект закрыт.
  6. Reopened — проблема воспроизводится после исправления; задача возвращается в работу.
Тестирование сайтов: как находить баги до релиза

Закрывать дефект стоит после проверки на сборке с исправлением и повторного выполнения затронутого сценария. Если проверка прошла только на локальной машине, а релиз собирается иначе, результат не подтверждает поведение целевой сборки.

★ Где этому научиться

Курс «Тестировщик ПО (QA-инженер)» в Академии IT DMS

✓Тест-кейсы и баг-репорты, тестирование в Jira и Zephyr Scale
✓Проверка веб-сайтов, мобильных приложений и API в Postman
✓Нагрузочное тестирование в JMeter и первые автотесты на Selenium

Сертификат или удостоверение о повышении квалификации.

Перейти к курсу →ПромокодAFFTIMES

−5 % на первую покупку. Скидка суммируется с любыми акциями школы. Если оплачиваете через менеджера в чате, назовите ему промокод.

Ручные проверки и автоматизация

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

КритерийРучное тестированиеАвтоматизированное тестирование
Лучше подходит дляИсследования, нового интерфейса, разовых проверокЧастых повторов, регрессии, больших наборов данных
Сильная сторонаСпециалист замечает неожиданные детали и оценивает удобствоБыстро повторяет заданные проверки и фиксирует результат
ОграничениеПовторение занимает время, возможны пропускиТребует разработки, обслуживания и стабильных тестовых данных
ПримерПроверить понятность формы регистрацииПроверять создание заказа при каждом выпуске

Пирамида тестирования — модель, в которой основу составляют многочисленные быстрые проверки нижних уровней, а более медленных интеграционных и сквозных проверок меньше. Сквозные тесты могут выполняться как через UI, так и через API. Практический смысл в том, чтобы находить ошибки на подходящем уровне: неверный расчёт скидки проще диагностировать тестом функции, чем длинным сценарием в браузере.

Тестирование сайтов: как находить баги до релиза

Playwright, Cypress и Selenium применяют для браузерной автоматизации; выбор зависит от стека команды, браузеров и доступных возможностей. Playwright поддерживает Chromium, Firefox и WebKit. Для системного подхода команде нужны общие правила, обучение и время на поддержку тестов. 

Профильные курсы для QA могут быть частью развития компетенций.

Почему проверки API дополняют UI-тесты

Интерфейс показывает только часть поведения приложения. Проверки через API помогают отдельно проверить валидацию данных, права доступа, обработку ошибок и формат ответа.

HTTP-статус-коды описывают результат запроса, но сами по себе не подтверждают правильность бизнес-логики:

  • 200 OK — запрос успешно обработан.
  • 201 Created — запрос привёл к созданию ресурса.
  • 400 Bad Request — сервер не обрабатывает запрос, поскольку считает его некорректным, например из-за ошибочного синтаксиса или неверного формата.
  • 401 Unauthorized — запрос не выполнен из-за отсутствующих или недействительных данных аутентификации.
  • 404 Not Found — сервер не нашёл целевой ресурс либо не сообщает о его существовании.
  • 500 Internal Server Error — сервер столкнулся с неожиданной ситуацией, из-за которой не смог выполнить запрос.

Если интерфейс показывает подтверждение оплаты, а API возвращает ошибку или не создаёт заказ, успешный вид страницы недостаточен. Сверяйте код ответа, тело запроса, ответ сервера и фактическое состояние заказа.

Тестирование сайтов: как находить баги до релиза

Как проверять браузеры, телефоны и страницу сайта

DevTools браузера помогают быстро локализовать проблему. Network показывает запросы, ответы, время загрузки и переданные данные. Console выводит сообщения JavaScript и ошибки. Elements позволяет исследовать DOM и стили элемента, например выяснить, почему кнопка перекрыта другим блоком.

Тестирование сайтов: как находить баги до релиза

Эмуляция мобильного устройства в DevTools полезна для быстрой проверки ширины экрана и адаптивной верстки, но не полностью воспроизводит поведение реального телефона. На устройстве могут отличаться жесты, клавиатура, производительность и браузерный движок. Для расширения набора конфигураций применяют устройства и сервисы вроде BrowserStack.

Сайт может корректно отображаться в Chrome на компьютере, но ломать меню или ввод в iOS Safari. Причина часто проявляется только при реальном сенсорном управлении или особенностях мобильного браузера. Поэтому сочетайте эмуляцию с проверкой на реальных устройствах.

Базовые проверки безопасности сайта

Проверяйте, что пользователь видит только свои данные и не может получить доступ к чужим заказам, изменив идентификатор в запросе. Для форм проверьте обработку недоверенного ввода: XSS может внедрить сценарий, который выполнится в браузере, а SQL-инъекция — повлиять на запросы к базе данных. Клиентская валидация помогает сразу показать ошибку, но её можно обойти, поэтому сервер обязан самостоятельно проверять входные данные и права доступа.

В базовую проверку также входят сценарии входа и выхода, сброса пароля, истечения сессии и ограничения доступа к закрытым страницам. Ошибки не должны раскрывать пароли, токены, персональные данные или подробности внутренней реализации. Для системной оценки рисков команда может использовать категории OWASP Top 10 и согласовать с разработчиками дополнительные проверки для конкретного приложения.

QA в Agile и Scrum

Shift-left тестирование означает раннее включение проверок в процесс разработки. QA-инженер участвует в груминге задач, уточняет критерии приёмки, задаёт вопросы о граничных случаях и помогает выявить неоднозначности до начала реализации. Это снижает вероятность того, что команда обнаружит пропущенное требование после релиза.

Команде полезно определить минимальный набор проверок перед выпуском: например, smoke-набор, критичные API-сценарии, регрессию ключевых пользовательских путей и ручную проверку изменений интерфейса. Тестовое покрытие показывает, какие части системы проверены, но высокий процент покрытия сам по себе не подтверждает качество сценариев. Проверки должны соответствовать рискам, а результаты быть понятными команде.

FAQ

Может ли разработчик тестировать свой код?

Да, разработчик проверяет свою реализацию модульными и интеграционными тестами, а также вручную. Независимая проверка полезна для новых сценариев и другого взгляда на требования: автор кода может не заметить собственное предположение о поведении системы.

Нужно ли стремиться к 100% тестовому покрытию?

Нет универсальной цели, подходящей каждому проекту. Покрытие кода измеряет, какие участки выполнялись во время тестов, но не показывает, насколько правильно проверены требования и важные пользовательские риски.

Что проверять перед небольшим релизом?

Проверьте изменённую функцию, связанные сценарии, критичный smoke-набор и ошибки в логах. Объём регрессии выбирают по влиянию изменения и связям компонентов.

Можно ли выпускать известный дефект?

Решение зависит от влияния на пользователей, наличия обходного пути и бизнес-риска. Команда должна зафиксировать последствия и ответственных за решение, особенно если дефект затрагивает оплату, доступ или данные.

Когда автотест начинает окупаться?

Когда сценарий регулярно повторяют, его результат важен, а поведение достаточно стабильно для автоматизации. Редкую разовую проверку часто быстрее выполнить вручную.

Нужно ли тестировать каждую страницу во всех браузерах?

Набор конфигураций выбирают по аудитории, аналитике и риску изменений. Обычно начинают с браузеров и устройств, которыми чаще пользуются клиенты, затем проверяют дополнительные сочетания для критичных функций.

Лиля Райн
Лиля Райн
Автор
(Проголосовать за статью)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

X