ФиксИнтернет-магазин на 1С-Битрикс под ключ за 30 дней по фиксированной цене

Тестирование и QA интернет-магазина на 1С-Битрикс

Тестирование и QA интернет-магазина на 1С-Битрикс: виды тестирования, чек-листы, регресс, нагрузочное тестирование и приёмка

Интернет-магазин на 1С-Битрикс — это не одна страница, а десятки взаимосвязанных сценариев: каталог с фильтром, карточка товара с торговыми предложениями, корзина, многошаговое оформление, оплата разными способами, расчёт доставки по регионам, личный кабинет и обмен с 1С по расписанию. Каждый из них может сломаться незаметно — не «упасть с ошибкой на главной», а тихо перестать работать в одном браузере, для одного региона или после очередного обмена. И пока кто-то случайно не заметит, магазин будет терять заказы каждый день. Тестирование интернет-магазина нужно именно для того, чтобы находить такие дефекты дёшево — до релиза, а не по жалобам клиентов.

Эта статья — практическая карта QA для магазина на 1С-Битрикс. Разберём, зачем нужно тестирование и сколько на самом деле стоит баг в продакшене, какие бывают виды тестирования (функциональное, регресс, интеграционное, нагрузочное, юзабилити, безопасность, кроссбраузерное и мобильное), какие сценарии магазина критичны и как их проверять, как строить чек-листы и тест-кейсы, где проходит граница между ручным и автоматизированным тестированием, что такое unit и e2e (Selenium, Playwright обзорно), как устроены тестовые окружения и данные, как проводить нагрузочное тестирование и тест обмена с 1С на копии, что входит в приёмку сайта (UAT) и критерии приёмки, как вести баг-трекинг и выстроить цикл релиза с регрессом и smoke-тестом после деплоя. Материал — выжимка из практики поддержки и развития магазинов на 1С-Битрикс, где качество каждого релиза измеряется в деньгах.

Коротко

  • QA экономит деньги: баг, найденный до релиза, — это правка в задаче; тот же баг в проде — потерянные заказы, откаты и работа ночью. Чем позже найден дефект, тем дороже.
  • Видов тестирования много: функциональное, регресс, интеграционное, нагрузочное, юзабилити, безопасность, кроссбраузерное и мобильное — у каждого своя задача и свой момент в процессе.
  • Критичные сценарии магазина (каталог, фильтр, карточка, корзина, оформление, оплата, доставка, регистрация, обмен с 1С) проверяют по чек-листам и тест-кейсам перед каждым релизом.
  • Ручное и автоматизированное дополняют друг друга: ручное — для нового и юзабилити, автоматизированное (unit, e2e на Selenium/Playwright) — для регресса стабильного.
  • Обмен с 1С и нагрузку тестируют на копии (stage), а перед приёмкой (UAT) сверяются с согласованными критериями. После деплоя — короткий smoke-тест на бою.

Зачем магазину QA: цена бага в проде

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

Проблема магазина в том, что дефекты здесь редко «кричат». Ошибка PHP видна сразу, но большинство коммерчески опасных багов выглядят иначе:

Ни один из этих багов не выдаёт себя на первый взгляд. Их находит либо тестирование, либо разгневанный клиент через неделю — и цена этих двух путей отличается на порядок. QA — это дисциплина, которая сдвигает поиск дефектов «влево», к дешёвым стадиям: в код-ревью, в юнит-тесты, в прогон чек-листа на stage, — вместо того чтобы платить за них выручкой на проде.

Правило сдвига влево: чем раньше найден дефект, тем дешевле его исправить. Один прогон регресс-чек-листа перед релизом стоит несколько часов работы, а один пропущенный дефект в оформлении заказа может стоить дневной выручки по каналу. QA окупается не «качеством ради качества», а предотвращёнными потерями.

Тестирование и QA: разбираемся в терминах

Часто «тестирование» и «QA» используют как синонимы, но это разные по объёму понятия, и разница помогает выстроить процесс правильно.

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

Ещё одно полезное различение — уровни серьёзности того, что мы ищем. Дефект (баг) — расхождение поведения с ожидаемым. Инцидент — проявление дефекта в проде, влияющее на пользователей. Регрессия — дефект, который сломал ранее работавшую функциональность. Магазин особенно чувствителен к регрессиям, потому что живёт долго и постоянно меняется: новый функционал легко ломает старый, и без регресс-тестирования это выясняется уже на клиентах.

Виды тестирования интернет-магазина

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

