Привет, Хабр! Меня зовут Анастасия, я QA-специалист SimbirSoft и работаю на проектах с 1С-Битрикс. Не единожды я могла наблюдать, насколько эффективно бывает допустить QA-команду внутрь CMS, чтобы достичь бизнес-целей клиента. И на примере нескольких кейсов из разных проектов расскажу, как мы обеспечиваем качество на платформе 1С-Битрикс. Для тех, кто дочитает до конца, бонусом будет чек-лист для тестирования.
Вдохновил на этот рассказ один из проектов, где клиент доверился нашей команде и предоставил возможность настроить некоторые функции интернет-магазина для удобной работы пользователей с системой. QA-специалисты получили допуск в святая святых, в backend — под этим мы подразумеваем работу в административной части и с базами данных, тестирование API. Такой подход готов поддержать не каждый бизнес, а между тем QA может создать удобные пользовательские сценарии и сделать тестирование более системным. А зачастую и сэкономить ресурсы для устранения критичных багов впоследствии.
Я рассмотрю детали работы QA-специалиста на примере настройки CMS 1С-Битрикс: Управление сайтом, приведу вводные данные, предполагаемый результат, инструменты, методологии и опыт, которые в этом помогут. А еще расскажу, как не упустить важные моменты в работе с коробочным решением от Битрикс.
Статья будет полезна не только для QA-специалистов, но и других участников команды, работающих с CMS, а также руководителей команд и проектов, представителей бизнеса.
Вводные данные и анализ
Один из наших клиентов — крупный интернет-магазин. Его нужно было перевести на новую CMS и разработать сайт с приемом онлайн-заказов. Бизнес-цель — улучшить существующую функциональность и повысить конкурентоспособность интернет-магазина в отрасли.
После анализа возможных вариантов выбрали довольно популярное решение CMS — 1С-Битрикс: Управление сайтом. Оно покрывало бо́льшую часть потребностей и бизнес-целей клиента. Что было необходимо:
1. Иметь встроенную функциональность для эффективного ведения электронной коммерции: управление каталогом, товарами и ценами, поддержка торговых предложений, складской учет, управление акциями/скидками/промокодами.
2. Сохранить текущий уровень управления каталогом с расширением возможностей данной функциональности. В этом помогает интеграция с 1С – контроль и обработка заказов, доставки, а также работа со складским учетом и управление закупками.
3. Безболезненно перенести имеющиеся способы оплаты и доставки с перспективой расширения количества интеграций. Система дает возможность интеграции с распространенными эквайринг- и кредитными системами, а также службами доставки.
4. Сократить потенциальные издержки времени на обучение — это одно из основных желаний клиента. Выбранная система имеет большое количество документации в открытом доступе для обучения работы сотрудников, что решает данный запрос.
Решение подходит для крупных проектов, которым необходима синхронизация с системами 1С и возможность кастомизации под задачи бизнеса. Однако чтобы воспользоваться всеми преимуществами CMS, требуется разобраться в ее интерфейсе, поэтому для настройки требуется привлечь специалистов.
Подготовка к работам
После того как определили и согласовали основные задачи, стек технологий, мы собрали команду, выстроили воркфлоу взаимодействия.
В команду вошли:
project-менеджер — организация, планирование и корректировка работы команды, сроки, скрам-активности
аккаунт-менеджер — коммуникация и организационные вопросы с заказчиком
аналитик — сбор и анализ требований, работа с ТЗ
2 frontend-разработчика — верстка, разработка клиентской части
4 backend-разработчика — логика, интеграции
3 QA-специалиста — процесс тестирования, контроль качества
дизайнер — макеты, консультирование по дизайну
Мы с QA-командой, готовясь к тестированию, традиционно начали с тест-плана. В него, помимо стандартных аспектов, включили проверки технической составляющей (и рекомендуем делать это на других проектах). Мы проверяли:
работу в админке, пользователей, матрицу доступов
версию Битрикс
установленные компоненты
состав агентов
состав миграций
интеграции
e2e-тесты
Нужно было учесть, что пользователи системы — не только покупатели в публичной части, но и операторы, маркетинг- и контент-менеджеры, которые в основном работают с административной частью приложения. Поэтому необходимо заложить время на тест данной области. Что учитывали:
удобство и понятность работы в админке с инфоблоками, highload-блоками и прочими инструментами для каждой из групп пользователей
понятность выставления акций согласно политике бизнеса
разграничение доступов в разделы для отдельных групп
Работы
В CMS Битрикс входит ряд модулей, среди которых торговый каталог, акции, складской учет, конструктор отчетов. Мы рассмотрим, как проходила настройка и проверка тех элементов, с которыми работали на проекте:
Акции
Прототипирование и дизайн
Функциональность, валидация
Локализация проблем
Ядро Битрикса
Импорт, интеграция, каталоги
Акции
Большинство функций, которые используются в интернет-магазине, уже встроены в решение «Управление сайтом» и подходят под стандартные скидки и акции. Готовые решения можно приобрести в маркетплейсе от 1С-Битрикс.
Но бизнес-требования могут меняться, обрастая своими особенностями. Например, условия акции могут выглядеть не только так:
Скидка 15% на все ноутбуки с 01.08 по 01.09
Но и так:
Скидка 15%, но не более 10 000 рублей на ноутбуки бренда Х, не отображать скидку в каталоге неавторизованным; не применять скидку для товаров с признаком 1
Или
Скидка 30% на бренд Y, суммировать 30% с основной скидкой 5% (на всё), только для авторизованных пользователей
При этом мы имеем несколько видов цен, которые приходят из учетной системы.
Это значит, что нужно проверять приоритеты отображения цен и скидок. Для реализации такого рода акций необходимо выставить условия в системе в разделе маркетинга, использовав несколько элементов скидок и правил работы с корзиной. В частных случаях стандартный компонент придется кастомизировать разработчикам.
Кейс №1
Рассмотрим на примере последней скидки, как мы решили кейс, и как выглядело тестирование такой скидки.
Предусловия:
Вводные: скидка 30% на бренд X, НЕ суммировать 30% с основной скидкой 5% (на всё); только для авторизованных пользователей.
Скидка1 — 5% на всё
Скидка2 — 30% на бренд X
Скидка3, Скидка4,...N — другие акции
Скидка1 и Скидка2 не должны пересекаться
3 товара в корзине: 1 из них Товар1 бренда X
На первый взгляд, кейс решается выставлением приоритетов скидок и запретов на дальнейшее применение. Исходя из условия, что на сайте всегда действует скидка 5% на весь ассортимент, нам нужно, чтобы скидка 30% применялась только на товары бренда X без скидки в 5%. Первый вариант условия, согласно приоритетам, будет выглядеть так:
При проверке работы мы видим, что ожидаемый результат не достигнут. Основная скидка и скидка на бренд не должны суммироваться на Товаре1. Стандартная скидка в 5% должна применяться по умолчанию, если не применены другие акции, а значит приоритет у Скидок != Скидке1. Выставляем приоритеты в обратную сторону, чтобы сначала применились дополнительные акции:
Предварительный результат: основная скидка снова применяется и суммируется с дополнительной для Товара1.
Чтобы избежать суммирования, нам нужно исключить применение основной скидки, если на товар уже была применена другая скидка с помощью дополнительных условий:
Фактический результат: на Товар1 применяется только скидка 30%, на Товар2 и Товар3 применяется только основная скидка 5%.
Как выглядели бы проверки этого механизма? Учтем дополнительное условие: оплата только онлайн.
Начнем с публичной части, пройдемся по верхнеуровнему чек-листу:
На цену товара в листингах (основной, акции, распродажа и прочее) не действует скидка 7%
В корзине применяется промокод 7% только на ноутбуки бренда X для авторизованного пользователя
В корзине НЕ применяется промокод 7% на ноутбуки бренда X для НЕавторизованного пользователя
После авторизации у пользователя появляется возможность зайти в корзину и применить промокод
На чекауте (странице оформления заказа) отображаются те же цены, что и в корзине для всех пользователей
При добавлении в корзину нового товара с брендом != N промокод продолжает действовать как раньше
При добавлении в корзину нового товара с брендом = N промокод начинает действовать и на новый товар
При удалении из корзины последнего товара бренда N, промокод перестает действовать
При удалении из корзины товара Бренда != N, промокод остается активным
В оформленном заказе в ЛК (личном кабинете) стоимость совпадает со стоимостью на чекауте и чеке
В админской части в функциональности создания акций проверки будут выглядеть так:
Создание скидки доступно для юзера с правами группы «Маркетинг»
Установленные параметры скидки сохраняются согласно выставленным условиям
При изменении параметров скидки не меняются данные в уже оформленных заказах
При изменении параметров скидки данные меняются в корзине и чекауте при применении промокода
Состав заказа и сумма каждой единицы заказа с чекаута совпадает с данными в админке
Данные ушли в учетную систему и соответствуют данным оформленного заказа
При изменении данных заказа в админке происходит синхронизация данных с ЛК юзера
Получая доступ к работе в админке, QA имеет возможность в процессе тестирования комбинировать условия скидки в стандартных и кастомных механизмах Битрикса. Таким образом, специалист ближе знакомится с механизмами маркетинга системы еще на этапе тестирования и сможет проверить работу списка акций, который заранее зафиксировал отдел маркетинга клиента. Это поможет сэкономить клиенту время и бюджет. Несоответствия могут обнаружиться на ранних этапах, а не после приемки, на этапе подготовки контента перед продом.
Кейс №2
А как протестировать скидку, которую требуется обработать уже после того, как ее время действия истекло?
Например, скидка на определенные разделы каталога действует с 1 по 31 августа. Заказы, совершенные в последние дни августа, операторы будут обрабатывать в начале сентября. Обработка заказов включает в себя звонок клиенту, уточнение данных заказа и возможные корректировки в доставку, состав заказа. После внесения подобных изменений происходит пересчет заказа.
В работе нашей кастомизированной системы была особенность – после пересчета заказа могла слететь скидка, если ее период действия был завершен. И, как следствие – это приводило к рассинхрону данных с учетной системой и данными в ЛК пользователя. Вызвано это особенностями работы Битрикса из-за кастомизации стандартного компонента. В ходе работы QA-специалиста с настройками акций мы нашли решение. В момент завершения скидки, за несколько часов, нужно было совершить два шага:
Шаг 1: продлить дату окончания работы скидки на месяц – этого периода хватало для завершения работы со всеми заказами из периода акции.
Шаг 2: переключить группу пользователей с Зарегистрированных пользователей на группу Администраторов и Операторов.
Таким образом, скидка больше не отображалась в публичной части для пользователей интернет-магазина, но ее видели Администраторы и Операторы, которые работали с заказом. Формально акция продолжала действовать, и при пересчете заказа данные оставались актуальными. Но обычные пользователи, без роли Администратора или Оператора, не могли воспользоваться акционными условиями.
Важно и то, что мы помогли клиенту избежать больших затрат бюджета. Дело в том, что изменение работы стандартного компонента Битрикса требует много времени на разработку, тестирование и почти всегда — на исправление багов. В случае с акциями требуется проверка в каталоге, в карточке товара, в корзине, на чекауте, в заказе, а также при различных условиях. Эти проверки занимают много времени, и чем сложнее акция, тем больше времени на ее проверку требуется. Поэтому было важно, что наша команда избежала доработки и тестирования исправления данной особенности. Эти задачи заняли бы около трех недель.
Для тестирования нашего решения нам пригодится методика из техник тест-дизайна — таблица принятия решений:
Прототипирование и дизайн
Практически в каждом процессе разработки MVP присутствует этап прототипирования/дизайна. Битрикс является коробочным решением, в котором уже реализованы технические страницы в административной части. С большой вероятностью интерфейс этих страниц не будет меняться. Исходя из этого, отрисовывать эту часть админки не нужно: например, вывод логов в HL-блоке или работу с заказами в нестандартном решении. К тому же, при первом же обновлении системы вся красота может с легкостью слететь. Можно сохранить первоначальный вид данных страниц, и это будет удобно для работы. К тому же, это сократит время и бюджет на работу дизайнера, разработчика и QA.
Функциональность, валидация
Продолжая разговор о тестировании админской (backend) части — не рекомендуем пренебрегать валидацией. Ошибкой будет считать, что раз здесь все стандартно, из коробки, то проводить валидацию не нужно. Впоследствии это может привести к расхождению ожиданий клиента и реализации, или к затянутому онбордингу пользователей админки. В данном случае можно и нужно привлекать QA к работе в бэковой части. Важны следующие пункты:
Инфоблоки / Справочники
Отчеты
Каталог (структура, товары и прочее)
Интеграции с учетной системой
Например, без достаточно детальной и работающей в соответствии с запросом клиента системы отчетности время на получение, консолидацию и обработку информации будет уходить в разы больше. А инфоблоки не должны дублировать информацию и должны располагаться в соответствии с логической последовательностью использования. QA-специалисты проверят эти части с точки зрения удобства работы в админке, а также на соответствие ожиданий бизнеса и правильной технической составляющей.
Локализация проблем
Обозначу еще один плюс работы QA в админке — локализация проблем. Если в публичной части будет обнаружен баг, то это может быть проблема в настройках внутри компонентов админки. Понимание того, как эта «машина» работает изнутри, даст возможность локализовать и устранить проблему, не привлекая разработчиков к решению.
Пример: разработчик передал на тестирование задачу с отображением новых элементов на странице. Залив изменения на стенд и перейдя к веб-интерфейсу, мы видим частичное отображение новых элементов. Мы очистили кеш на браузере, но обещанных элементов так и не обнаружили на странице. Первым шагом в подобной ситуации стоит очистить битриксовый кеш. Это проводится в админке на вкладке Автокеширования. После этого шага, если дело не в коде, заявленные элементы отобразятся на странице.
Ядро Битрикса
Особенностью коробочного решения Битрикс является ядро – это основа программного продукта. Набор определенных правил и инструментов, которые, в свою очередь, может использовать команда разработки. При необходимости, его можно доработать, но важно реализовать это правильно, так как каждое обновление ядра – это риск потери реализованной функциональности.
В данной ситуации нужно понять, какая функциональность или около функциональность будет изменена, выстроить регрессионное тестирование на этой основе, и обязательно проверить основной бизнес-процесс.
Импорт, интеграция, каталоги
Работа CMS Битрикс — это, как правило, и работа с учетными системами, наш кейс с переездом не исключение. В таком случае мы должны понимать, что для корректной работы с каталогами необходим непрерывный импорт данных по разделам, товарам и складам из учетной системы. Это реализовывается посредством API или брокеров, например, Kafka.
Одним из основных аспектов работы в CMS Битрикс является заказ. Это тот раздел, где особенно важны правильность обработки и передачи информации между сайтом и интеграциями: информацию и покупателе, статус и состав заказа, примененные акции, остатки, данные по доставке и оплате, комментарии и другая дополнительная информация.
Для того чтобы подружить кастомизированную 1С-конфигурацию и новый сайт, нужно обозначить все необходимые сущности, свойства и особенности на этапе планирования. Также важно понимать не только то, что сайт отдает, и какие триггеры будут на это работать, но и то, что сайт принимает от учетной системы. Стоит закладывать тестирование с учетом рисков и коммуникаций со смежными командами интеграций.
Вывод
Мы рассмотрели элементы CMS Битрикс, с большинством из которых плотно работали, проверяя качество и надежность реализации. Это стало возможным не только благодаря опыту и экспертизе, но и решению клиента. Оптимальный объем времени и трудозатрат мы использовали максимально эффективно как для бизнеса, так и для команды.
На примере процесса тестирования становится понятно, что не стоит опускать этап погружения QA в особенности 1С-Битрикс, ведь это бесценная инвестиция в качество и сокращение времени.
Несмотря на то, что используется коробочное решение, в котором функциональность в основном ведет себя предсказуемо, изучение решения и валидация его под клиента поможет попасть в ожидания бизнеса и помочь ему реализовать продукт под его требования и цели.
Чтобы этот материал был для вас еще полезнее, мы подготовили чек-лист тестирования Битрикс, который вы можете использовать в своей работе.
Спасибо за внимание!
Больше авторских материалов для QA-специалистов от моих коллег читайте в соцсетях SimbirSoft – ВКонтакте и Telegram.
Satorlous
Если я вас правильно понял, вы тестируете, не наделал ли разраб чего нелогичного и несуразного в админке? Битрикс, видите ли, крайне упертая штука, когда дело доходит до кастомизации админки, особенно валидации данных из элементов инфоблоков.
Про логическую последовательность вообще не понял, это что за требование такое?)
Править ядро битрикса = поставить крест на дальнейших обновлениях. Никто никогда не будет переносить правки между версиями этого самого ядра.
Да и вообще, если зашла речь о правках ядра - вы уверены, что используете подходящие технологии? А не проще тода было писать собственную бизнес логику на чем то более современном и прозрачном типа симфы, чем в очередной раз лепить франкенштейна из битрикса?
IMO, битрикс подходит сугубо для малого бизнеса, и ни для чего более.
SimbirSoftQA Автор
В статье мы даём рекомендации о том, на какие моменты стоит обращать внимание, работая даже с коробочным решением. В админке работают пользователи различных уровней, и мы смотрим на разработанный там функционал с точки зрения удобства их работы — например, с инфоблоками.
В статье мы не рекомендуем править ядро без крайней необходимости. Но если она есть, то нужно будет переносить изменения руками. Если все-таки случился кастом, и если это сделано, например, через события, то риск поломки функционала после обновления ядра меньше. Также мы рекомендуем сделать проверки высокорприоритетного измененного функционала и около него.
Наш опыт работы с проектами различных масштабов, разной направленности и интеграциями показывает, что с Битриксом комфортно работать не только в малом бизнесе. Вопрос стоит в построении архитектуры системы и грамотном развитии проекта.