Как ТестОпс хранит файлы результатов тестов

Последние изменения: 22.10.2026

Статья описывает, что происходит с файлами из папки allure-results после загрузки в ТестОпс, где они лежат в S3-хранилище и когда удаляются. Описание соответствует версии 5.27 (сборка 527u05b).

Здесь описана загрузка через allurectl или плагин CI.

Путь файла при загрузке

  1. Отправка. allurectl upload или allurectl watch (или плагин CI) создаёт в запуске сессию загрузки и отправляет файлы в ТестОпс.
  2. Приём. ТестОпс сохраняет файлы во временные папки хранилища и сразу делит их на два вида:
    • явные вложения — имя вида *-attachment.*, файлы .html, .txt, .js, .zip, любые файлы больше 2 МБ и пустые файлы — попадают во временную папку atc;
    • файлы на разбор — всё остальное (*-result.json, *-container.json, environment.properties и т. п.) — попадают во временную папку upl.
  3. Разбор. Файлы из upl разбираются в фоне: ТестОпс поддерживает форматы Allure 1, Allure 2, xUnit, XCTest, JGiven, TRX, JUnit и Cucumber JSON. Из них создаются результаты тестов в базе данных. Файл, который не подошёл ни под один формат, считается вложением и переносится в atc.
  4. Вложения на постоянное место. Вложение, на которое ссылается результат теста, копируется в постоянную папку tr (вложения результатов) или tfr (вложения фикстур).
  5. Очистка временных файлов. После обработки временные файлы из upl и atc удаляются. Всё, что осталось необработанным или не привязалось к результатам, удаляется при закрытии запуска.

Удаление файлов из хранилища всегда отложенное: ТестОпс ставит файл в очередь на удаление, а фоновая задача удаляет его обычно в течение нескольких минут, при большой очереди — дольше. Поэтому сразу после загрузки или очистки в хранилище какое-то время видны файлы, которые уже не используются.

Рекомендации

  • Закрывайте запуски. Пока запуск открыт, его временные файлы могут оставаться в хранилище. Настройте автоматическое закрытие запусков или закрывайте их после прогона.
  • Отправляйте вложения вместе с результатами, в одной сессии. Вложения привязываются к результатам только в пределах одной сессии загрузки. Если отправить вложения и результаты двумя отдельными вызовами allurectl upload, вложения к результатам не привяжутся. Загружайте папку allure-results целиком одним вызовом или используйте allurectl watch.
  • Настраивайте правила очистки под задачу. Правило очистки вложений (Attachment) освобождает место в S3-хранилище. Правило очистки сценариев (Scenario) уменьшает в первую очередь базу данных: сценарии результатов тестов хранятся в ней. Правило действует только для выбранного статуса тестов, поэтому для полной очистки нужны правила для всех статусов. Место в базе данных освобождается не сразу, а после VACUUM.

Где файлы лежат в бакете

Формат ключа при стандартной настройке хранилища: shard_0/<ID проекта>/<папка>/…. Например, вложение результата из проекта 5: shard_0/5/tr/1234XXX/1234567/<uuid>.png. Поскольку ID проекта входит в путь, объём, который занимает проект, можно посчитать по префиксу shard_0/<ID проекта>/.

Папка Что лежит Когда удаляется
upl файлы на разбор (временно) после обработки или при закрытии запуска
atc вложения до привязки к результату (временно) после привязки или при закрытии запуска
tr / tfr вложения результатов тестов / фикстур правилом очистки вложений или при удалении результата / запуска
tc / ss вложения тест-кейсов / общих шагов при удалении вложения
imp / exp файлы импорта / экспорта при удалении записи импорта / экспорта

Файлы, загруженные на версиях ТестОпс до 5.12, лежат в корне бакета по ключам <ID проекта>/… или v2/<ID проекта>/…. ТестОпс продолжает с ними работать, при подсчёте объёма проекта их нужно учитывать отдельно.

Помогла ли вам статья?