Вид тестированияЧто проверяетКогда применять
ФункциональноеЧто функции работают по требованиям: фильтр фильтрует, корзина считает, заказ оформляетсяНа любую новую и изменённую функциональность
РегрессЧто ранее работавшее не сломалось после измененийПеред каждым релизом
ИнтеграционноеСтыки систем: обмен с 1С, платёжные шлюзы, службы доставки, CRMПри изменениях интеграций и модулей
НагрузочноеПоведение под одновременной нагрузкой и всплесками трафикаПеред акциями, сезоном, после роста трафика
ЮзабилитиУдобство: понятность интерфейса, длина пути к покупке, текстыПри редизайне, новых сценариях, падении конверсии
БезопасностьУязвимости: доступы, инъекции, обработка ввода, праваПериодически и при работе с платежами/данными
КроссбраузерноеОдинаковую работу в разных браузерах и их версияхПосле вёрстки и изменений фронтенда
Мобильное / адаптивноеКорректность на телефонах и планшетах, тач-взаимодействияПосле любых изменений вёрстки
Приёмочное (UAT)Соответствие бизнес-задачам и техзаданию с точки зрения заказчикаПеред сдачей работы / выходом в прод

Виды удобно делить и по другому признаку — на функциональные (проверяют, что система делает) и нефункциональные (проверяют, как она это делает: быстро, безопасно, удобно). Для магазина критичны обе группы: функциональные ловят «не работает», нефункциональные — «работает, но медленно / небезопасно / неудобно», а это тоже теряет деньги. Дальше разберём ключевые виды подробнее, начав с того, как они соотносятся между собой по цене и объёму.

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

Чтобы автоматизированные тесты приносили пользу, а не превращались в обузу, их распределяют по уровням. Классическая модель — пирамида тестирования: широкое основание из быстрых дешёвых тестов, узкая вершина из медленных дорогих. Идея в том, чтобы основную массу проверок держать на нижних уровнях, а верхние использовать точечно для самых важных сквозных сценариев.

Типичная ошибка — перевернуть пирамиду: написать десятки хрупких e2e-тестов и ни одного unit. Такой набор долго гоняется, часто ломается по мелочам (сдвинулась вёрстка — упал тест) и team перестаёт ему доверять. Здоровая структура — много быстрых нижних тестов и несколько устойчивых верхних. Для магазина на Битриксе прагматичный минимум: unit на собственную бизнес-логику (скидки, расчёты), пара e2e на оформление и оплату, всё остальное — ручные чек-листы.

Пирамида тестирования магазина E2E каталог→корзина→оплата Интеграционные обмен с 1С, платёжка, доставка Unit-тесты скидки, расчёты, парсеры дороже, медленнее → больше тестов →
Схема: пирамида тестирования — много быстрых и дешёвых unit-тестов в основании, слой интеграционных проверок в середине и немного дорогих e2e-тестов на вершине, покрывающих критичный путь покупки.

Функциональное тестирование

Функциональное тестирование — фундамент всего QA. Оно отвечает на прямой вопрос: делает ли функция то, что от неё ожидают по требованиям? Фильтр по цене должен отбирать товары в диапазоне; добавление в корзину — увеличивать счётчик и сумму; купон — применять скидку; форма оформления — валидировать телефон и не пропускать пустой адрес. Каждая такая проверка — функциональный тест.

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

Отдельно стоит проверка бизнес-правил, специфичных для магазина: пороги бесплатной доставки, ограничения по минимальной сумме заказа, доступность товара без остатка (предзаказ или скрытие), поведение при нулевой цене, работа скидок и их сочетаний. Эти правила — там, где чаще всего расходятся ожидания бизнеса и фактическое поведение системы, поэтому именно их важно зафиксировать в тест-кейсах явно.

Регресс-тестирование перед релизом

Магазин — это долгоживущая система, которая меняется постоянно: новые акции, правки каталога, обновления модулей, доработки интеграций. Каждое изменение несёт риск сломать что-то, что раньше работало. Проверка, что этого не произошло, и называется регресс-тестированием. Это, пожалуй, самый важный вид тестирования для работающего магазина — именно регрессии генерируют большинство «внезапных» инцидентов на проде.

Механика простая: ведётся регрессионный набор — список ключевых сценариев, которые обязаны работать всегда. Перед каждым релизом этот набор прогоняется целиком (или в сокращённом виде, если правка локальная). Если что-то из набора сломалось — релиз не выпускают, пока не починят.

  1. Соберите регрессионный набор. Выпишите все критичные сценарии магазина: каталог, фильтр, карточка, корзина, оформление, оплата, доставка, регистрация, обмен с 1С. Это основа набора.
  2. Приоритизируйте. Пометьте, что критично (оплата, оформление) и должно проверяться всегда, а что можно проверять реже. Полный регресс дорог — приоритеты позволяют не гонять всё каждый раз.
  3. Определите объём под релиз. Для крупного релиза — полный набор; для точечной правки — затронутая область плюс smoke критичного пути.
  4. Прогоните на stage. Регресс всегда идёт на копии, максимально похожей на прод, а не на боевом сайте.
  5. Автоматизируйте повторяющееся. Сценарии, которые вы гоняете каждый раз и которые стабильны, — первые кандидаты на e2e-автоматизацию. Это снимает рутину и ускоряет релизы.

