Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Отчет Allure при использовании сервера #1683

Closed
beefree86 opened this issue Jul 14, 2022 · 43 comments
Closed

Отчет Allure при использовании сервера #1683

beefree86 opened this issue Jul 14, 2022 · 43 comments
Labels
Allure question Further information is requested

Comments

@beefree86
Copy link

Укажите:

  1. Версия Vanessa Automation 1.2.039.1
  2. Версия платформы 1С:Предприятие 8.3 (8.3.19.1467)
  3. Режим совместимости базы, где запускается Vanessa Automation - нет
  4. Операционная система Windows

В компании используется Allure сервер. Исходные результаты выполнения тестов при помощи команды allurectl upload загружаются в созданный проект на сервере allure.

В allure есть возможность автоматического создания тест-кейсов и отчета о запуске тестов. Описано тут Add an automated test case:
https://docs.qameta.io/allure-testops/briefly/test-cases/manage/#generation-of-automated-test-cases-from-manual-upload-of-test-results

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

Пример результата из VA без FullName.txt
Пример результата с FullName.txt

Объяснение поддержки allure
image

@Pr-Mex Pr-Mex added the Allure label Jul 15, 2022
@Pr-Mex
Copy link
Owner

Pr-Mex commented Jul 15, 2022

@beefree86
В поле fullname всегда одна и та же строка записывается?

@Pr-Mex Pr-Mex added the question Further information is requested label Jul 15, 2022
@nixel2007
Copy link
Contributor

Нет, это что-то вроде имяФичи+имяСценария.

@Pr-Mex
Copy link
Owner

Pr-Mex commented Jul 15, 2022

Нет, это что-то вроде имяФичи+имяСценария.

Просто надо строку собрать вида
ИмяФичи_ИмяСценария
?

@beefree86
Copy link
Author

Нет, это что-то вроде имяФичи+имяСценария.

Просто надо строку собрать вида ИмяФичи_ИмяСценария ?

Добрый день.

Я задала вопрос поддержке Allure по поводу сбора этого параметра. ответа пока нет, жду.

В телеграмм канале allure нашла такое упоминание:
"у каждого теста есть fullName, это package + class + method"

@nixel2007
Copy link
Contributor

Имя фичи же может повторяться. Можно словить неуникальные тесты в разных фичах. Есть какой-то условно постоянный идентификатор фичи, сохраняемый между запусками? Путь к файлу относительно каталога проекта как вариант.

А можно забить и идти интерактивно от простого к сложному)

@nixel2007
Copy link
Contributor

В телеграмм канале allure нашла такое упоминание:
"у каждого теста есть fullName, это package + class + method"

Это джава подход. У них тесты в методах, привязанных к классам, которые лежат в пакете. А у нас только файловая структура, имена фич и имена сценариев

@beefree86
Copy link
Author

в отчете, который мне предоставили для примера (он загружен сюда тоже) данные для fullName собираются из меток, может можно и нам в такие же метки какие-то данные передавать и собирать из них fullName
image

@Pr-Mex
Copy link
Owner

Pr-Mex commented Jul 15, 2022

Можно просто полное имя файла записать туда плюс имя сценария. Получится уникальная строка.

@beefree86
Copy link
Author

Интересно, а по длине имени нет ограничений, если будет очень большое

@Pr-Mex
Copy link
Owner

Pr-Mex commented Jul 15, 2022

Интересно, а по длине имени нет ограничений, если будет очень большое

Это наверное лучше у супорта Аллюра спросить.

@beefree86
Copy link
Author

Попробую узнать этот момент тоже

@nixel2007
Copy link
Contributor

Можно просто полное имя файла записать туда плюс имя сценария. Получится уникальная строка.

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

@cheshi-mantu
Copy link

cheshi-mantu commented Jul 15, 2022

полный путь должен обеспечивать уникальность для каждого теста.
формируется он в зависимости от фреймворка по-разному.
Например, для JUnit это будет полная сигнатура метода: комбинация packageName.ClassName.methodName
в рамках одного проекта это будет всегда уникальная строка вида:
"fullName": "io.qameta.allure.IssuesRestTest.shouldCreateUserNote", причем уникальной она должна быть на протяжении всей жизни теста.
мы можем устроить встречу с разработчиками аллюр фреймворка и обсудить этот вопрос и вопрос селективного запуска тестов, который было бы неплохо так же иметь для полной совместимости с Allure TestOps.

@Pr-Mex
Copy link
Owner

Pr-Mex commented Jul 16, 2022

@cheshi-mantu
Да, думаю можно обсудить на встрече.

@cheshi-mantu
Copy link

@Pr-Mex привет, Леонид.
кого из участников разработки с вашей стороны нужно будет позвать?

@Pr-Mex
Copy link
Owner

Pr-Mex commented Jul 18, 2022

@Pr-Mex привет, Леонид. кого из участников разработки с вашей стороны нужно будет позвать?

