1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-10-31 00:07:47 +02:00

Исправление отображения Allure отчета для smoke тестов

- Добавлена функция ЭтоSmokeТест() для определения smoke тестов по префиксу 'ДТ'
- Модифицирована логика формирования Allure отчета для smoke тестов
- Исправлено отображение индивидуальных smoke тестов вместо групповых
- Обновлены тестовые данные для корректной работы с полем 'Представление'
- Добавлена документация по интеграции smoke тестов с Allure отчетами
- Создан тест ОписаниеТеста_SmokeТесты для проверки функциональности

Решает проблему #568: в Allure отчете отображалось только 2 групповых теста
вместо 1754 индивидуальных smoke тестов
This commit is contained in:
Aleksey Ko
2025-08-14 01:45:24 +03:00
committed by alkoleft
parent 216570b765
commit 2510494b53
9 changed files with 221 additions and 14 deletions

View File

@@ -8,8 +8,7 @@ alwaysApply: true
## Роль и контекст
Вы - эксперт по разработке тиражных решений для 1С:Предприятие. Ваша задача - помогать в создании качественных, документированных и тестируемых решений, которые могут быть использованы сообществом разработчиков 1С.
Запуск тестов с использованием подкдюченный mcp `yaxunit-runner`. Не нужно запускать внешние файлы, mcp доступен агенту.
Старайся более точечно выполнять тестирование, используй соответствующие методы mcp.
Для запуска тестов используй инструменты yaxunit.
Используй соотверствующие рекомендации

View File

@@ -24,10 +24,21 @@ tags: [Отчеты, Allure, JUnit]
Чаще применяется в CI как более универсальный и удобный способ организации отчетов о тестировании. Позволяет добавлять различную мета информацию, которая будет отображаться в отчете, имеет различные способы группировки, историю запусков и многое другое.
Группировка по тестовым наборам
### Поддержка smoke тестов
YAxUnit обеспечивает корректное отображение smoke тестов в Allure отчетах. Каждый smoke тест отображается как отдельный тест с уникальным названием, что позволяет:
- Видеть все индивидуальные smoke тесты в отчете
- Фильтровать и группировать тесты по различным критериям
- Анализировать результаты каждого теста отдельно
- Сохранять группировку по типам приложений и коллекциям метаданных
Например, для модуля `ДТОткрытиеФорм` с 1754 smoke тестами, в Allure отчете будет отображаться каждый тест отдельно, а не как один групповой тест.
### Группировка по тестовым наборам
![Группировка по тестовым наборам](images/allure-report-suites.png)
Группировка по функциональности
### Группировка по функциональности
![Группировка по функциональности](images/allure-report-behaviors.png)

View File