Ключевая мысль: регресс — это не разовое усилие, а дисциплина каждого релиза. Даже без автоматизации простой прогон регрессионного чек-листа перед выкладкой ловит большинство дорогих регрессий. А по мере роста магазина именно регресс автоматизируют в первую очередь, потому что он повторяем и предсказуем. Как встроить регресс в процесс выкатки, мы разбираем в статье про CI/CD и деплой для 1С-Битрикс.

Интеграционное тестирование

Интернет-магазин почти никогда не существует в одиночку — он связан с внешними системами: учётная 1С, платёжные шлюзы, службы доставки, CRM, сервисы рассылок, аналитика. Стыки между системами — самое коварное место: каждая система по отдельности работает, а на границе данные теряются, искажаются или приходят не в том формате. Интеграционное тестирование проверяет именно эти стыки.

Для магазина на Битриксе ключевые интеграции, которые нужно тестировать, такие:

Главный принцип интеграционного тестирования — проверять не только «счастливый путь», но и сбои. Что произойдёт, если платёжный шлюз не ответил вовремя? Если 1С прислала товар без цены? Если служба доставки недоступна в момент оформления? Хорошо спроектированный магазин обрабатывает такие ситуации предсказуемо — показывает понятную ошибку, ставит заказ в очередь, откладывает обмен, — а не падает и не теряет заказ. Проверка этих деградаций и есть суть интеграционного тестирования. Подробнее про саму интеграцию — в материале про интеграцию магазина с 1С.

Критичные сценарии магазина

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

Эти девять блоков — «денежный контур» магазина. Схема ниже показывает их как единый путь: сбой на любом шаге обрывает воронку, поэтому тестируют не только каждый блок по отдельности, но и весь путь целиком (это и есть e2e-сценарий).

Критичные сценарии: путь к заказу Каталог Фильтр умный фильтр, ЧПУ Карточка SKU, цена, остаток Корзина пересчёт, купон Оформление валидация полей Доставка регионы, ПВЗ Оплата статусы, отмена Питают весь путь: регистрация / личный кабинет и обмен с 1С актуальные цены, остатки и статусы заказов; авторизация и история
Схема: критичные сценарии магазина образуют единый путь к оплате — сбой на любом шаге обрывает воронку. Регистрация и обмен с 1С питают весь путь актуальными данными, поэтому тестируются вместе с ним.

Чек-листы и тест-кейсы

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

Чек-лист

Чек-лист — это список того, что нужно проверить, без детальных шагов. «Фильтр по цене работает», «Купон применяется», «Оплата картой проходит». Он компактный, быстро проходится и удобен для регресса и smoke-тестов. Чек-лист не объясняет, как проверять, — он полагается на опыт проверяющего. Это его сила (гибкость, скорость) и слабость (зависимость от квалификации).

Тест-кейс

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

ПолеПример для сценария «Оформление заказа с оплатой картой»
ПредусловиеВ корзине один товар в наличии, пользователь не авторизован
Шаги1. Перейти в корзину 2. Нажать «Оформить» 3. Заполнить контакты и адрес 4. Выбрать доставку 5. Выбрать оплату картой 6. Подтвердить заказ
Ожидаемый результатЗаказ создан, номер показан, письмо отправлено, редирект на оплату, статус обновляется после оплаты, заказ ушёл в 1С
Тестовые данныеТестовая карта платёжной системы, валидный телефон, адрес в зоне доставки
ПриоритетКритический

Практическое правило: детальные тест-кейсы пишут для критичных и сложных сценариев (оформление, оплата, обмен с 1С), а для остального достаточно чек-листов. Не нужно документировать каждую кнопку по всей строгости — это дорого и быстро устаревает. Держите подробную документацию там, где цена ошибки высока и где сценарий неочевиден, а рутину закрывайте чек-листами.

Живой документ: чек-листы и тест-кейсы бесполезны, если их не обновляют. Каждый найденный на проде баг, который «должны были поймать», — повод дописать проверку в чек-лист. Так набор растёт вместе с магазином и со временем закрывает всё больше реальных рисков.

