фреймворка при выполнении теста FUZZ.
При запуске распределенного тестового фреймворка OpenHarmony для выполнения тестовых сценариев фаззинга для модуля SoftBusAesCrypto, я столкнулся с проблемой получения отчета о покрытии кода.
Я выполнял тестовый сценарий SoftBusAesCryptoFuzzTest (путь к исходному коду: /OpenHarmony/foundation/communication/dsoftbus/tests/adapter/fuzztest/softbusaescrypto_fuzzer) и хотел получить данные о покрытии кода.
В соответствии с руководством по покрытию кода в документации для разработчиков (https://gitee.com/openharmony/testfwk_developer_test), я добавил соответствующие флаги для поддержки покрытия кода в файле BUILD.gn для тестового сценария:
cflags = [
"-g",
"-O0",
"-Wno-unused-variable",
"-fno-omit-frame-pointer",
"-fstack-protector-strong",
"--coverage", # Добавление флага для поддержки покрытия кода
]
cflags_cc = [
"--coverage", # Флаг для поддержки покрытия кода для C++ файлов
]
ldflags = [
"--coverage", # Флаг для поддержки покрытия кода для линковщика
]
Затем я скомпилировал этот тестовый сценарий, используя следующую команду:
./build.sh --product-name rk3568 --build-target SoftBusAesCryptoFuzzTest --no-prebuilt-sdk
и сборка прошла успешно.Далее я перешел в директорию с тестовым фреймворком для разработчиков, запустил тестовый фреймворк и выполнил тестовый сценарий с параметрами для покрытия кода:
run -t FUZZ -ts SoftBusAesCryptoFuzzTest -cov coverage
После выполнения были получены следующие ошибки:
Ошибка: часть не найдена в all_subsystem_config.json
dos2unix: Преобразование файла /home/ycy/OpenHarmony/test/testfwk/developer_test/local_coverage/code_coverage/llvm-gcov.sh в Unix-формат...
Ошибка конфигурации подсистемы.
829980 829979
/home/ycy/OpenHarmony/test/testfwk/developer_test/local_coverage/code_coverage/coverage_rc/lcovrc_cov_0
/home/ycy/OpenHarmony/test/testfwk/developer_test/local_coverage/code_coverage/coverage_rc/lcovrc_cov_0@@@@@@@@@@@@@@@@@@@yes
Ошибка конфигурации подсистемы.
Ошибка: не удалось получить список подсистем, невозможно сгенерировать информацию о трассировке
Ошибка конфигурации подсистемы.
Ошибка: путь к информации о единичном тесте /home/ycy/OpenHarmony/test/testfwk/developer_test/local_coverage/code_coverage/results/coverage/reports/cxx/single_test не существует
Объединение всех файлов трассировки подсистем
Ошибка: директория отчета /home/ycy/OpenHarmony/test/testfwk/developer_test/local_coverage/code_coverage/results/coverage/reports/cxx не существует!
Создание HTML-отчета
Ошибка: файл трассировки /home/ycy/OpenHarmony/test/testfwk/developer_test/local_coverage/code_coverage/results/coverage/reports/cxx/ohos_codeCoverage.info не существует!
Основная ошибка связана с конфигурационным файлом подсистемы, что привело к невозможности сгенерировать информацию о трассировке и отчеты.### Ожидаемое поведениеОжидается, что система корректно обрабатывает запросы на сбор данных о покрытии и генерирует доступные отчеты о покрытии. Конкретные ожидания:
Отчеты о покрытии кода: /test/testfwk/developer_test/localCoverage/codeCoverage/results/coverage/reports/cxx/html
Отчеты о покрытии интерфейсов: /test/testfwk/developer_test/localCoverage/interfaceCoverage/results/coverage/interface_kits/html
./build/prebuilts_download.sh
Убедитесь, что на вашем Linux-устройстве установлен HDC и что устройство RK3568 доступно для подключения.
Установите необходимые зависимости, как описано в документации для разработчиков:
Установка lcov: sudo apt install lcov
Установка dos2unix: sudo apt install dos2unix
Установка lxml: pip install lxml
Установка selectolax: pip install selectolax
Установка CppHeaderParser: pip install CppHeaderParser
cflags = [
"-g",
"-O0",
"-Wno-unused-variable",
"-fno-omit-frame-pointer",
"-fstack-protector-strong",
"--coverage", # Добавление флага поддержки покрытия
]
```cflags_cc = [
"--coverage", # Флаг поддержки покрытия для C++ файлов
]
ldflags = [
"--coverage", # Флаг поддержки покрытия для линковщика
]
./build.sh --product-name rk3568 --build-target SoftBusAesCryptoFuzzTest --no-prebuilt-sdk
run -t FUZZ -ts SoftBusAesCryptoFuzzTest -cov coverage
Подождите некоторое время, пока тест не завершится. В случае ошибки, система выдаст сообщение об ошибке.
Вход Перед тем как оставить комментарий