September 24, 2021

Масштабирование автотестов

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

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

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

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

Для тестирования базовых функций мы должны полностью синхронизировать настройки клиентской базы с тестовой базой базовой конфигурации. Как правило настройки разделяются ключевыми аналитиками например организация, подразделение, ЦФО и т.п. Если мы возьмем конфигурацию 1С:Бухгалтерия предприятия, то нужно создать новую организацию и настроить ее нужным образом.

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

Получаем следующую последовательность действий для обновленной базы:

  1. создаем элементы ключевой аналитики - организацию, подразделение, ЦФО
  2. загружаем настройки и глобальное окружение
  3. прогоняем тесты базовой функциональности

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

Без рассмотрения остался вопрос тестирования функций базовой конфигурации с настройками клиента.