Ручное и автоматизированное тестирование

Вечный вопрос: тестировать руками или писать автотесты? Правильный ответ — и то, и другое, но для разных задач. У ручного и автоматизированного тестирования разные сильные стороны, и попытка заменить одно другим приводит либо к выгоранию тестировщика, либо к горе хрупких автотестов.

КритерийРучное тестированиеАвтоматизированное
Новая функциональностьОтлично: гибко, замечает неожиданноеПлохо: нечего автоматизировать, ещё нестабильно
Регресс стабильногоДорого и утомительно при повторахОтлично: быстро, без усталости
Юзабилити и вёрсткаНезаменимо: оценивает удобство и внешний видОграниченно: ловит только заданные проверки
Исследование («что если?»)Сильная сторона человекаНевозможно
Скорость повторного прогонаМедленноОчень быстро
Стоимость поддержкиНизкая на стартеВысокая: тесты надо чинить при изменениях

Рабочая стратегия для магазина такая. Ручное — для всего нового, для юзабилити, вёрстки, исследовательского тестирования и приёмки. Автоматизированное — для регресса того, что уже стабильно и что вы прогоняете каждый релиз: unit-тесты на собственную бизнес-логику (расчёты скидок, весов, бонусов) и несколько e2e на критичный путь. Не автоматизируйте нестабильное — тесты будут ломаться при каждой правке вёрстки и создавать шум вместо пользы. Не проходите руками одно и то же сто раз — это выматывает и рождает пропуски. Автоматизируйте дорогое и повторяемое, руками делайте новое и оценочное.

E2E-автотесты: Selenium и Playwright

Когда речь заходит об автоматизации сквозных сценариев магазина, используют инструменты, управляющие настоящим браузером. Два самых известных — Selenium и Playwright. Оба эмулируют пользователя: открывают страницы, кликают, вводят текст, проверяют содержимое. Разберём их обзорно, без погружения в код, — чтобы понимать, что это и когда применять.

Что именно автоматизируют e2e-тестами в магазине? Прежде всего — критичный путь покупки: открыть каталог, применить фильтр, зайти в карточку, выбрать торговое предложение, добавить в корзину, оформить, дойти до оплаты. Этот сценарий дорого проходить руками каждый релиз, он стабилен по логике и максимально ценен по смыслу — поэтому он первый кандидат на автоматизацию. Хороший e2e-набор для магазина — это не сотня тестов, а 5–15 сценариев на самые дорогие пути.

Важные оговорки. E2E-тесты — самые хрупкие: они ломаются при изменении вёрстки, идентификаторов элементов, текстов. Чтобы они были устойчивыми, элементы помечают стабильными атрибутами (например, специальными data-атрибутами для тестов), а не привязываются к случайным CSS-классам. И e2e гоняют на выделенном тестовом окружении с предсказуемыми данными, а не на живом каталоге, который меняется от обмена к обмену. Про интеграцию таких прогонов в конвейер выкатки — снова к статье про CI/CD и деплой для 1С-Битрикс.

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

Нельзя качественно тестировать магазин на боевом сайте: любое действие тестировщика (тестовый заказ, правка товара, прогон обмена) там влияет на реальные данные и реальных клиентов. Поэтому серьёзное QA строится на отдельных окружениях. Классическая схема — три контура: dev, stage и prod.

Отдельная тема — тестовые данные. На stage нужны данные, покрывающие крайние случаи: товар в наличии и без остатка, товар с торговыми предложениями и без, разные ценовые диапазоны для фильтра, адреса в зоне доставки и вне её, тестовые карты платёжных систем. Персональные данные реальных клиентов при копировании базы на stage правильно обезличивать — заменять телефоны, e-mail и адреса на тестовые, чтобы случайно не отправить письмо или SMS реальному человеку с тестового контура.

Окружения dev → stage → prod и тесты dev разработка написание кода unit-тесты быстрые проверки данные «грязные» stage копия продакшена регресс интеграционное нагрузочное приёмка (UAT) тестовая 1С, обезличенные данные prod боевой сайт только проверенное smoke после деплоя мониторинг реальные клиенты и деньги деплой релиз Чем правее — тем выше цена ошибки. Основную проверку держат на stage.
Схема: три окружения — dev для разработки и unit-тестов, stage как копия продакшена для регресса, интеграционного, нагрузочного и приёмочного тестирования, prod для боевого сайта и smoke-теста после деплоя. Чем правее, тем дороже ошибка.

Нагрузочное тестирование

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

Инструменты

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

Метрики

Смысл нагрузочного теста — не «положить сайт», а измерить его поведение. Ключевые метрики:

Узкие места

