# Sonar

|**Вопрос**|**Ответ**|
|-------------| -------------|
|Не находить команду runner|Нужно запустить командную строку под администратором и выполнить opm install vanessa-runner (чтобы установить vanessa-runner) либо сразу opm install all (поставит все библиотеки для oscript|
|Не открывает веб-интерфейс Сонара|Если вы используете рабочую машину, то высока вероятность что порт 9000 у вас закрыт. Для того, чтобы его открыть нужно добавить этот порт в исключения в брандмауэре (https://docs.microsoft.com/ru-ru/sql/reporting-services/report-server/configure-a-firewall-for-report-server-access?view=sql-server-ver15)|
|Батник выгрузки проверки АПК стартует, но выгрузка не появляется|Текущая версия обработки acc-export.epf к сожалению не логирует свои действия в журнале регистрации. Рекомендую дописать записи журнала в обработку. В указанном вопросе причина была в том, что acc-export.epf не находил файл с настройками, т.к. в параметре батника использовали относительный путь. Помогла замена пути на абсолютный.|
|Не стартует сервер СонарКуб|Проверьте, что в файле wrapper.conf вы добавили прямые слеши /<br/>а не обратные слеши \ (как в Windows)<br/>Например, при вставке путей к jdk\java и т.п.|
|Подскажите как отключить/изменить некоторые проверки bsl при проверке в сонаре? Например, проверку совместимости с unix ? Вижу что есть "параметр конфигурационнного файла" - но где взять образец этого файла и када его подпихнуть?|https://1c-syntax.github.io/bsl-language-server/features/ConfigurationFile/|

# Тестирование

|**Вопрос**|**Ответ**|
|-------------| -------------|
|Как сделать, чтобы фичи сразу загружались при запуске VA?|	Сервис - Загрузка фич при открытии VA. После изменения настроек их необходимо сохранить, чтобы они не сбрасывались при открытии VA или Vanessa-ADD|
|Относительные пути к файлам логов при сохранении настроек из VA|Необходимо добавлять $workspaceRoot/ в начале относитльно пути, это глобальная переменная, в которой хранится путь к каталогу проекта, также есть глобальная переменная $instrumentsRoot, в ней хранится путь к каталогу инструментов VA или Vanessa-ADD|
|Тестирование обменов|Пишем сценарий, в котором есть шаги по: <br/>1. запуску первой базы в режиме клиента тестирования, <br/>2. созданию/регистрации нужных элементов, <br/>3. открытию обработки обмена, <br/>4. выгрузки данных, <br/>5. запуску второй базы в режиме клиента тестирования, <br/>6. открытию обработки обмена, <br/>7. загрузки данных, <br/>8. проверка наличия созданных элементов во второй базе.<br/>Выгрузка и загрузка выполняются через нажатия кнопок в формах обмена. <br/>Для исключения возможных проблем запускаем сценарии в первой базе, т.е. запускаем тест-менеджер и VA (или Vanessa-ADD) в первой ИБ|
|Можно ли не искать по наименованию, а написать определенный запрос и ссылку сохранить в контексте?|"Вы можете сделать собственный шаг, в котором сохранять ссылку в Контекст:<br/>Контекст.Вставить(""ИмяПеременной"", НужнаяСсылка);<br/>Ссылку получить запросом внутри шага вызовом серверной функции.<br/>Важно понимать, что такая ссылка не подойдет для открытия через навигационную ссылку. <br/>И нужно дополнительно преобразовывать эту ссылку для использования навигационной ссылки"|
|Как получить навигационную ссылку на элемент?|Нужно понять контекст вопроса.<br/>- если нужно открыть форму списка метаданного, то просто в 1С открываем нужную форму, нажимаем кнопку ""Получить ссылку"", и копируем эту ссылку в текст сценария как параметр спец.шага открытия нави-ссылки<br/>  - или можно использовать спец.шаги для открытия форм списков (в Ванесса-АДД)<br/>   - Дано Я открываю основную форму отчета ""Отчет1""<br/>   - Дано Я открываю основную форму списка справочника ""Справочник1""<br/>- а если нужно открыть форму списка элемента\документа, нужно понимать, что есть в наличии - Гуид-ссылка, или наименование или другие необходимые реквизиты<br/>  - если есть Гуид-ссылка, то ее можно преобразовать в нави-ссылку и использовать в шаге<br/>  - или можно использовать спец.шаги открытия элементов (в Ванесса-АДД)<br/>   - И Я открываю основную форму объекта из переменной ""ИмяПеременнойИзМакета""<br/>  - И Я открываю основную форму документа из переменной ""ИмяПеременнойИзМакета""<br/>  - И Я открываю основную форму справочника из переменной ""ИмяПеременнойИзМакета""|
|Можно еще раз про проверку корректности отчета: что именно проверяется на том шаге?|Проверяется, что сформированный в ходе выполнения сценария отчет соответствует эталонному макету, т.е. работа системы отвечает требованиям работы с отчетом|
|Как получить навигационную ссылку на элемент, чья форма открыта в тест-клиенте ?|Шаг получения навигационной ссылки есть в тестах автоматизированного тестирования 1С:ERP.|
|Для менеджера тестирования можно использовать пустую базу?|Можно, но тогда нужно использовать спец.шаги по запуску тест-клиентов либо подготовленную таблицу тест-клиентов|
|Экспортные сценарии хранить можно хранить в других папках ?|Да|
|В проверяемом отчете есть дата, который выводится в виде параметра, как в эталоне это указать, т.е. чтобы он проверял с текущим днём?|Можно использовать переменные контекста или исключить данные из сравнения, заменив их на *|
|Возможен ли запуск на обычных формах?|Да, можно. Для обычных форм нет накликивания шагов. И список известных шагов меньше.|
|В таблице там строку не нужно в кавычки взять?|В таблице строки можно не  выделять кавычками.|
|Как раннер понял, что настройки надо грузить из env.json?|"Раннер подгружает настройки по слудеющему приоритету (от максимального к минимальному):<br/>1. --* (ключи командной строки)<br/>2. RUNNER_* (из переменных окружения)<br/>3. --settings ../env.json (указание файла настроек вручную)<br/>4.env.json (в корне проекта)<br/>Так как у нас не указаны параметры строки и переменные окружения, то настройки подтянулись из env.json в корне проекта.<br/>Пример запуска через --settings можно посмотреть в коне проекта в файле AddRunner.cmd"|
|Например часто в тесте используется Наименование контрагента, я вынес его в Контекст, но по рассказу было сказано, что в Сценарии - Дано|"Контекст - это специальный блок для шагов Дано. <br/>Это набор шагов, которые выполняются ПЕРЕД началом КАЖДОГО сценария из фичи"|
|Где можно посмотреть список всех тегов ?|"Списка всех тегов нет. Основные служебные теги:<br/>@tree - означает, что в фича файле используется иерархия шагов.<br/>@ExportScenarios - это файл экспортных сценариев.<br/>Есть еще теги для записи видеоинструкций.<br/>Также можно задавать свои теги."|
|Как настроить xunit? что бы результат складывался, например в ./out/smoke, а лог файл в ./out.|Путь к каталогу allure env.json в разделе xunit параметр --reportsxunit. Например: <br/>ГенераторОтчетаAllureXMLВерсия2{out/smoke/allure.xml}<br/>Путь к лог файлу настраивается в smoke.json параметр ИмяФайлаЛогВыполненияСценариев|
|Получен неожиданный/неверный результат работы - Не найден файл статуса|Ошибка возникает, если в настройках неправильно указаны параметры подключения к базе (платформа, пользователь, пароль), т.е. режим 1С: Предприятие запустить не удалось.|
|Хотелось бы понять когда рекомендовано применять vanessa add со сценарным тестированием а когда иные средства. Сценарное тестирование через менеджер тестирования выполняется не быстро насколько я понимаю. Еще минус - привязка к названиям форм, табличных частей. Изменились названия метаданных - сценарий упал. Но это понятно. Итого чем руководствоваться при выборе инструмента для 1. Тестирования алгоритмов. 2. Тестирования обменов. 3. Тестирования отчетов и т.д.|1. Сценарное тестирование - это общий вид тестирования.<br/>Использование тест-клиента удообно, но совсем необязательно, Можно писать свои сценарии\тесты и без использования тест-клиентов.<br/>Без тест-клиента удобно писать тесты серверного АПИ, алгоритмов, веб-сервисов, http-сервисов, частично других интеграций\обменов.<br/>Основной посыл для тестов остального функционала - ответить на вопрос ""Как пользователь в режиме Предприятия может проверить правильность выполнения действий"".<br/>Часто ответ простой - пользователь должен открыть некую форму или формы, и увидеть в них некие ожидаемые результаты.<br/>С помощью тест-клиента удобно выполнять действия, как будто их выполняет пользователь.<br/>И все задачи, где проверяет пользователь, можно выполнить с помощью тест-клиентов.|
|Можно ли проверить зависимые формы через дымовые тесты?|Нет, дымовые тесты форм и командного интерфейса проверяют только основные формы метаданные. Дело в том, что неосновные формы, как правило, открываются с передачей доп.параметров. А универсальному дымовому тесту неоткуда взять набор правильных параметров|

# СППР

|**Вопрос**|**Ответ**|
|-------------| -------------|
|Как работают параметры сценариев, которые возвращают значение?|1. В сценарии, который возвращает значение должен быть шаг<br/>И я запоминаю значение поля ""ИмяПоля"" как [ПараметрВозврат]<br/>И на закладке Параметры должен быть установлен флаг ""возвращает значение"". <br/>2. В шаге процессе, который использует параметр для нужного параметра в колонке Значение по ссылки нужно выбрать параметр из первого сценарий (аналогично, как выбирали общий параметр)|
|Расскажите пожалуйста подробней о роли СППР при организации процесса тестирования. Если в процессе разработки СППР не используется - в чем основные фишки, плюсы, когда ее нужно использовать. Автоматизацию запуска тестирования, получение отчетов - все можно и без нее настроить. Организовать сценарное тестирование через vanessa add - тоже можно без сппр. Итого непонятна принципиальная роль СППР  в организации процесса тестирования (не проектирования).|СППР - это один из инструментов. Можно использовать хранение сценариев в каталоге проектов, можно в СППР. <br/>Плюсы:<br/>1. Связь с метаданными и логической моделью.<br/>2. Связь сценариев между собой и процессами. Легко получить информацию о том, в каких сценариях/процессах используется данный сценарий<br/>Минусы:<br/>1. Нет версионирования фич, как в git<br/>2. фичи для тестирования отличаются от исходных фич, может быть путаница при анализе результатов<br/>3. редактирование фич не такое удобное, как в других продвинутых редакторах."|

# Jenkins

|**Вопрос**|**Ответ**|
|-------------| -------------|
|"Насколько требователен Jenkins к железу? как мастери, так и агенты?<br/>И как их лучше разносить - чем больше машин тем лучше или можно мастер и slave на одной держать?"|1. Рекомендованные требования к Jenkins(master): от 1GB RAM и от 50GB HDD.<br/>2. Требования к агенту зависят от задач, которые он будет выполнять. Если у вас тестирование 10 проектов ERP, то нужно мощьное железо. <br/>А так можно исходить из минимальных требований компании 1С:
Процессор Intel Pentium IV/Xeon 2,4 ГГц и выше<br/>Оперативная память 1024 Мб и выше<br/>Жесткий диск 40Гб и выше<br/>3. Мастер и slave лучше разделять. Т.к. если slave упадет, то это можно будет увидеть в jenkins.|
|Если slave сервер один - сколько будет возможно сборок параллельно делать ?|Укажите в параметре "Количество процессов-исполнителей"|
|Как вынести параметры вроде каталога конфигурации, пользователя храниилища, пароль ,путь к хранилищу в какой либо настроечный файл чтобы не инжектить переменные в скрипте jenkins?|Можно установить переменные окружения перед запуском команды. Более подробно можно почитать тут: https://github.com/oscript-library/gitsync#%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5-%D0%BE%D0%BA%D1%80%D1%83%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B|
|gitsync может в формете  EDT делать коммиты?<br/>Можно ли gitsync'ом из хранилища выгружать в формате EDT (как Git Converter)?|Да. Есть спец.плагин для гитсинк - edtExport |
|В gitsync'е сейчас есть какие-то ускорялки? Параллельная выгрузка нескольких версий в исходники (как в Git Converter) или дифференциальная выгрузка?|встроенной поддержки ускорялок нет. Есть возможность организации выгрузки в несколько потоков в разные гит-репозитории и потом слияния этих гит-репозиториев.<br/>На ютубе есть примеры такого решения от Евгении Мартыненкова. Или можно запросить на канале OneScript в телеграме|
|Мы работаем с хранилищем, конвертим файлы конфигурации в xml и с помощью gitsync выгружаем в гит. Зачем мы в таком случае будем скачивать репозиторий ?|Гит работает - перед пушем\отправкой в Гит нужно выполнять пулл (получение) из удаленного репозитория.|
|Как связаны пользователи хранилища и гита?|Пользователи связаны с помощью файла AUTHORS. В нем указываются пользователи хранилища и пользователи гитлаб.|
|Вопрос может быть не совсем по теме: где лучше\удобнее проводить код-ревью (ручное, не сонаровское\АПКшное) разработчиков перед сборкой или перед выпуском релиза в продуктив?|Базовое код-ревью удобно делать через мерж-реквесты Гитлаба, если есть прямая разработка в Гит. Если основная разработка в хранилище и сделана синхронизация с гит, тогда можно использовать спец.инструменты код-ревью - FishEye, Crucible, Upsource и т.п. Они позволяют соединять (разными способами) несколько разных коммитов в единый блок для код-ревью, комментировать, дорабатывать и т.п.|
|Какие способы автоматизации есть если работаем через Конфигуратор?Все инструменты, которые мы показываем, прекрасно работают в параллели с Конфигуратором.|
|Инициатором переноса изменений из хрона в гит получается будет всегда Jenkins, а не сам хрон?|Да. Хранилище 1С не выдает никаких событий изменений, поэтому только периодический опрос. |
|Если работаем без хранилища, то автоматизировать синхронизацию изменений в конфигураторе и gitе - через onescript?|Да, можно и нужно. Используйте инструмент ванесса-раннер.|
|Артур - в общем чате про подготовку эталонной базы ты отвечал? интересен этот вопрос - как их готовить ... базу для смоук тестов и базу для полного тестирования?|Сложная тема. кратко очень сложно ответить. Есть интересная статья-теория на Инфостарте об подготовке тестовых данных от Дмитрия Решитко.
Там многие вопросы освещены.<br/>У Артура есть желание  - сделать отдельный вебинар или статью или практикум на эту тему на Инфостарте |
|Сейчас ошибки можно посмотреть через алюр, в сонаркубе в гитлабе,  СППР. Так где же все ошибки собрать чтобы смотреть в одном месте? Что рекомендуете?|Нет смысла смотреть ошибки в одном месте. У разных ошибок разное назначение.<br/>Есть ошибки в рантайме, есть замечания статического анализа кода. Каждый вид ошибок удобно смотреть в специальном предназначенном месте.<br/>Ошибки рантайма (тесты, фичи и т.п.) удобно смотреть в Аллюре или на сервере CI. Замечания стат.анализа изучать лучше на сервере СонарКуб или хотя бы в АПК.|
|Как настроить автозапуск slave агентов в виде службы виндоус чтобы сами стартовали при запуске машины ?|Про настройку запуска агента как службу можно почитать тут: https://wiki.jenkins.io/display/JENKINS/Step+by+step+guide+to+set+up+master+and+agent+machines+on+Windows|
|Мы ведь в гитигнор пропишем ParentConfigurations.bin и *.cf???|Если файла из каталога src/cf/Ext добавить в гитигнор, тогда при сборке из исходников пропадет поддержка.<br/>Лучше эти файлы не добавлять в гитигнор, а напротив, положить в гит как бинарные файлы.|
|А возможно ли гитлабом поместить код в хрон, который в гит прилетел из EDT?|Такого инструмента нет.|
|Есть конфигурации с закрытыми модулями. Можно как-то сделать, чтобы gitsync перед разбором конфигурации пытался их расшифровать (с помощью Декомпилятор1Сv8.epf)? :-)|Если кто-то (Вы) напишет такой плагин для гитсинк, эта возможность появится. пока такой возможности нет|

# GitLab CI

|**Вопрос**|**Ответ**|
|-------------| -------------|
|А чем Вы пользуетесь сами, gilabCI или jenkins? И почему|Используем jenkins. С ним проще взаимодействовать. Много плагинов.|
|Это можно настроить на gitlab.com? Как вариант, чтобы runner был на нашем сервере, а сам сервер на gitlab.com|Да, можно. Даже можно в бесплатной версии, но с ограничениями. вот тарифы: https://about.gitlab.com/pricing/|
|jenkins тоже умеет выполнять шаги параллельно?|Да умеет. Для этого есть ключевое слово parallel. Пример использования можно посмотреть тут: https://www.jenkins.io/doc/book/pipeline/syntax/#parallel|
|Артур, fatihacet.gitlab-workflow ?|Официальное расширение для VSC от Гитлаба.|
|GitLab CI визуально больше нравится. Есть ли подводные камни? Что-то что в нём не получится?|Если только особенности, а так подводных камней нет.|
|Можно настроить, чтобы запускался не при каждом коммите, а как в дженкинс, не чаще раз в 10 минут например?|Будет ожидание завершения задачи прошлой сборки.|
|Почему у Ванессы не будет артифактов? Там же тоже есть результаты тестов|В нашей сборочной линии Ванесса не генерирует отчет в формате JUnit.|
|В gitlab ci можно же как-то пароли спрятать куда-нибудь (как в Jenkins)?|Да, можно. Защищенные переменные CI - настройки проекта, CI\CD, и раздел Переменные|
|А красивое, правильное решение какое вместо git push?|Спрячьте пароли и команда станет красивой и правильной.)|
|Это Ununtu где стоит Gitlab CI?|Да. GitLab и jenkins установлены на виртуальную машину.|
|Параллельный запуск шагов в Jenkins - выложите, плз, простенький пример кода j-файла|Простенький пример кода из документации: https://www.jenkins.io/doc/book/pipeline/syntax/#parallel|
|Есть ли у кого-то в сообществе опыт работы с API Sonara? Интересует получение отчета от Сонара в виде: кто сколько строк кода в месяц добавил, сколько у кого замечаний было, сколько кто замечания закрыл и т.д. Вроде бы есть некий "сонар-хелпер". Одним словом, хочу нарисаовать такой отчет, в какую сторону начинать копать? Или надо Сонар развернуть на PG и самому прямыми запросами все нужные данные доставать?|"Прямые запросы однозначно не рекомендуем использовать, т.к. структура ИБ авторами СонарКуб активно изменяется в новых релизах.<br/>Рекомендуем использовать ""родное"" АПИ СонарКуб для получения выборки данных.<br/>Инструмент sonar-helper https://github.com/theshadowco/sonar-helper <br/>В нем есть возможности ""Сводный отчет по разработчикам"" и ""Отчет по проектам"" это инструмент, запускаемый командной строки с определенными ключами. В документации хорошо описаны возможности инструмента"|
|А какие задачи в нашем pipeline можно распараллелить? чтобы друг другу не помешали|Можно распаралелить дымовые тесты и апк.|
|Возможно ли настроить CI так, чтобы все проверки и шаги выполнялись в пределах 10 минут?|Да, используйте ключевое слово timeout. Пример: timeout: 10 min|
|Почему мы в настройках для АПК указываем путь для Сонара?|В настройках для АПК указаны файлы результаты, а потом эти же файлы указаны в файле настройки для Сонара. фактически настройки разделены.|
|Что делать если на сервере сборки нет интернета?|В разделе "Конфигурация глобальных инструментов" в "Allure Commandline" можно снять галочку "Install automatically" и после этого в поле "Установочная директория" указать путь к установленному фреймворку allure на узле master.|
|Как указать "красивый\правильный" адрес сервера Гитлаб для получения различных ссылок от Гитлаба|Нужно указать корневой URL согласно официальной документации https://docs.gitlab.com/omnibus/settings/configuration.html|