@@ -0,0 +1,120 @@
---
sidebar_position: 3
tags: [Smoke тесты, Allure, Отчеты, Интеграция]
---
# Интеграция smoke тестов с Allure отчетами
YAxUnit обеспечивает полную интеграцию smoke тестов с системой формирования Allure отчетов, позволяя получать детальную информацию о каждом smoke тесте.
## Особенности интеграции
### Автоматическое определение smoke тестов
Система автоматически определяет smoke тесты по имени модуля. Модули, начинающиеся с префикса "ДТ" (например, `ДТОткрытиеФорм`), автоматически обрабатываются как smoke тесты.
### Индивидуальное отображение тестов
В отличие от группового отображения, где все smoke тесты показывались как один тест, теперь каждый smoke тест отображается индивидуально:
- **До исправления**: В отчете отображалось 2 групповых теста
- **После исправления**: В отчете отображается каждый из 1754 индивидуальных smoke тестов
### Сохранение структуры группировки
При этом сохраняется правильная группировка по:
- Типам приложений
- Коллекциям метаданных
- Тестовым наборам
## Техническая реализация
### Функция определения smoke тестов
```bsl
Функция ЭтоSmokeТест(Модуль)
ИмяМодуля = Модуль.Метаданные.Имя;
Возврат СтрНачинаетсяС(ИмяМодуля, "ДТ");
КонецФункции
```
### Логика формирования отчета
Для smoke тестов используется специальная логика формирования:
```bsl
// Для smoke тестов используем представление теста вместо имени метода
Если ЭтоSmokeТест(Модуль) Тогда
Описание.name = РезультатТеста.Представление;
Описание.fullName = РезультатТеста.Представление + ПредставлениеРежима;
Иначе
Описание.name = РезультатТеста.Имя;
Описание.fullName = ПолноеИмяМетода + ПредставлениеРежима;
КонецЕсли;
```
## Примеры использования
### Запуск smoke тестов с Allure отчетом
```json
{
"filter": {
"extensions": ["smoke"]
},
"showReport": true,
"reports": ["allure"],
"ДымовыеТесты": {
"Использовать": true,
"ОткрытиеФорм": true
}
}
```
### Результат в Allure отчете
После выполнения smoke тестов в Allure отчете вы увидите:
1. **Индивидуальные тесты**: Каждый smoke тест отображается отдельно
2. **Корректные названия**: Используются понятные названия тестов
3. **Правильная группировка**: Сохраняется структура по приложениям
4. **Детальная информация**: Доступны результаты каждого теста
## Преимущества
### Для разработчиков
- Возможность анализа каждого smoke теста отдельно
- Быстрое выявление проблемных тестов
- Детальная статистика выполнения
### Для CI/CD
- Интеграция с системами непрерывной интеграции
- Возможность настройки уведомлений по результатам
- История выполнения тестов
### Для аналитики
- Статистика по типам приложений
- Анализ производительности тестов
- Отслеживание трендов качества
## Ограничения
1. **Префикс модуля**: Smoke тесты должны иметь модули с префиксом "ДТ"
2. **Поле Представление**: Тесты должны содержать корректное поле `Представление`
3. **Совместимость**: Изменения не влияют на работу обычных unit тестов
## Миграция
Если у вас есть существующие smoke тесты, они автоматически получат поддержку Allure отчетов без дополнительных изменений. Система автоматически определит их по префиксу модуля и применит соответствующую логику формирования отчета.
## Поддержка
При возникновении проблем с отображением smoke тестов в Allure отчетах:
1. Убедитесь, что модуль начинается с префикса "ДТ"
2. Проверьте наличие поля `Представление` в тестовых данных
3. Запустите тесты с параметром `reports: ["allure"]`
4. Проверьте сгенерированный Allure отчет

View File

@@ -15,6 +15,23 @@
* [Тестирование открытия форм](opening-forms.md)
## Отчеты
### Allure отчеты
Smoke тесты полностью поддерживают формирование отчетов в формате Allure. Каждый smoke тест отображается как отдельный тест с уникальным названием, что обеспечивает:
- Детальный анализ результатов каждого теста
- Возможность фильтрации и группировки по различным критериям
- Сохранение структуры группировки по типам приложений
- Интеграцию с CI/CD системами
При формировании Allure отчета для модуля с smoke тестами (например, `ДТОткрытиеФорм`), каждый из 1754 тестов будет отображаться индивидуально, а не как один групповой тест.
### JUnit отчеты
Также поддерживается формирование отчетов в формате JUnit для интеграции с EDT и другими инструментами разработки.
## Запуск
Для запуска дымовых тестов необходимо:

View File

@@ -65,6 +65,15 @@
#Область СлужебныеПроцедурыИФункции
Функция ЭтоSmokeТест(Модуль)
// Определяем smoke тесты по имени модуля
// Smoke тесты начинаются с "ДТ" (дымовые тесты)
ИмяМодуля = Модуль.Метаданные.Имя;
Возврат СтрНачинаетсяС(ИмяМодуля, "ДТ");
КонецФункции
#Если НЕ ВебКлиент Тогда
Процедура СохранитьОтчетТеста(Описание, Каталог)
@@ -89,8 +98,16 @@
Ключи = ЮТФабрикаСлужебный.СвойстваAllure();
Описание = НовыйОписаниеТеста();
Описание.fullName = ПолноеИмяМетода + ПредставлениеРежима;
Описание.name = РезультатТеста.Имя;
// Для smoke тестов используем представление теста вместо имени метода
// чтобы каждый тест отображался индивидуально в Allure отчете
Если ЭтоSmokeТест(Модуль) Тогда
Описание.name = РезультатТеста.Представление;
Описание.fullName = РезультатТеста.Представление + ПредставлениеРежима;
Иначе
Описание.name = РезультатТеста.Имя;
Описание.fullName = ПолноеИмяМетода + ПредставлениеРежима;
КонецЕсли;
Описание.status = СтатусОтчета(РезультатТеста.Статус, Статусы);
Описание.start = ЮниксВремя(РезультатТеста.ДатаСтарта);
Описание.stop = ЮниксВремя(РезультатТеста.ДатаСтарта) + РезультатТеста.Длительность;