Тестировать надо не абстрактную главную, а реальные тяжёлые сценарии: каталог с фильтром по большому ассортименту, карточку товара, добавление в корзину, оформление. Именно они грузят систему сильнее всего. Типичные узкие места магазина на Битриксе: медленные выборки без кэша, тяжёлый умный фильтр по большому каталогу, отсутствие кэширования компонентов, нехватка ресурсов базы данных и — классика — обмен с 1С, запущенный одновременно с пиком трафика, который забирает ресурсы у живых пользователей. Результаты нагрузочного теста тесно связаны со скоростью загрузки для обычного пользователя — про её метрики и оптимизацию у нас есть отдельная статья про Core Web Vitals интернет-магазина.

Тестируйте на копии, а не на бою: нагрузочные стрельбы по боевому сайту в рабочее время — верный способ устроить себе реальный отказ и потерять заказы. Нагрузку дают по stage-копии, приближенной к проду по ресурсам, либо по проду в заранее согласованное «тихое» окно с готовностью откатиться.

Тест обмена с 1С на копии

Обмен с 1С — сердце большинства магазинов на Битриксе и одновременно самая рискованная для тестирования зона. Через обмен в магазин приходят каталог, цены и остатки, а обратно уходят заказы. Ошибка здесь бьёт сразу по всему: неверные цены, пропавшие остатки, задвоенные товары, потерянные заказы. Поэтому обмен тестируют исключительно на копии, никогда — на связке боевого сайта с боевой 1С.

Правильная схема теста обмена такая: разворачивается stage-копия сайта и отдельная тестовая информационная база 1С (или копия боевой). Обмен настраивается между копиями, и никакие тестовые выгрузки физически не могут долететь до продакшена. Что проверяют:

Главное правило безопасности — физическая изоляция контуров: тестовая 1С не имеет доступа к боевому сайту, а боевая 1С — к stage. Рассинхронизация цен и остатков на проде из-за «случайно направленного не туда» тестового обмена обходится дороже любого теста и бьёт по репутации. Детали настройки самого обмена мы разбираем в материале про интеграцию магазина с 1С.

Юзабилити-тестирование

Магазин может быть функционально безупречен и всё равно плохо продавать — потому что им неудобно пользоваться. Юзабилити-тестирование проверяет не «работает ли», а «удобно ли»: понятен ли интерфейс, короток ли путь к покупке, ясны ли тексты ошибок, не теряется ли пользователь. Это тестирование с точки зрения человека, а не системы.

Что оценивают в юзабилити-тестировании магазина:

Юзабилити-тестирование почти всегда ручное и часто исследовательское: тестировщик или реальный пользователь проходит типовые задачи («купи вот этот товар с доставкой в свой город») и отмечает, где спотыкается. Это область, которую невозможно свести к автотестам, — она требует человеческого суждения. Юзабилити-проблемы напрямую влияют на конверсию, поэтому их находки часто ценнее, чем очередной технический баг.

Тестирование безопасности

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

Тестирование безопасности проводят периодически и обязательно — при работе с платежами и персональными данными. Хорошая практика — включить базовые проверки безопасности в регрессионный чек-лист (например, «чужой заказ недоступен по прямой ссылке»), чтобы случайная доработка не открыла доступ. Более глубокий анализ — задача для профильного аудита, который стоит заказывать при серьёзных изменениях архитектуры или работе с чувствительными данными.

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

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

Кроссбраузерное

Проверяют работу в актуальных версиях основных браузеров, которыми реально пользуется аудитория магазина (её видно в аналитике). Смотрят не только «открывается ли», а всё критичное: вёрстку каталога и карточки, работу фильтра, корзину, формы оформления, отображение модальных окон. Особое внимание — интерактивным элементам (выпадающие списки, календари, слайдеры), которые чаще всего ведут себя по-разному.

Мобильное и адаптивное

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

Тестируют на реальных устройствах и в инструментах эмуляции. Идеал — набор реальных телефонов популярных моделей, но и режим устройства в браузере плюс пара живых аппаратов уже закрывают большинство проблем. Регрессия мобильной вёрстки — частая и коварная: на десктопе всё хорошо, а половина клиентов не может нажать «Купить», и это не видно, пока кто-то не откроет сайт на телефоне.

Приёмочное тестирование (UAT) и критерии приёмки

Приёмочное тестирование (UAT, User Acceptance Testing) — финальная проверка перед тем, как заказчик примет работу или магазин выйдет в продакшен. Его принципиальное отличие от технического тестирования — точка зрения. Техническое QA спрашивает «работает ли корректно», UAT спрашивает «решает ли это задачи бизнеса и соответствует ли тому, о чём договаривались». UAT обычно проводит заказчик или выделенный представитель на stage-копии.

