XTS子系统
Введение
XTS子系统 — это набор комплектов для тестирования на соответствие экосистеме OpenHarmony. В настоящее время он включает в себя комплект тестов на совместимость приложений (acts), который будет расширен комплектом тестов на совместимость устройств (dcts) в будущем.
В настоящее время XTS включает в себя acts и tools:
Типы систем
OpenHarmony поддерживает следующие типы систем:
Структура каталогов
/test/xts
├── acts # Тестовый код
│ └── subsystem # Подсистема стандартной системы
│ └── subsystem_lite # Подсистемы лёгкой и малой систем
│ └── BUILD.gn # Конфигурация компиляции для стандартной системы
│ └── build_lite # Конфигурация компиляции для лёгкой и малой систем
│ └── BUILD.gn # Конфигурация компиляции
└── tools # Код инструментов
Ограничения
Язык разработки для лёгких систем — C, для малых систем — C++.
Использование
Таблица 1. Уровни тестов
Уровень | Определение | Область тестирования |
---|---|---|
Level0 | Дымовой тест | Проверка основных функций и базовых свойств DFX на наиболее распространённых входных данных. Показывает, что функции работают на базовом уровне. |
Level1 | Базовый | Проверка всех основных функций и свойств DFX на обычных входных данных. Позволяет провести базовое тестирование функций. |
Level2 | Проверка функций и свойств DFX в различных сценариях использования. Позволяет провести более детальное тестирование функций. |
Уровень детализации | Проверяемые функции | Условия тестирования |
---|---|---|
Level 3 | Все функции и свойства DFX в различных комбинациях стандартных и нестандартных входных данных или предустановленных условий. | |
Level 4 | Поведение ключевых функций при экстремальных условиях, которые трудно воспроизвести, и в случае аномальных входных данных. |
Примечание: оригинальный текст не содержит ошибок. В запросе текст технической направленности из области разработки и тестирования программного обеспечения. Основной язык текста запроса — китайский.
В среде разработчика для личного использования проводится тестирование, по возможности не зависящее от других модулей, с большим количеством MOCK.
Таблица 3. Типы тестирования
Название типа тестирования | Определение |
---|---|
Function | Проверка правильности реализации бизнес-функций объекта тестирования, которые могут быть полезны как конечному пользователю, так и разработчику. Бизнес-функции включают в себя деловые функции и функции платформы. |
Performance | Проверка способности объекта тестирования обрабатывать данные при определённых условиях нагрузки. Способность обработки обычно измеряется такими показателями, как количество вызовов в секунду, частота кадров в секунду или объём обрабатываемых событий в секунду. |
Power | Проверка энергопотребления объекта тестирования при определённых условиях нагрузки за определённый период времени. |
Reliability | Проверка стабильности работы объекта тестирования в нормальных и аномальных условиях ввода данных, а также при высокой нагрузке и длительном непрерывном использовании. Включает в себя проверку на устойчивость, нагрузку, внедрение ошибок и тестирование с использованием Monkey. |
Security | Проверка защиты системы от злонамеренных угроз, таких как несанкционированный доступ, использование, утечка, повреждение, модификация или уничтожение данных. Цель — обеспечить конфиденциальность, целостность и доступность информации. Также включает в себя защиту личных данных пользователей и соблюдение различных стандартов безопасности. |
Global | Проверка наличия поддержки международных данных и локализации в объекте тестирования. Включает проверку языкового отображения, привычек ввода/вывода, отображения времени и региональных особенностей, таких как валюта и часовые пояса. |
Compatibility | Когда объект тестирования является приложением, включает проверку обратной совместимости собственных данных приложения, прямой и обратной совместимости с системой, а также совместимости с данными разных пользователей (например, формат аудиофайлов для проигрывателя или содержимое SMS для интеллектуального SMS). C-язык: использование HJSUnit и hcpptest |
HJSUnit, hcpptest.
Руководство по разработке и компиляции примеров использования C для лёгковесных систем (подходит для разработки сценариев использования лёгких продуктов)
Пример: разработка сценария использования теста для легковесной системы
В настоящее время используется тестовая среда hctest, которая поддерживает разработку тестов на языке C. Она основана на открытой тестовой среде Unity.
Каталог структуры каталогов примеров: примеры тестов хранятся в папке test/xts/acts.
├── acts
│ └──subsystem_lite
│ │ └── module_hal
│ │ │ └── BUILD.gn
│ │ │ └── src
│ └──build_lite
│ │ └── BUILD.gn
Написание примеров в каталоге src.
2.1. Ссылка на тестовую среду:
#include "hctest.h"
2.2. Использование макроопределения LITE_TEST_SUIT для определения имени подсистемы, модуля и набора тестов.
LITE_TEST_SUIT(test, example, IntTestSuite);
2.3. Определение Setup и TearDown.
Имена: имя набора тестов + Setup, имя набора тестов + TearDown. Setup и TearDown должны существовать, но могут быть пустыми функциями.
2.4. Используйте макроопределение LITE_TEST_CASE для написания тестов. Включает три параметра: имя набора тестов, имя теста, атрибут теста (тип теста, гранулярность теста, уровень теста).
LITE_TEST_CASE(IntTestSuite, TestCase001, Function | MediumTest | Level1) { //do something };
2.5. Используйте макроопределение RUN_TEST_SUITE для регистрации набора тестов.
RUN_TEST_SUITE(IntTestSuite);
Файл конфигурации модуля тестирования (BUILD.gn):
Создайте файл BUILD.gn в каждом каталоге тестового модуля, чтобы указать имя статической библиотеки после компиляции, зависимые заголовочные файлы и зависимые библиотеки и т. д. Конкретный метод заключается в следующем:
import("//test/xts/tools/lite/build/suite_lite.gni") hctest_suite("ActsDemoTest") { suite_name = "acts" sources = [ "src/test_demo.c", ] include_dirs = [ ] cflags = [ "-Wno-error" ] }
Добавьте параметры компиляции в acts в BUILD.gn.
Необходимо добавить тестовый модуль в файл компиляции acts, путь к файлу компиляции: test/xts/acts/build_lite/BUILD.gn.
lite_component("acts") {
...
if(board_name == "liteos_m") {
features += [
...
"//xts/acts/subsystem_lite/module_hal:ActsDemoTest"
]
}
}
При компиляции версии промежуточное звено набора тестов acts будет скомпилировано в статическую библиотеку, а затем связано с зеркальным изображением версии.
Примечание: Промежуточное звено набора тестов acts при компиляции — это статическая библиотека, которая в конечном итоге связана с зеркальным отображением версии.
Инструкции по выполнению тестов на C (подходят для разработки сценариев использования лёгковесных систем)
Поместите зеркальное отображение версии на целевую плату разработки, а затем войдите в систему с помощью последовательного порта и сохраните информацию о последовательном порту. Перезагрузите устройство и просмотрите журнал последовательного порта.
Анализ результатов теста:
Каждый набор тестов начинается с «Start to run test suite» и заканчивается «xx Tests xx Failures xx Ignored».
Инструкция по разработке и компиляции тестов на C++ (подходит для небольших систем и стандартных систем)
Пример: Разработка тестов для небольшой системы (стандартные системы см. конкретный каталог образцов: global/i18n_standard).
Текущая используемая тестовая среда — hcpptest, основанная на открытом тестовом фреймворке googletest.
Структура каталога примеров: тестовые примеры хранятся в папке test/xts/acts.
├── acts
│ └──subsystem_lite
│ │ └── module_posix
│ │ │ └── BUILD.gn
│ │ │ └── src
│ └──build_lite
│ │ └── BUILD.gn
Примеры в src:
2.1. Ссылка на тестовый фреймворк:
Необходимо включить gtest.h, например: #include «gtest/gtest.h».
#include "gtest/gtest.h"
2.2. Определите Setup и TearDown:
using namespace std; using namespace testing::ext; class TestSuite: public testing::Test { protected: // Preset action of the test suite, which is executed before the first test case static void SetUpTestCase(void){ } // Test suite cleanup action, which is executed after the last test case static void TearDownTestCase(void){ } // Preset action of the test case virtual void SetUp() { } // Cleanup action of the test case virtual void TearDown() { } };
2.3. Используйте HWTEST или HWTEST_F для написания тестовых примеров.
Обычное определение тестового примера: HWTEST (имя набора тестов, имя тестового примера, примечание к примеру).
Определение тестового примера с SetUp и TearDown: HWTEST_F (имя набора тестов, имя тестового примера, примечания к примеру).
Макроопределение включает три параметра: имя набора тестов, имя тестового примера и атрибуты тестового примера (тип теста, детализация теста, уровень теста).
HWTEST_F(TestSuite, TestCase_0001, Function | MediumTest | Level1) {
// do something
}
Атрибуты файла конфигурации тестового примера включают имя набора тестов и имя тестового примера. afterEach
Условие очистки на уровне тестовых случаев, выполняется после завершения каждого тестового случая. Количество выполнений соответствует количеству определённых тестовых случаев в it. Поддерживает один параметр: функция действия очистки.
describe
Определяет тестовый набор. Поддерживает два параметра: имя тестового набора и функция тестового набора. describe поддерживает вложение, и каждый describe может определять beforeAll, beforeEach, afterEach и afterAll.
it
Описывает один тестовый случай. Поддерживает три параметра: название случая, параметры фильтрации и функция случая.
Примечание:
Параметры фильтрации: 32-битный параметр типа Int, где 0 бит означает отсутствие фильтрации, а по умолчанию выполняется; 0–10 бит означают тип тестового примера; 16–18 бит — масштаб тестового примера; 24–28 бит — уровень теста.
Типы тестовых примеров: — 0–1 бит: FUNCTION — тестирование метода класса; — 2–3 бита: PERFORMANCE — тестирование производительности; — 4–5 бит: POWER — тестирование энергопотребления; — 6–7 бит: RELIABILITY — надёжное тестирование; — 8–9 бит: SECURITY — тестирование безопасности; — 10–11 бит: GLOBAL — интеграционное тестирование; — 12–13 бит: COMPATIBILITY — тестирование совместимости; — 14–15 бит: USER — пользовательское тестирование; — 16–17 бит: STANDARD — стандартное тестирование; — 18–19 бит: SAFETY — тестирование характеристик безопасности; — 20–21 бит: RESILIENCE — нагрузочное тестирование.
Масштаб тестовых примеров: — 16 бит: SMALL — небольшой тест; — 17 бит: MEDIUM — средний тест; — 18 бит: LARGE — большой тест.
Уровень тестов: — 24 бит: LEVEL0-0 — нулевой уровень тестирования; — 25–26 бит: LEVEL1-1 — первый уровень тестирования; — 27–28 бит: LEVEL2-2 — второй уровень тестирования; — 29–30 бит: LEVEL3-3 — третий уровень тестирования; — 31–32 бит: LEVEL4-4 — четвёртый уровень тестирования. ``` onInit() { this.title = this.$t('strings.world'); },
onShow() { console.info('onShow finish') const core = Core.getInstance() const expectExtend = new ExpectExtend({ 'id': 'extend' }) core.addService('expect', expectExtend) core.init() const configService = core.getDefaultService('config') configService.setConfig(this) require('../../../test/List.test') core.execute() },
onReady() { }
3. Пример юнит-теста:
// Example1: Использование HJSUnit для юнит-тестирования
describe('appInfoTest', function () {
it('app_info_test_001', 0, function () {
var info = app.getInfo()
expect(info.versionName).assertEqual('1.0')
expect(info.versionCode).assertEqual('3')
})
})
### Компиляция и упаковка кода на JS (для стандартных систем)
Для компиляции пакета hap см. [Руководство по разработке приложений на JS для стандартных систем](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/build_overview-0000001055075201).
## Связанные репозитории:
* [xts_acts](https://gitee.com/openharmony/xts_acts)
* [xts_tools](https://gitee.com/openharmony/xts_tools)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )