Результаты тестов
Результат теста — одна попытка выполнения тест-кейса во время запуска. Результат теста создается либо вручную, либо автоматически путем загрузки файла с результатами теста. В самой простой ситуации результат теста можно рассматривать как простую запись, содержащую дату и время попытки выполнения теста и ее статус, например, Успешный или Неуспешный.
Для ручного теста со сценарием инженер по тестированию указывает индивидуальные статусы для всех шагов и при необходимости добавляет вложения. Для всего результата теста также могут быть указаны ссылки на задачи, теги и кастомные поля, описывающие попытку.
Результат автоматизированного теста может включать те же данные. Ознакомьтесь с документацией Allure Report, чтобы узнать больше о шагах, вложениях и метаданных, которые могут быть добавлены при выполнении автоматизированного теста.
Каждый результат теста также может описывать свое окружение, например, операционную систему и браузер, которые использовал инженер по тестированию. В зависимости от конфигурации и способа создания запуска, окружение может быть одинаковым или отличаться для всех результатов тестов в запуске. Чтобы узнать больше об этой возможности, см. Окружение.
Когда вы закрываете запуск, все результаты тестов в нем обрабатываются. Затем ТестОпс использует результаты тестов для создания или обновления тест-кейсов и всей связанной аналитики в проекте.
Статусы тестов в запусках
Каждый завершенный результат теста имеет статус теста. Эти статусы отражаются в различных статистиках и графиках в интерфейсе ТестОпс, и они также могут использоваться для поиска и фильтрации тест-кейсов.
При выполнении тест-кейса вручную новый (незавершенный) результат теста изначально получает временный псевдо-статус В процессе, который затем изменяется инженером по тестированию на другой статус. Для результатов автоматизированных тестов статус загружается из файла с результатами теста (см. также статью Статусы тестов в документации Allure Report).
Статусы тестов в запусках:
- Успешный (зеленый): тест завершился успешно.
- Неуспешный (красный): тест столкнулся с неожиданным поведением в тестируемой системе. Это означает, что сам тест кажется действительным (не сломан), но его выполнение завершилось ложным утверждением.
- Пропущенный (серый): тест был включен в тест-план, но не был выполнен по какой-то причине.
- Сломанный (оранжевый): тест не прошел из-за дефекта теста. В отличие от статуса Неуспешный означает, что тест не смог проверить поведение продукта так, как было задумано, поэтому сбой может или не может указывать на фактический дефект продукта.
- Неизвестный (фиолетовый): статус теста не был явно указан. В ручном тесте это означает, что запуск был закрыт, пока тест все еще был В процессе. В автоматизированном тесте это, скорее всего, связано с ошибкой в адаптере Allure Report, который использовался во время запуска.
В сценариях ручных тест-кейсов можно установить индивидуальные статусы для каждого шага и подшага. Статусы шагов не влияют напрямую на статусы тест-кейсов и могут использоваться для различных целей.
Поддерживаемые форматы файлов
ТестОпс распознает различные форматы данных для результатов автоматизированных тестов. Файлы в любом из этих форматов можно загружать через веб-интерфейс или через allurectl:
- формат Allure Report 2.x —
*-result.json
,*-container.json
,*-attachment.*
; - формат Allure Report 1.x —
*.xml
(поддерживается для совместимости со старыми адаптерами и интеграциями); - формат отчетности Cucumber —
*.json
; - формат отчетности JGiven —
*.json
; - формат отчетности JUnit XML —
*.xml
; - формат отчетности Visual Studio —
*.trx
(устаревший, не рекомендуется использовать); - формат отчетности XCTest —
*.xcresult
(поддерживаются только файлы из XCode 11 и выше); - формат отчетности xUnit.net —
*.xml
.
Сопоставление результатов с тест-кейсами
Когда вы загружаете результаты тестов, для каждого результата ТестОпс выполняет одно из трех действий:
- Создает новый автоматизированный тест-кейс, если это первая загрузка результатов для этого тест-кейса.
- Обновляет существующий тест-кейс, если вы уже загружали для него результаты.
- Отмечает результат как «Невозможно привязать», если он содержит неверные данные для сопоставления (см. ниже).
После первичной загрузки все последующие результаты должны быть корректно связаны с созданным тест-кейсом. Для этого адаптеры дополнительно записывают в результат уникальный идентификатор тест-кейса, который отличается от ID тест-кейса, отображающегося в интерфейсе ТестОпс. Чтобы создать этот идентификатор, адаптеры хэшируют данные, предоставляемые тестовым фреймворком.
Если тестовый фреймворк не предоставляет готовый идентификатор для тест-кейса, адаптер создает хэш на основе сигнатуры тестовой функции и дополнительной информации, которая может помочь сделать идентификатор более уникальным (например, названия пакета).
Этот процесс можно представить следующим образом:
testCaseId = md5(fullName + sort(params))
где fullName
— это название функции с дополнительной информацией (например, название_модуля#название_функции
), а params
— параметры функции.
Затем, после загрузки результата, ТестОпс попытается найти и обновить тест-кейс с указанным идентификатором. Если тест-кейса с таким идентификатором не существует, ТестОпс создаст новый тест-кейс.
Примечание
Если вы не используете официальный адаптер и в ваших результатах нет этого идентификатора, ТестОпс сгенерирует его автоматически при загрузке результатов. Этот идентификатор может отличаться от идентификаторов, создаваемых адаптерами.
Возможная проблема идентификаторов, созданных таким образом, — их чувствительность к изменениям в вашем коде. Например, если для создания идентификатора была использована сигнатура функции и вы в будущем измените имя функции или ее параметры, это приведет к изменению идентификатора и к созданию в ТестОпс нового тест-кейса вместо обновления существующего.
Чтобы этого избежать, после первичной загрузки результатов тестов вы можете указать в вашем коде идентификатор тест-кейса, который отображается в интерфейсе ТестОпс:
Важно
Вы не можете указать идентификатор, который еще не существует в ТестОпс. В таком случае загруженные результаты получат статус «Невозможно привязать» и тест-кейсы не будут созданы или обновлены.
java
@Test
@AllureId("123")
public void myTest() {
step("Step 1", () -> {});
}
После запуска теста адаптер создаст файл с результатами, в котором будут указаны следующие поля:
json
"testCaseId": "db57b9d129d73c4b4d9a1d1023774f53",
"labels": [
{
"name": "as_id",
"value": "123"
}
]
testCaseId
— это идентификатор тест-кейса, созданный адаптером (хэш данных, предоставленных тестовым фреймворком). В примере выше вместо testCaseId
будет использован указанный явно идентификатор тест-кейса из ТестОпс — as_id
(или allure_id
в некоторых адаптерах).