Чтобы приёмка не превратилась в бесконечный спор «а я думал, будет иначе», её строят на критериях приёмки — заранее согласованном списке того, что должно быть выполнено. Согласовать критерии нужно до начала работ, тогда приёмка становится прохождением чек-листа, а не переговорами. Ниже — пример чек-листа приёмки магазина.

ОбластьКритерий приёмкиСтатус
Критичные сценарииКаталог, фильтр, карточка, корзина, оформление проходят без ошибокПройдено / нет
ОплатаВсе боевые способы оплаты проводят транзакцию и возвращают статусПройдено / нет
ДоставкаРасчёт по всем регионам присутствия корректен, ПВЗ выбираютсяПройдено / нет
Обмен с 1СКаталог, цены, остатки актуальны; заказы уходят в учёт без дублейПройдено / нет
СкоростьКлючевые страницы грузятся в согласованных пределах, метрики в нормеПройдено / нет
АдаптивностьМагазин корректно работает на телефоне и в основных браузерахПройдено / нет
ДефектыНет открытых дефектов уровня «критический» и «высокий»Пройдено / нет
Доступы и документацияПереданы доступы, инструкции, настроены резервные копииПройдено / нет

Важный нюанс критериев приёмки — договорённость об уровне дефектов. Идеального «ноль багов» не бывает: всегда остаются мелкие косметические замечания. Правильная формулировка — «нет открытых дефектов критического и высокого уровня», а мелкие фиксируются в план доработок. Это позволяет запустить магазин вовремя и не держать релиз заложником косметики, при этом не пропустив ничего действительно опасного.

Баг-трекинг и процесс работы с дефектами

Найти баг — половина дела; вторая половина — чтобы он не потерялся и был исправлен. Для этого дефекты ведут в баг-трекере (Jira, YouTrack, встроенные трекеры Git-платформ или любой удобный инструмент). Ключевое — не сам инструмент, а дисциплина: каждый дефект зафиксирован, у него есть статус, приоритет и ответственный.

Хороший баг-репорт содержит минимум, без которого дефект невозможно воспроизвести и починить:

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

Жизненный цикл дефекта обычно такой: открыт → в работе → исправлен → на проверке → закрыт (или переоткрыт, если правка не помогла). Важно, чтобы исправленный баг обязательно перепроверялся тем, кто его завёл, — «исправил» и «действительно работает» это разные состояния. И полезно после исправления добавить проверку в регрессионный набор, чтобы этот дефект не вернулся в будущем.

Цикл релиза: регресс и smoke после деплоя

Всё описанное складывается в единый процесс — цикл релиза. Это повторяемая последовательность шагов от «код готов» до «изменения на проде и работают», в которую встроено тестирование на правильных точках. Именно цикл, а не героические усилия перед выкаткой, обеспечивает стабильность магазина, который меняется постоянно.

  1. Разработка и unit-тесты. Код пишется на dev, покрывается unit-тестами на бизнес-логику, проходит код-ревью. Дефекты ловятся на самой дешёвой стадии.
  2. Выкладка на stage. Изменения разворачиваются на копию продакшена с тестовыми данными и тестовой 1С.
  3. Функциональное тестирование правки. Проверяется то новое, что добавили или изменили, — по тест-кейсам.
  4. Регресс. Прогоняется регрессионный набор критичных сценариев — вручную или автотестами. Убеждаемся, что ничего не сломалось.
  5. Приёмка (при необходимости). Для значимых изменений — UAT заказчиком по критериям приёмки.
  6. Деплой на прод. Проверенные изменения выкатываются на боевой сайт по отлаженной процедуре с возможностью отката.
  7. Smoke-тест на проде. Сразу после деплоя — короткая проверка критичного пути на боевой конфигурации: сайт открывается, товар кладётся в корзину, оформление доходит до оплаты, обмен с 1С проходит.
  8. Мониторинг. После релиза следят за логами, ошибками и метриками — часть проблем всплывает только на реальном трафике.

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

Цикл релиза с регрессом и smoke Разработка код + unit-тесты Выкладка stage копия прода Функц. тест проверка правки Регресс критичные сценарии Деплой прод с откатом Smoke на проде критичный путь Мониторинг логи, метрики Регресс ловит поломку старого · Smoke ловит различия боевой конфигурации цикл замыкается: находки мониторинга возвращаются в разработку
Схема: цикл релиза — разработка с unit-тестами, stage, функциональное тестирование, регресс, деплой и smoke-тест на проде, затем мониторинг. Регресс страхует от поломки старого, smoke — от различий боевой конфигурации.

