Российские ритейлеры уже не первый год трансформируются в ответ на внешние обстоятельства и внутренние потребности рынка. Своевременная и адекватная реакция на быстро меняющуюся ситуацию на рынке розничной торговли позволяет ритейлеру отстроиться и опередить конкурентов. Часть компаний активно разрабатывает собственные ИТ-решения для оптимизации производственных процессов и выстраивания крепких и доверительных отношений с клиентами. В то же время возрастают и критерии, предъявляемые к качеству программного обеспечения.

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

В этой статье рассказываем, как мы в команде «Автомакон» проводим тестирование 1С-продуктов и сервисов для одного из ведущих ритейлеров страны — ВкусВилл. Наши специалисты отвечают за автоматизацию более 1300 магазинов, складов сети и 120 дарксторов, а также оказывают поддержку и консалтинговые услуги. 

Почему для ВкусВилл важно тестирование?

ВкусВилл — российская розничная сеть супермаркетов и бренд продуктов для здорового питания. «ВкусВилл» занимает лидирующие позиции в России по темпам роста доставки продуктов и по объему онлайн-продаж. По данным Data Insight, ВкусВилл разделил первое место со СберМаркетом в рейтинге крупнейших онлайн-продавцов и возглавил рейтинг экспресс-доставки, опередив Delivery Club и Яндекс.Лавку. Компания в первую очередь ориентируется на потребности клиентов и регулярно запускает новые сервисы и проекты, поэтому достигает такие результаты. 

В связи с масштабированием сети и появлением новых магазинов, дарксторов, а также развитием e-commerce-направления, большое внимание уделяется автоматизации процессов всех подразделений сети. Над релизом решений работает больше сотни  разных ИТ-специалистов: разработчики, дизайнеры, тестировщики, аналитики, DevOps-инженеры.

Грамотная организация тестирования способствует ускорению «time-to-market» и выводу на рынок востребованных решений. Помимо тестирования внешних приложений для покупателей, особое внимание уделяется работе внутренних сервисов компании. Во ВкусВилле для управления процессами производства и продаж используется CRM-система и WMS-система управления складом. Эти решения отвечают за учет товаров на складе и управление заказами пользователей. Регулярно проводятся тестирования и других систем на базе 1С, а именно: Финансы (самописная система для ведения управленческого учета), ЗУП и Бухгалтерия.

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

Как происходит тестирование систем. Основные стратегии тестирования проектов ВкусВилла

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

QA-специалисты сочетают автоматизированное и ручное тестирование. С помощью ручного тестирования проверяют качество и полноту реализации процессов. Автоматическое тестирование используется в более масштабных и критичных для бизнеса процессах. Разработчики выполняют задания и создают заявку о помещении разработки в прод. Аналитик дополняет ее сценарием тестирования. Тестировщик проводит тестирование по этому сценарию. Эти тесты запускаются ежедневно или автоматически в определенное время, обычно ночью. Затем специалист получает отчет, на основе которого может сделать определенные выводы о работе системы. Такое тестирование помогает обнаружить ошибки, которые было бы сложно выявить вручную, и тем самым сократить время работы над проектом. 

Первый этап. Ручное приемочное тестирование

После тестирования в специальной системе собирается пул доработок, которые формируются в отдельную задачу. Из хранилища выгружается файл обновлений и накатывается на специальную базу, которая представляет собой копию рабочей базы Заказчика. После раскатки обновления на этой базе стартует автоматическое тестирование. Запускаются специальные автотесты. Чаще всего это Smoke testing («дымовые тесты»), которые проверяют корректность работы типового функционала, например, открытие форм, списков и документов, а  также их перепроведение — все, без чего стандартная работа пользователя невозможна. В свою очередь модульные тесты позволяют узнать, правильно ли работает каждый блок кода в изоляции от остальных. Сценарные тесты запускаются для проверки пользовательского пути по какому-либо процессу. На этом этапе тестировщики используют как собственные разработки для проверки целостности баз перед запуском тестов, так и дополнительные инструменты, например, «Vanessa-Automation». 

Внедрение подсистемы автоматизированного тестирования мобильного приложения

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

Второй этап. Ручное тестирование на копии базы заказчика. Результаты работы автотестов

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

Автотесты регулярно дорабатываются. При падении на участке тестировщики получают отчет о падениях автотестов в специальный чат. После этого запускается ручное тестирование для проверки мест, в которых возникли ошибки. В среднем в день поступает 10-20 задач на ручное тестирование по первому этапу разработки, и 5-7 при тестировании доработок до их момента попадания в базу клиента. 

Система метрик для анализа работы автотестов

Сложности тестирования и их решение

Есть проекты, состоящие из нескольких баз, например, в Финансах (1С) ВкусВилл 5 баз, которые в сумме весят несколько Тб. Возникают проблемы с нехваткой места из-за того, что каждой команде нужна своя база под каждый процесс. При этом база под тест должна быть копией базы клиента, но весить меньше, поэтому применяются особые алгоритмы работы, а именно: подмена «на лету» физических таблиц их виртуальными представлениями по неизменившимся в ходе разработке объектам метаданных.

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

  • параллельный запуск различных типов автотестов

  • параллельный запуск автотестов одного типа

  • запуск автотестов только по новым и измененным объектам 

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

Краткие итоги

  1. Тестирование — важнейший этап в процессе разработки ИТ-решений.

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

  3. Правильно настроенный процесс позволяет сократить время, необходимое для разработки, и уменьшить затраты. В результате Заказчик получает стабильный и качественный продукт здесь и сейчас.

  4. Примерно 30% времени, отведенного на проект, необходимо уделять тестированию разрабатываемого IT-продукта. Именно это позволяет вам гарантировать высокое качество производимого ПО.