Меня.

@cheshi-mantu
Copy link

@Pr-Mex см. в почте со вчерашнего дня, пожалуйста.

@Pr-Mex
Copy link
Owner

Pr-Mex commented Jul 19, 2022

@Pr-Mex см. в почте со вчерашнего дня, пожалуйста.

Ответил

@Pr-Mex
Copy link
Owner

Pr-Mex commented Jul 20, 2022

@cheshi-mantu
От вас пока ответа нет.

@beefree86
Copy link
Author

Добрый вечер!
А встреча в итоге состоялась?

@Pr-Mex
Copy link
Owner

Pr-Mex commented Jul 29, 2022

@beefree86
Да, созвонились. Детально именно этот issue не обсуждали.
Я постараюсь на днях предложить свой вариант решения.

@beefree86
Copy link
Author

@beefree86 Да, созвонились. Детально именно этот issue не обсуждали. Я постараюсь на днях предложить свой вариант решения.

Спасибо!

@1cgh
Copy link
Contributor

1cgh commented Aug 1, 2022

варианты:

  1. служебный тег со значением. но куча проблем сразу: откуда брать значение, чтоб было уникальным; надо отслеживать наличие тега; отвалятся старые фичи, где тега нет; в VA сейчас вроде вовсе нет поддержки тегов со значениями. из плюсов: можно перемещать сценарий между файлами, переименовывать - если значение тега остается неизменным, то и в аллюре не меняется
  2. путь фича-файла относительно каталога проекта + имя сценария
    из минусов: переименование/перемещение фича-файла или смена имени сценария меняет значение. из плюсов: ничего нигде дополнительно указывать/заполнять/отслеживать не надо. значение можно собрать из того, что уже есть

я за 2

@cheshi-mantu
Copy link

cheshi-mantu commented Aug 2, 2022

  1. путь фича-файла относительно каталога проекта + имя сценария
    из минусов: переименование/перемещение фича-файла или смена имени сценария меняет значение. из плюсов: ничего нигде дополнительно указывать/заполнять/отслеживать не надо. значение можно собрать из того, что уже есть
    Для случаев, когда меняется путь, у нас есть вариант жесткой привязки к AllureID (он для этого и нужен), чтобы не плодились новые сущности при изменениях. Параметр передается в лейблах (см. https://docs.qameta.io/allure-testops/faq/labels/) при помощи лейбла AS_ID
"labels": [
   <snip>
 {
      "name": "AS_ID",
      "value": "9999"
    },
   <snip>
}

image

@cheshi-mantu
Copy link

при первой загрузке сгенерированному ТК назначается ИД системой, далее этот ИД уже можно добавить в код, чтобы изменения в путях/именах лепились к этому ИД.

@Pr-Mex
Copy link
Owner

Pr-Mex commented Aug 8, 2022

при первой загрузке сгенерированному ТК назначается ИД системой, далее этот ИД уже можно добавить в код, чтобы изменения в путях/именах лепились к этому ИД.

@cheshi-mantu
Получается, что пользователю надо как-то вручную отслеживать эти ID и прописывать их в тесты. Для тысяч тестов это видится непростой задачей.

@Pr-Mex
Copy link
Owner

Pr-Mex commented Aug 8, 2022

  1. служебный тег со значением. но куча проблем сразу: откуда брать значение, чтоб было уникальным; надо отслеживать наличие тега; отвалятся старые фичи, где тега нет; в VA сейчас вроде вовсе нет поддержки тегов со значениями. из плюсов: можно перемещать сценарий между файлами, переименовывать - если значение тега остается неизменным, то и в аллюре не меняется

@1cgh Наверное, как написал @cheshi-mantu, тег AS_ID и будет тем уникальным ID. Его надо будет прописать для тех случаев, когда что-то планируют переименовать или перенести.

@Pr-Mex
Copy link
Owner

Pr-Mex commented Aug 8, 2022

Думаю итого надо сделать следующее:

  1. Сделать, чтобы теги вида @name:Value записывались как label, как этого хочет аллюр. Сейчас такой тег тоже записывается как label, но это будет выглядеть так
    image
    а надо так
    image

  2. В fullName писать путь фича-файла относительно каталога проекта + имя сценария (возможно это надо делать транслитом). Если кому-то надо будет переименовать/перенести - то он будет добавлять тег с AS_ID.
    @1cgh @cheshi-mantu @nixel2007 @beefree86
    Что думаете?

@beefree86
Copy link
Author

@Pr-Mex Меня такой вариант вполне устраивает, это лучше чем ничего ). С тегом as_id я экспериментировала, есть обработка, не помню у кого я в гитхаб стянула и немного под себя переделала. Шагами сценария она добавляет разные тэги и ссылки. Могу ее сюда приложить. (Если надо).

@cheshi-mantu А по поводу полного имени, два вопроса: 1. как вы написали, нужно ли транслитом писать имя? 2. Есть ли ограничение по длине имени (оно может получиться очень большим)

