mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-01-08 13:06:32 +02:00
93 lines
8.9 KiB
Markdown
93 lines
8.9 KiB
Markdown
|
# Тестовые данные
|
||
|
|
||
|
Почти в каждом тесте разработчику необходимы данные, которые он будет использовать при тестировании: элементы справочников, документы, остатки и тд.
|
||
|
|
||
|
Есть разные подходы к работе с тестовыми данными:
|
||
|
|
||
|
1. Ручное наполнение тестовой базы (мы предварительно создаем все что необходимо для тестов в базе, а потом используем её для прогона тестов)
|
||
|
2. Использование файлов с данными (макеты - сгенерированные в нужном формате файлы с описанием тестовых данных, загружаемые при выполнении тестов)
|
||
|
3. Программное создание нужных данных внутри теста
|
||
|
|
||
|
У каждого из вариантов есть свои плюсы и минусы, и при грамотной компоновке можно достичь наилучшего результата.
|
||
|
|
||
|
Например:
|
||
|
|
||
|
* Ручное наполнение базы не учитывает последующие доработки системы, нужна миграция на новые алгоритмы и структуру, и, если таких данных будет много, то миграция будет занимать большое время. А также в этом случае нам необходимо завязываться на конкретные записи в системе, и при их изменении тестом мы можем сломать другие тесты. Поэтому, предварительное наполнение базы должно быть минимальным.
|
||
|
* В случае использования макетов данных возникают некоторые трудности с их доработкой и вариативностью, например, в новом тесте нужны данные из макета, но с некоторыми изменениями. В этом случае нам потребуется создавать новый макет или проверять, не сломают ли наши изменения другие тесты. Также при таком подходе сложно контролировать и искать какие макеты используются и кем.
|
||
|
* Программное создание тестовых данных увеличивает время и сложность теста.
|
||
|
|
||
|
Если грамотно распределить тестовые данные на способы создания, мы можем добиться оптимального результата.
|
||
|
Например, можно статичные данные создать вручную, сложные кейсы данных засунуть в макеты, а для программного создания реализовать методы-конструкторы, которые будем переиспользовать. Таким образом, сможем уйти от минусов данного подхода или минимизировать их вред.
|
||
|
|
||
|
В текущей версии тестовый движок предоставляет api для программного создания тестовых данных. За это отвечает общий модуль `ЮТТестовыеДанные`, к которому можно обратиться через метод `ЮТест.Данные`.
|
||
|
|
||
|
Сейчас это минимальный набор методов, который в дальнейшем будет развиваться. Он позволяет:
|
||
|
|
||
|
* Создавать данные информационной базы
|
||
|
* Генерировать случайные значения
|
||
|
* Работать с файлами
|
||
|
* Использовать таблицы markdown в качестве макетов данных
|
||
|
|
||
|
Примеры
|
||
|
|
||
|
```bsl
|
||
|
Функция ОписаниеСервера(Знач Идентификатор = Неопределено) Экспорт
|
||
|
|
||
|
Описание = БазовоеОписаниеОбъекта(Идентификатор, "СРВ");
|
||
|
|
||
|
Описание.Вставить("Адрес", ЮТТестовыеДанные.СлучайныйIPАдрес());
|
||
|
Описание.Вставить("ЧастотаЯдра", ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(4, 3));
|
||
|
Описание.Вставить("КоличествоЯдер", ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(10));
|
||
|
Описание.Вставить("КоличествоПотоков", Описание.КоличествоЯдер * 2);
|
||
|
Описание.Вставить("ПроизводительностьПроцессора", Описание.ЧастотаЯдра * Описание.КоличествоЯдер);
|
||
|
Описание.Вставить("ОбъемПамяти", ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(1024, 3));
|
||
|
Описание.Вставить("Диски", Новый Массив());
|
||
|
Описание.Вставить("Кластер");
|
||
|
|
||
|
Для Инд = 1 По ЮТТестовыеДанные.СлучайноеЧисло(1, 3) Цикл
|
||
|
Описание.Диски.Добавить(ОписаниеДиска());
|
||
|
КонецЦикла;
|
||
|
|
||
|
Возврат Описание;
|
||
|
|
||
|
КонецФункции
|
||
|
|
||
|
Функция ОписаниеЗаявкиНаСозданиеВМ() Экспорт
|
||
|
|
||
|
Описание = Новый Структура();
|
||
|
|
||
|
Описание.Вставить("Наименование", "req-" + ЮТТестовыеДанные.СлучайнаяСтрока());
|
||
|
Описание.Вставить("ДатаДобавления", глПолучитьМосковскоеВремя());
|
||
|
Описание.Вставить("ДатаОкончанияАренды", глДобавитьКДате(глПолучитьМосковскоеВремя(), "ДЕНЬ", 2));
|
||
|
Описание.Вставить("Адрес", ЮТТестовыеДанные.СлучайныйIPАдрес());
|
||
|
|
||
|
Описание.Вставить("Проект", Проект());
|
||
|
Описание.Вставить("Мейнтейнер", ПараметрыСеанса.Сотрудник);
|
||
|
|
||
|
Описание.Вставить("КоличествоCPU", ЮТТестовыеДанные.СлучайноеЧисло(1, 4));
|
||
|
Описание.Вставить("КоличествоПамяти", ЮТТестовыеДанные.СлучайноеЧисло(1, 16));
|
||
|
Описание.Вставить("КоличествоДисков", ЮТТестовыеДанные.СлучайноеЧисло(1, 16));
|
||
|
Описание.Вставить("ОперационнаяСистема", ЮТТестовыеДанные.СоздатьЭлемент(Справочники.ОперационныеСистемы));
|
||
|
|
||
|
Описание.Вставить("СредаЭксплуатации", "");
|
||
|
Описание.Вставить("Назначение", ЮТТестовыеДанные.СоздатьЭлемент(Справочники.НазначенияВиртуальныхМашин));
|
||
|
Описание.Вставить("ТипСреды", Справочники.ТипыИнформационныхСред.BETA);
|
||
|
Описание.Вставить("КодСервиса", ЮТТестовыеДанные.СлучайнаяСтрока(, 1));
|
||
|
|
||
|
Возврат Описание;
|
||
|
|
||
|
КонецФункции
|
||
|
|
||
|
Функция НовыйОбразDocker(Версия, ПоУмолчанию = Истина) Экспорт
|
||
|
|
||
|
Данные = Новый Структура("Адрес, ВерсияПлатформы, ТипПлатформы, ИспользоватьПоУмолчанию");
|
||
|
Данные.Адрес = "gitlab.ru/orais/ci_cd/1cws-apache24:" + Версия;
|
||
|
Данные.ВерсияПлатформы = Версия;
|
||
|
Данные.ТипПлатформы = Перечисления.ТипыСоединенияИсточникаДанных.Соединение1СПредприятие83Сервер;
|
||
|
Данные.ИспользоватьПоУмолчанию = ПоУмолчанию;
|
||
|
|
||
|
Возврат ЮТТестовыеДанные.СоздатьЭлемент(Справочники.ОбразыDocker, Версия, Данные);
|
||
|
|
||
|
КонецФункции
|
||
|
```
|