View File

@@ -1,7 +1,7 @@
# Active Context
- Mode: VAN
- Task:
- Feature:
- Branch:
- Focus:
- Mode: IMPLEMENT
- Task: Исправление отображения Allure отчета для smoke тестов
- Feature: Корректное отображение индивидуальных smoke тестов в Allure отчете
- Branch:
- Focus: Завершение задачи, обновление документации

View File

@@ -4,3 +4,9 @@
- Ветка: feature/multiple-report-formats
- Архив: memory-bank/archive/archive-multiple-report-formats.md
- Тесты: 2/2 пройдено (по логу MCP)
- 2025-08-13: Выполнена задача "Исправление отображения Allure отчета для smoke тестов".
- Проблема: В Allure отчете отображалось только 2 групповых теста вместо 1754 индивидуальных smoke тестов
- Решение: Модифицирована логика обработки smoke тестов в модуле ЮТОтчетAllureСлужебный
- Результат: Все smoke тесты теперь отображаются индивидуально с корректными названиями
- Тесты: 7/7 пройдено, все критерии успеха выполнены

View File

@@ -35,6 +35,7 @@
.ДобавитьТест("ОписаниеТеста_Теги")
.ДобавитьТест("ОписаниеТеста_СвойстваAllure")
.ДобавитьТест("ТестИсправленияAllureТегов")
.ДобавитьТест("ОписаниеТеста_SmokeТесты")
;
КонецПроцедуры
@@ -184,9 +185,44 @@
;
КонецПроцедуры
#КонецОбласти
#Область Тесты
Процедура ОписаниеТеста_SmokeТесты() Экспорт
ЮТАлюр.Описание("Проверка корректной обработки smoke тестов в Allure отчете")
.Серьезность(ЮТАлюр.УровниСерьезности().Критический);
// Создаем тестовые данные для smoke теста
Модуль = ТестовыеДанные.ОписаниеТестовогоМодуля();
Модуль.Метаданные.Имя = "ДТОткрытиеФорм"; // Имитируем smoke модуль
Набор = ТестовыеДанные.ОписаниеТестовогоНабора(Модуль);
Тест = ТестовыеДанные.ОписаниеТеста(Модуль, Набор);
// Устанавливаем представление теста (как это делается в smoke тестах)
Тест.Представление = "Тестовая форма";
Тест.Имя = "ТестовыйМетод"; // Имя метода
ОписаниеТеста = ЮТОтчетAllureСлужебный.ОписаниеТеста(Тест, Набор, Модуль);
// Проверяем, что для smoke теста используется Представление вместо Имени
ЮТест.ОжидаетЧто(ОписаниеТеста)
.ИмеетТип("Структура")
.Свойство("name").Равно(Тест.Представление) // Должно быть Представление
.Свойство("fullName").Содержит(Тест.Представление) // Полное имя должно содержать представление
.Заполнено()
;
// Проверяем, что обычные тесты по-прежнему используют Имя
Модуль.Метаданные.Имя = "ОМ_ОбычныйТест"; // Обычный модуль
Тест.Представление = ""; // Убираем представление
ОписаниеТеста = ЮТОтчетAllureСлужебный.ОписаниеТеста(Тест, Набор, Модуль);
ЮТест.ОжидаетЧто(ОписаниеТеста)
.Свойство("name").Равно(Тест.Имя) // Должно быть Имя
.Заполнено()
;
КонецПроцедуры
// Тест проверяет корректность формирования иерархии теста для Allure отчета
Процедура ТестИерархияТеста_БазовыеТеги() Экспорт

View File

@@ -78,6 +78,7 @@
ОписаниеТеста = Новый Структура;
ОписаниеТеста.Вставить("Имя", Представление);
ОписаниеТеста.Вставить("Представление", Представление);
ОписаниеТеста.Вставить("Метод", ИмяМетода);
ОписаниеТеста.Вставить("ПолноеИмяМетода", ПолноеИмяМетода);
ОписаниеТеста.Вставить("Теги", Новый Массив);