@cheshi-mantu
Copy link

при первой загрузке сгенерированному ТК назначается ИД системой, далее этот ИД уже можно добавить в код, чтобы изменения в путях/именах лепились к этому ИД.

@cheshi-mantu Получается, что пользователю надо как-то вручную отслеживать эти ID и прописывать их в тесты. Для тысяч тестов это видится непростой задачей.

у нас есть IDE плагин для упрощения процесса, там автоматом проставляются ИД для ТК, которые уже сгенерированы.
В общем случае ИД нужен только в том случае, если ты что-то меняешь в ТК (часть пути, набор параметров), так что это не является прям обязательным для каждого ТК.
Но это надо держать в голове, что если решил менять пути или параметры, то нужен ИД.

@Pr-Mex
Copy link
Owner

Pr-Mex commented Aug 9, 2022

@cheshi-mantu
Остался ещё вопрос по заполнению параметра fullName - его можно заполнять русскими буквами? Или нужно использовать транслит?

@cheshi-mantu
Copy link

@cheshi-mantu Остался ещё вопрос по заполнению параметра fullName - его можно заполнять русскими буквами? Или нужно использовать транслит?

Тут disruptive changes, возможно, что это для вас будет даже легче (я немного потратил времени на разговоры с разработкой hence небольшие задержки):

У нас постепенно происходит переход идентификации теста от fullName к testCaseId, и лучше всего вам именно его использовать

{
  "uuid": "1a3de696-c35e-47ec-a404-e0c5adf13d8c",
  "historyId": "258f94d99210b0eabd73c7d10dee9473",
  "testCaseId": "[engine:junit-jupiter]/[class:io.qameta.example.AllureLabelsTest]/[method:customDynamicLabelTest()]",
  "testCaseName": "customDynamicLabelTest()",
  "fullName": "io.qameta.example.AllureLabelsTest.customDynamicLabelTest",

в целом testCaseId — это любая строка, которая в пределах лонча (ну, желательно на протяжении жизни ТК) идентифицирует тест-кейс.

Рекомендация для вашего случая: берете testCaseId = md5(fullName) или как у вас было описано чуток выше:

testCaseId = md5(путь фича-файла относительно каталога проекта + имя сценария)

Выгода:

  • в md5 не используется кириллица, и testCaseId всегда будет использовать "безопасные" символы.
  • md5 имеет фиксированную длину

В UI тестопса полный путь будет обрезан 255 символами (ограничение на это поле в БД)

Полный путь можно использовать в ИДЕ для быстрого поиска теста по полному пути (в джетбрейнсах, например, так можно делать)

Приоритеты по использованию сущностей для идентификации тест-кейса:

AllureID >> fall back to >> testCaseId >> fallback to >> fullName

@Pr-Mex
Copy link
Owner

Pr-Mex commented Aug 10, 2022

@cheshi-mantu
Да, думаю можно и так.
Плюс, как я понимаю, никто не запрещает заполнять в json и fullName и testCaseId.

@beefree86
Вас устроит такое?

@beefree86
Copy link
Author

@Pr-Mex вполне, спасибо

@Pr-Mex
Copy link
Owner

Pr-Mex commented Aug 26, 2022

@beefree86
Сделал. Можно проверять.

@beefree86
Copy link
Author

@Pr-Mex скачала single, запустила тесты, в итоге fullname все еще пусто
image

Что-то не так делаю?

@Pr-Mex
Copy link
Owner

Pr-Mex commented Aug 29, 2022

@beefree86
Нужно собрать обработку из ветки develop. Пока в релизах этого изменения нет.

@beefree86
Copy link
Author

@Pr-Mex собрала обработку, запустила тесты
так в файле результата для allure
image

так выглядит в allure
image

вроде бы все как и требовалось =)

@Pr-Mex
Copy link
Owner

Pr-Mex commented Aug 29, 2022

@beefree86 Отлично!

@beefree86
Copy link
Author

@Pr-Mex а в какой релиз это будет включено и когда примерно ожидать этот релиз?

@Pr-Mex
Copy link
Owner

Pr-Mex commented Sep 1, 2022

@Pr-Mex а в какой релиз это будет включено и когда примерно ожидать этот релиз?
@beefree86
Это будет в включено в 1.2.40.1
И в промежуточные релизы, которые выйдут до этого.
Думаю основной релиз будет в течение месяца или 1.5

@Pr-Mex
Copy link
Owner

Pr-Mex commented Feb 1, 2023

Решено.

@Pr-Mex Pr-Mex closed this as completed Feb 1, 2023
@1cgh
Copy link
Contributor

1cgh commented Feb 5, 2023

@cheshi-mantu а где лежит описание формата json-файла (схемка) с результатом для Allure report?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Allure question Further information is requested
Projects
None yet
Development

No branches or pull requests

5 participants