Частые ошибки

Тестирование магазина порождает свой набор типовых граблей. Зная их заранее, вы избежите большинства болезненных инцидентов на проде.

Чек-лист QA

Короткий список, по которому удобно свериться, выстраивая тестирование магазина на 1С-Битрикс:

Вывод

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

Практический стержень такой. Есть разные виды тестирования под разные риски — функциональное, регресс, интеграционное, нагрузочное, юзабилити, безопасность, кроссбраузерное и мобильное — и их собирают в разумный набор под конкретный магазин. Критичные сценарии (каталог, фильтр, карточка, корзина, оформление, оплата, доставка, регистрация, обмен с 1С) проверяют по чек-листам и тест-кейсам перед каждым релизом. Ручное и автоматизированное дополняют друг друга: руками — новое и юзабилити, автотестами — регресс стабильного. Обмен с 1С и нагрузку тестируют на изолированных копиях, приёмку ведут по согласованным критериям, а после деплоя обязательно прогоняют smoke на бою. Собранные в цикл релиза, эти шаги дают главное — магазин меняется постоянно и при этом не ломается на клиентах. Если нужно выстроить такой процесс под ваш проект — мы делаем это в рамках поддержки и развития магазина и аудита на 1С-Битрикс. Смежные материалы по теме — CI/CD и деплой, Core Web Vitals магазина, интеграция с 1С и вся рубрика «Разработка и архитектура».

Частые вопросы

Зачем тестировать интернет-магазин, если он и так работает?

«Работает» — это утверждение о том, что вы проверили руками несколько сценариев на своём компьютере. Тестирование отвечает на другой вопрос: работает ли магазин во всех критичных сценариях, во всех браузерах и на телефонах, под нагрузкой, после каждого изменения кода и после обмена с 1С. Магазин — это система, где деньги теряются тихо: сломанная кнопка «Оплатить» в одном способе оплаты, слетевший расчёт доставки для одного региона, задвоение товаров после обмена — всё это не выдаёт ошибки на главной, но режет выручку каждый день, пока кто-то случайно не заметит. Цена бага в продакшене всегда выше цены его поиска до релиза: до релиза это правка в задаче, в продакшене — потерянные заказы, откаты, репутация и срочная работа ночью. QA — это не про перфекционизм, а про то, чтобы находить дефекты дёшево, а не дорого.

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

Ручное тестирование — человек проходит сценарии по чек-листу и тест-кейсам, оценивает не только «работает/не работает», но и удобство, вёрстку, тексты, логику. Оно незаменимо для новой функциональности, юзабилити и исследовательского тестирования, где заранее неизвестно, что искать. Автоматизированное тестирование — код, который сам прогоняет сценарии: unit-тесты проверяют отдельные функции и классы, e2e-тесты (Selenium, Playwright) эмулируют пользователя в браузере. Автоматизация окупается на повторяемых проверках — прежде всего на регрессе критичных сценариев, которые нужно гонять перед каждым релизом. Правильный ответ — не «или-или», а сочетание: ручное для нового и для оценки качества, автоматизированное для регресса того, что уже стабильно. Небольшому магазину разумно начать с ручных чек-листов и smoke-набора, а автоматизировать только самые дорогие сценарии — оформление заказа и оплату.

Что такое регресс-тестирование и когда его проводить?

Регресс-тестирование (регресс) — это повторная проверка ранее работавшей функциональности после изменений в коде. Смысл в том, что любая правка может незаметно сломать соседний участок: поправили фильтр — «поехал» расчёт корзины, обновили модуль — отвалилась оплата. Регресс проводят перед каждым релизом: прогоняют набор ключевых сценариев магазина (каталог, фильтр, карточка, корзина, оформление, оплата, доставка, регистрация, обмен с 1С) и убеждаются, что ничего не деградировало. Полный регресс вручную дорог, поэтому именно его в первую очередь автоматизируют. Минимальная дисциплина — вести регрессионный чек-лист и проходить его на stage перед выкладкой на прод, а после деплоя дополнительно прогнать короткий smoke-тест на бою.

Как тестировать обмен с 1С, не сломав боевые данные?

Ключевое правило — обмен с 1С тестируют на копии, а не на боевой базе. Разворачивают stage-окружение с копией сайта и отдельной тестовой базой 1С (или тестовой информационной базой), и прогоняют обмен там. Проверяют: корректность выгрузки каталога (разделы, товары, торговые предложения, свойства, изображения), цены и остатки по складам, статусы и номера заказов в обратном направлении, поведение при частичной выгрузке и при повторном обмене (идемпотентность — не должно быть задвоений). Отдельно тестируют крайние случаи: товар удалён в 1С, изменился артикул, обмен прервался посередине. Никогда не направляйте тестовую 1С на боевой сайт и наоборот — рассинхронизация цен и остатков на проде обходится дороже любого теста. Подробности интеграции мы разбираем в отдельной статье про обмен магазина с 1С.

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

Нагрузочное тестирование — проверка того, как магазин держит одновременных пользователей и всплески трафика (акция, рассылка, сезон). Его проводят инструментами вроде Apache JMeter, k6, Yandex.Tank или Gatling: задают профиль нагрузки (сколько виртуальных пользователей, какие сценарии) и снимают метрики. Ключевые метрики — время отклика (среднее и перцентили p95/p99, а не только среднее), пропускная способность (запросов в секунду), доля ошибок и точка, после которой отклик резко растёт. Смотреть надо не абстрактную «главную», а реальные тяжёлые сценарии: каталог с фильтром, карточку товара, добавление в корзину, оформление. Узкие места на Битриксе чаще всего — медленные выборки без кэша, тяжёлый фильтр по большому каталогу, обмен с 1С, идущий одновременно с пиком трафика. Результаты нагрузочного теста связывайте с работой над скоростью — про метрики загрузки у нас есть отдельный материал про Core Web Vitals.

Что входит в приёмочное тестирование (UAT) и приёмку сайта?

Приёмочное тестирование (UAT, User Acceptance Testing) — финальная проверка перед тем, как заказчик примет работу или магазин выйдет в продакшен. В отличие от технического тестирования, UAT ведётся с точки зрения бизнеса: проверяется, что магазин решает задачи, ради которых делался, и соответствует техзаданию. Приёмка сайта опирается на заранее согласованные критерии приёмки: критичные сценарии проходят без ошибок, оплата и доставка работают в боевых способах, обмен с 1С корректен, скорость и адаптивность в норме, нет критичных и высоких дефектов в баг-трекере, оформлены доступы и документация. Хорошая практика — оформить критерии приёмки таблицей-чек-листом ещё до старта, тогда приёмка превращается из спора в прохождение согласованного списка. UAT обычно проводит заказчик или выделенный представитель на stage-копии, максимально близкой к продакшену.

Что такое smoke-тест и зачем он нужен после деплоя?

Smoke-тест (дымовое тестирование) — короткая проверка самых важных функций сразу после выкладки, чтобы убедиться, что «ничего не задымилось»: сайт открывается, каталог грузится, товар добавляется в корзину, оформление доходит до оплаты, админка доступна, обмен с 1С проходит. Это не полный регресс, а 10–20 минут по критичному пути. Smoke-тест делают после каждого деплоя на прод, потому что даже успешно прошедший на stage релиз может повести себя иначе на боевой конфигурации (другие настройки платёжки, реальные домены, кэш, права). Если smoke-тест падает — откатываются или чинят немедленно, пока проблема не превратилась в потерянные заказы. Smoke-набор удобно автоматизировать в первую очередь: он маленький, стабильный и запускается часто.

Нужна ли автоматизация тестов небольшому магазину?

Небольшому магазину не нужна большая автоматизация — ему нужна дисциплина. Начните с бесплатного и полезного: ведите чек-листы критичных сценариев, тест-кейсы на оформление и оплату, регрессионный список перед релизом и smoke-набор после деплоя. Это ручная работа, но она уже закрывает большинство дорогих дефектов. Автоматизацию вводите точечно и только там, где ручной прогон отнимает много времени и повторяется часто: обычно это оформление заказа, оплата и обмен с 1С. Один-два стабильных e2e-теста на Playwright, покрывающих путь «каталог → корзина → оформление → оплата», окупаются быстрее, чем кажется. Ошибка — пытаться автоматизировать всё сразу: тесты на нестабильной функциональности ломаются чаще, чем ловят баги, и команда перестаёт им доверять. Автоматизируйте стабильное и дорогое, остальное держите на чек-листах.

Поделиться:

Нужно выстроить QA для магазина на 1С-Битрикс?

Настроим тестовый контур с копией и обменом с 1С, соберём регрессионные чек-листы и тест-кейсы, автоматизируем smoke критичного пути и возьмём на себя качество каждого релиза. Магазин меняется без внезапных поломок на проде.

Игорь Воскресенский

Команда студии B2Bsite. С 2014 года разрабатываем, ускоряем и поддерживаем проекты на 1С-Битрикс: тестовые окружения и регресс, обмен с 1С, нагрузочное тестирование и приёмка, качество каждого релиза для среднего и крупного бизнеса.

← Все статьи блога