1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openharmony-xts_tools

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

XTS

Введение

Подсистема набора тестов X (XTS) содержит набор сертификационных тестовых наборов OpenHarmony, включая поддерживаемый в настоящее время набор тестов совместимости приложений (ACTS) и набор тестов совместимости устройств (DCTS), который будет поддерживаться в будущем.

Эта подсистема содержит пакеты программного обеспечения ACTS и tools.- Каталог acts хранит исходный код и конфигурационные файлы тестовых случаев ACTS. ACTS помогает производителям устройств как можно раньше выявлять несовместимость программного обеспечения и обеспечивает совместимость программного обеспечения с OpenHarmony на протяжении всего процесса разработки.

  • Пакет программного обеспечения tools хранит фреймворк для разработки тестовых случаев, связанный с acts.## Типы систем

OpenHarmony поддерживает следующие типы систем:

  • Мини-система

    Мини-система работает на устройствах с памятью, равной или превышающей 128 КиБ, и оснащенных процессорами MCU, такими как ARM Cortex-M и 32-битные RISC-V. Эта система предоставляет несколько легковесных сетевых протоколов и графических фреймворков, а также широкий спектр компонентов для чтения и записи данных шины IoT. Типичные продукты включают модули подключения, сенсоры и носимые устройства для умного дома.

  • Малая система

    Малая система работает на устройствах, чья память составляет не менее 1 МиБ и которые оснащены процессорами приложений, такими как ARM Cortex-A. Эта система предоставляет расширенные возможности безопасности, стандартные графические фреймворки и возможности кодирования и декодирования видео. Типичные продукты включают умные домашние IP-камеры, электронные кошачьи глазки, маршрутизаторы и регистраторы событий (EDR) для умных поездок.

  • Стандартная система Стандартная система работает на устройствах, чья память составляет не менее 128 МиБ, и которые оснащены процессорами приложений, такими как ARM Cortex-A. Эта система предоставляет полный фреймворк приложений, поддерживающий расширенное взаимодействие, 3D GPU, композитор аппаратного обеспечения, разнообразные компоненты и богатую анимацию. Эта система применяется для дисплеев высококлассных холодильников.## Структура каталогов

/test/xts
├── acts                # Тестовый код
│   └── subsystem       # Исходный код тестовых случаев подсистем для стандартной системы
│   └── subsystem_lite  # Исходный код тестовых случаев подсистем для мини и малых систем
│   └── BUILD.gn        # Конфигурация сборки тестовых случаев для стандартной системы
│   └── build_lite      
│       └── BUILD.gn    # Конфигурация сборки тестовых случаев для мини и малых систем
└── tools               # Код тестовых инструментов

Ограничения

Тестовые случаи для мини-системы должны разрабатываться на языке C, а для малой системы — на языке C++.

Руководство по использованиюТаблица 1 Уровни тестовых случаев

Уровень

Определение

Область применения

Level0

Дымовой тест

Проверяет базовые функциональные возможности ключевых функций и базовые атрибуты DFX с наиболее распространенными входными данными. Прохождение теста указывает на то, что функции работоспособны.

Level1

Базовый

```markdown

Уровень1

Основной

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

Уровень3

Регулярный

Level2

Проверяет базовые функциональные возможности ключевых функций и базовые атрибуты DFX с распространенными входными данными. Прохождение теста указывает на то, что функции можно тестировать.

```3 ">

Проверяет функциональные возможности всех ключевых функций и всех атрибутов DFX с использованием обычных и необычных комбинаций входных данных или нормальных и аномальных предустановленных условий.

Уровень 4

Редкий

Проверяет функциональные возможности ключевых функций в условиях экстремально аномальных предустановленных значений и необычных комбинаций входных данных.

```**Таблица 2** Гранулярность тестовых случаев Используйте большое количество мок-объектов для замены зависимостей другими модулями.

Масштаб тестирования

Объекты тестирования

Среда тестирования

1 ">

LargeTest

Функциональность сервисов, функции всех сценариев, механическая силовая среда (MPE) и DFX на уровне сценария

Устройства, близкие к реальным устройствам

MediumTest

Модули, функциональность подсистем после интеграции модулей и DFX

Единственное фактически используемое устройство. Можно выполнять симуляцию сообщений, но не мокировать функции.

SmallTest

Модули, классы и функции

Локальный ПК.

**Таблица 3** Типы тестов

Тип

Определение

Функциональность

Тестирует правильность работы как сервисных, так и платформенных функций, предоставляемых тестируемым объектом для конечных пользователей или разработчиков.

Производительность

Тестирует вычислительные возможности тестируемого объекта при конкретных предустановленных условиях и нагрузочных моделях. Производительность измеряется объемом услуг, который может быть обработан за единицу времени, например, вызовами в секунду, кадрами в секунду или объемом обработки событий в секунду.

Энергопотребление

Тестирует потребление энергии тестируемым объектом в течение определенного периода времени при конкретных предустановленных условиях и нагрузочных моделях.

Надежность

Тестирует производительность службы тестируемого объекта при обычных и необычных входных условиях, а также при указанной нагрузке на службу и длительной непрерывной работе. Тест охватывает стабильность, способность к обработке нагрузки, введение сбоев и тестирование Monkey.

Безопасность

2 ">
  • Тестирует способность защиты от угроз безопасности, включая, но не ограничиваясь, несанкционированным доступом, использованием, раскрытием, повреждением, модификацией и уничтожением, чтобы обеспечить конфиденциальность, целостность и доступность информации.
  • Тестирует способность защиты приватности, чтобы гарантировать, что сбор, использование, хранение, раскрытие и уничтожение личных данных пользователей соответствуют законам и регламентам.
  • Тестирует соответствие различным спецификациям безопасности, таким как безопасный дизайн, требования безопасности и сертификация Министерства промышленности и информационных технологий (MIIT).

Глобальные

Тестирует международные данные и возможности локализации тестируемого объекта, включая многоязычное отображение, различные привычки ввода/вывода, форматы времени и региональные особенности, такие как валюта, время и культурные табу.

Совместимость

2 ">
  • Тестирует обратную совместимость приложения со своими данными, прямую и обратную совместимость с системой, а также совместимость с различными данными пользователей, такими как содержимое аудиофайлов проигрывателя и умные SMS-сообщения.
  • Тестирует обратную совместимость системы со своими данными и совместимость распространённых приложений в экосистеме.
  • Тестирует совместимость программного обеспечения с связанной аппаратурой.

Пользователь

Тестирует пользовательский опыт объекта в реальных сценариях использования. Все выводы и комментарии должны исходить от пользователей, что является субъективной оценкой в данном случае.

Стандарт

Тестирует соответствие отраслевым и корпоративным стандартам, протоколам и спецификациям.

Стандарты здесь не включают никакие стандарты безопасности, которые должны быть классифицированы как тесты безопасности.

Безопасность

Тестирует свойства безопасности тестируемого объекта для предотвращения возможных опасностей для личной безопасности, здоровья и самого объекта.

Устойчивость

Тестирует свойство устойчивости тестируемого объекта, чтобы убедиться, что он может выдерживать и поддерживать определенное рабочее состояние (включая понижение уровня) при атаках, а также восстанавливаться и адаптировать защиту к атакам для обеспечения выполнения миссии.

## Руководство по разработке тестовых случаевНеобходимо выбрать подходящий язык программирования и целевой тестовый фреймворк для разработки тестовых случаев.**Таблица 4** Тестовые фреймворки и языки тестовых случаев для различных систем

Система

Фреймворк тестирования

Язык

Мини

HCTest

C

Малая

HCPPTest

C++

Стандартная

2 ">

HJSUnit и HCPPTest

JavaScript и C++

### Разработка и компиляция тестовых случаев на основе C (для мини-системы)**Разработка тестовых случаев для мини-системы**

Фреймворк HCTest используется для поддержки тестовых случаев, разработанных на языке C. HCTest улучшен и адаптирован на основе открытого фреймворка Unity.

  1. Перейдите в репозиторий test/xts/acts, где будут храниться тестовые случаи.

    ├── acts
    │ └──subsystem_lite
    │ │ └── module_hal
    │ │ │ └── BUILD.gn
    │ │ │ └── src
    │ └──build_lite
    │ │ └── BUILD.gn
  2. Напишите тестовый случай в директории src.

    1. Импортируйте заголовочный файл фреймворка тестирования.
    #include "hctest.h"
    1. Используйте макрос LITE_TEST_SUIT для определения имен подсистемы, модуля и тестового набора.
    /**
    * @brief  Регистрирует тестовый набор с именем IntTestSuite.
    * @param  test Имя подсистемы
    * @param  example Имя модуля
    * @param  IntTestSuite Имя тестового набора
    */
    LITE_TEST_SUIT(test, example, IntTestSuite);
    1. Определите Setup и TearDown.

    Формат: Имя тестового набора + Setup, Имя тестового набора + TearDown.

    Функции Setup и TearDown должны существовать, но тела функций могут быть пустыми.

    1. Используйте макрос LITE_TEST_CASE для написания тестового случая.

    Вовлечены три параметра: имя тестового набора, имя тестового случая и свойства тестового случая (включая тип, гранулярность и уровень).

    LITE_TEST_CASE(IntTestSuite, TestCase001, Function | MediumTest | Level1) 
    {  
      // Делайте что-то 
    };
    ```    5. Используйте макрос **RUN_TEST_SUITE** для регистрации тестового набора.
    

    RUN_TEST_SUITE(IntTestSuite);

  3. Создайте конфигурационный файл (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" ]
    }
  4. Добавьте параметры сборки в файл BUILD.gn в директории acts.

    Вам нужно добавить тестовый модуль в скрипт test/xts/acts/build_lite/BUILD.gn в директории acts.

    lite_component("acts") {  
        ...
        if(board_name == "liteos_m") {
            features += [    
                ...
                "//xts/acts/subsystem_lite/module_hal:ActsDemoTest"
            ]    
        }
    }
  5. Выполните команды сборки.

    Тестовые наборы собираются вместе с версией сборки. ACTS собирается вместе с отладочной версией.

    ПРИМЕЧАНИЕ: Среда сборки ACTS — это статическая библиотека, которая будет связана с образом.

Выполнение тестовых случаев на языке C (для мини-системы)

Выполнение тестовых случаев для мини-системы

Загрузите образ на плату разработки.

Выполнение теста1. Используйте инструмент последовательного порта для входа в плату разработки и сохранения информации о последовательном порте. 2. Перезапустите устройство и просмотрите логи последовательного порта.Анализ результатов теста

Просмотрите логи последовательного порта, чей формат следующий:

Лог каждого тестового набора начинается с Start to run test suite: и заканчивается на xx Tests xx Failures xx Ignored.

Разработка и компиляция тестовых случаев на языке C++ (для стандартных и малых систем)

Разработка тестовых случаев для устройств малой системы (Для примеров стандартной системы перейдите в директорию global/i18n_standard.)

Фреймворк HCPPTest улучшен и адаптирован на основе открытого фреймворка Googletest.

  1. Перейдите в репозиторий test/xts/acts, где будут храниться тестовые случаи.

    ├── acts
    │ └──subsystem_lite
    │ │ └── module_posix
    │ │ │ └── BUILD.gn
    │ │ │ └── src
    │ └──build_lite
    │ │ └── BUILD.gn
  2. Напишите тестовый случай в директории src.

    1. Импортируйте заголовочный файл фреймворка тестирования.

    Следующее выражение включает gtest.h.

    #include "gtest/gtest.h"
    ```    2. Определите Setup и TearDown.```cpp

using namespace std; using namespace testing::ext; class TestSuite: public testing::Test { protected: // Предварительное действие тестового набора, которое выполняется перед первым тестовым случаем static void SetUpTestCase(void){ } // Действие очистки тестового набора, которое выполняется после последнего тестового случая static void TearDownTestCase(void){ } // Предварительное действие тестового случая virtual void SetUp() { } // Действие очистки тестового случая virtual void TearDown() { } };


**HWTEST_F**: определение тестовых случаев с подготовкой (SetUp) и завершением (TearDown), включая имя тестового набора, имя тестового случая и аннотацию к случаю.

Используются три параметра: имя тестового набора, имя тестового случая и свойства тестового случая (включая тип, гранулярность и уровень).

```cpp
HWTEST_F(TestSuite, TestCase_0001, Function | MediumTest | Level1) {
// Do something
}
  1. Создайте конфигурационный файл (BUILD.gn) тестового модуля.

Создайте файл сборки BUILD.gn в каждой директории тестового модуля. Укажите имя собираемой статической библиотеки и её зависимые заголовочные файлы и библиотеки в файле сборки. Каждый тестовый модуль независимо собирается в исполняемый файл .bin, который можно напрямую загрузить на плату разработки для тестирования.

Пример:

import("//test/xts/tools/lite/build/suite_lite.gni")
hcpptest_suite("ActsDemoTest") {
    suite_name = "acts"
    sources = [
        "src/TestDemo.cpp"
    ]

    include_dirs = [
        "src",
        ...
    ]
    deps = [
        ...
    ]
    cflags = [ "-Wno-error" ]
}
  1. Добавьте опции сборки в файл BUILD.gn в директории acts.

Добавьте тестовый модуль в скрипт test/xts/acts/build_lite/BUILD.gn в директории acts.

lite_component("acts") {  
...
else if(board_name == "liteos_a") {
        features += [
            ...
            "//xts/acts/subsystem_lite/module_posix:ActsDemoTest"
        ]
    }
}
```5. Выполните команды сборки.

Тестовые наборы собираются вместе с версией сборки. ACTS собирается вместе с отладочной версией.

>![](figures/icon-note.gif) **ПРИМЕЧАНИЕ:** 
>ACTS для малой системы независимо собирается в исполняемый файл \(.bin\) и архивируется в директории **suites\\acts** результата сборки.


### Выполнение тестовых случаев на основе C++ \(для стандартных и малых систем\)<a name="section128222336544"></a>

**Выполнение тестовых случаев для малой системы** В настоящее время тестовые случаи обмениваются через NFS и монтируются на плату разработки для выполнения.

**Настройка окружения**

1.  Подключите плату разработки к вашему ПК с помощью сетевого кабеля или беспроводной сети.
2.  Настройте IP-адрес, маску подсети и шлюз для платы разработки. Убедитесь, что плата разработки и ПК находятся в одной сетевой подсети.
3.  Установите и зарегистрируйте сервер NFS на ПК и запустите службу NFS.
4.  Выполните команду **mount** для платы разработки, чтобы убедиться, что плата разработки может получить доступ к общим файлам NFS на ПК.

    Формат: **mount** _IP-адрес сервера NFS_**:/**_общая директория NFS_ **/**_директория платы разработки_ **nfs**

    Пример:

    ```
    mount 192.168.1.10:/nfs /nfs nfs
    ```

**Выполнение тестовых случаев**

Запустите **ActsDemoTest.bin**, чтобы инициировать выполнение тестовых случаев, и проанализируйте логи последовательного порта, сгенерированные после завершения выполнения.### Разработка тестовых случаев на JavaScript (для стандартной системы) <a name="section159801435165220"></a>

Фреймворк HJSUnit используется для поддержки автоматизированного тестирования приложений OpenHarmony, разработанных с использованием языка JavaScript на основе фреймворка JS-приложений.

**Базовый синтаксис тестовых случаев**

Тестовые случаи разрабатываются на языке JavaScript и должны соответствовать спецификациям программирования этого языка.**Таблица 5**<a name="table13980103565212"></a>
  <table><thead align="left"><tr id="row1098093545218"><th class="cellrowborder" valign="top" width="17.92179217921792%" id="mcps1.2.4.1.1"><p id="p49811235135214"><a name="p49811235135214"></a><a name="p49811235135214"></a>Синтаксис</p>
  </th>
  <th class="cellrowborder" valign="top" width="68.88688868886888%" id="mcps1.2.4.1.2"><p id="p898183565220"><a name="p898183565220"></a><a name="p898183565220"></a>Описание</p>
  </th>
  <th class="cellrowborder" valign="top" width="13.19131913191919%" id="mcps1.2.4.1.3"><p id="p17981143512526"><a name="p17981143512526"></a><a name="p17981143512526"></a>Обязательно</p>
  </th>
  </tr>
  </thead>
  <tbody><tr id="row1598183515528"><td class="cellrowborder" valign="top" width="17.92179217921792%" headers="mcps1.2.4.1.1 "><p id="p139810358527"><a name="p139810358527"></a><a name="p139810358527"></a>beforeAll</p>
  </td>
  <td class="cellrowborder" valign="top" width="68.88688868886888%" headers="mcps1.2.4.1.2 "><p id="p198111352526"><a name="p198111352526"></a><a name="p198111352526"></a>Предварительно устанавливает действие уровня тестового набора, которое выполняется один раз перед выполнением всех тестовых случаев. Вы можете передать функцию действия в качестве единственного параметра.</p>
  </td>
  <td class="cellrowborder" valign="top" width="13.19131913191919%" headers="mcps1.2.4.1.3 "><p id="p298114355529"><a name="p298114355529"></a><a name="p298114355529"></a>Нет</p>
  </td>
  </tr>
  <tr id="row11981103512529"><td class="cellrowborder" valign="top" width="17.92179217921792%" headers="mcps1.2.4.1.1 "><p id="p20981135135215"><a name="p20981135135215"></a><a name="p20981135135215"></a>afterAll</p>
  </td>
  <td class="cellrowborder" valign="top" width="68.88688868886888%" headers="mcps1.2.4.1.2 "><p id="p39811935115217"><a name="p39811935115217"></a><a name="p39811935115217"></a>Предварительно устанавливает действие уровня тестового набора для очистки, которое выполняется один раз после выполнения всех тестовых случаев.</p>
  </td>
  </tr>
  </tbody></table>Вы можете передать функцию очистки в качестве единственного параметра. </p>
  </td>
  <td class="cellrowborder" valign="top" width="13.19131913191319%" headers="mcps1.2.4.1.3"><p id="p998110354527"><a name="p998110354527"></a><a name="p998110354527"></a>Нет</p>
  </td>
  </tr>
  <tr id="row1298116359526"><td class="cellrowborder" valign="top" width="17.92179217921792%" headers="mcps1.2.4.1.1"><p id="p898112359526"><a name="p898112359526"></a><a name="p898112359526"></a>beforeEach</p>
  </td>
  <td class="cellrowborder" valign="top" width="68.88688868886888%" headers="mcps1.2.4.1.2">```markdown
 <tr id="row149811335175215">
 <td class="cellrowborder" valign="top" width="17.92179217921792%" headers="mcps1.2.4.1.1">
 <p id="p149811335175215"><a name="p149811335175215"></a><a name="p149811335175215"></a>beforeEach</p>
 </td>
 <td class="cellrowborder" valign="top" width="68.88688868886888%" headers="mcps1.2.4.1.2">
 <p id="p149811335175215"><a name="p149811335175215"></a><a name="p149811335175215"></a>Устанавливает действие уровня тестового случая, выполняемое перед выполнением каждого тестового случая. Количество выполнений совпадает с количеством тестовых случаев, определённых с помощью <strong id="b32523248388"><a name="b32523248388"></a><a name="b32523248388"></a>it</strong>. Вы можете передать функцию действия в качестве единственного параметра. </p>
 </td>
 <td class="cellrowborder" valign="top" width="13.19131913191319%" headers="mcps1.2.4.1.3">
 <p id="p13981133585212"><a name="p13981133585212"></a><a name="p13981133585212"></a>Нет</p>
 </td>
 </tr>
 <tr id="row6982435115219">
 <td class="cellrowborder" valign="top" width="17.92179217921792%" headers="mcps1.2.4.1.1">
 <p id="p19982133517525"><a name="p19982133517525"></a><a name="p19982133517525"></a>afterEach</p>
 </td>
 <td class="cellrowborder" valign="top" width="68.88688868886888%" headers="mcps1.2.4.1.2"><p id="p1398213575219"><a name="p1398213575219"></a><a name="p1398213575219"></a>Устанавливает действие уровня тестового случая, выполняемое после выполнения каждого тестового случая. Количество выполнений совпадает с количеством тестовых случаев, определённых с помощью <strong id="b10590142313399"><a name="b10590142313399"></a><a name="b10590142313399"></a>it</strong>. Вы можете передать функцию очистки в качестве единственного параметра.</p>
</td>
<td class="cellrowborder" valign="top" width="13.19131913191319%" headers="mcps1.2.4.1.3">
<p id="p159821535195219"><a name="p159821535195219"></a><a name="p159821535195219"></a>Нет</p>
</td>
</tr>
<tr id="row16982143513521">
<td class="cellrowborder" valign="top" width="17.92179217921792%" headers="mcps1.2.4.1.1">
<p id="p598203510527"><a name="p598203510527"></a><a name="p598203510527"></a>describe</p>
</td>
<td class="cellrowborder" valign="top" width="68.88688868886888%" headers="mcps1.2.4.1.2">
<p id="p5982123595215"><a name="p5982123595215"></a><a name="p5982123595215"></a>Определяет тестовый набор. Вы можете передать два параметра: имя тестового набора и функцию тестового набора. Оператор <strong id="b7320205019400"><a name="b7320205019400"></a><a name="b7320205019400"></a>describe</strong> поддерживает вложенность.</p>
</td>
</tr>
```Вы можете использовать <strong id="b138214222410"><a name="b138214222410"></a><a name="b138214222410"></a>beforeAll</strong>, <strong id="b18677102314115"><a name="b18677102314115"></a><a name="b18677102314115"></a>beforeEach</strong>, <strong id="b1353142514113"><a name="b1353142514113"></a><a name="b1353142514113"></a>afterEach</strong> и <strong id="b131041629204111"><a name="b131041629204111"></a><a name="b131041629204111"></a>afterAll</strong> в каждом <strong id="b590433484116"><a name="b590433484116"></a><a name="b590433484116"></a>describe</strong> выражении.```3 "><p id="p898217352527"><a name="p898217352527"></a><a name="p898217352527"></a>Да</p>
  </td>
  </tr>
  <tr id="row6982113518526"><td class="cellrowborder" valign="top" width="17.92179217921792%" headers="mcps1.2.4.1.1 "><p id="p17982123510526"><a name="p17982123510526"></a><a name="p17982123510526"></a>it</p>
  </td>
  <td class="cellrowborder" valign="top" width="68.88688868886888%" headers="mcps1.2.4.1.2 "><p id="p598211352522"><a name="p598211352522"></a><a name="p598211352522"></a>Определяет тестовый случай. Вы можете передать три параметра: имя тестового случая, параметр фильтрации и функцию тестового случая.</p>
  <p id="p5205769588"><a name="p5205769588"></a><a name="p5205769588"></a>Использование параметра фильтрации:</p>
  <p id="p1545919528618"><a name="p1545919528618"></a><a name="p1545919528618"></a>Значение параметра фильтрации — это 32-битное целое число. Установка различных битов в <strong id="b045919521765"><a name="b045919521765"></a><a name="b045919521765"></a>1</strong> означает различные конфигурации:</p>
  <a name="ul6932113319395"></a><a name="ul6932113319395"></a><ul id="ul6932113319395"><li>бит 0: указывает, применяется ли параметр фильтрации. <strong id="b1193293318395"><a name="b1193293318395"></a><a name="b1193293318395"></a>1</strong> означает, что тестовый случай используется для функционального тестирования, а другие настройки параметра не применяются.</li><li>Биты 0-10: категории тестовых случаев</li><li>Биты 16-18: масштабы тестовых случаев</li><li>Биты 24-28: уровни тестирования</li></ul>
  </td></tr><p id="p7965165151011"><a name="p7965165151011"></a><a name="p7965165151011"></a><strong id="b15148755145114"><a name="b15148755145114"></a><a name="b15148755145114"></a>Категории тестовых случаев</strong>: Биты 0-10 указывают на FUNCTION (функциональное тестирование), PERFORMANCE (тестирование производительности), POWER (тестирование энергопотребления), RELIABILITY (тестирование надежности), SECURITY (тестирование соответствия безопасности), GLOBAL (тестирование целостности), COMPATIBILITY (тестирование совместимости), USER (пользовательское тестирование), STANDARD (тестирование стандартов), SAFETY (тестирование функций безопасности) и RESILIENCE (тестирование устойчивости), соответственно.</p>
  <p id="p199651555102"><a name="p199651555102"></a><a name="p199651555102"></a><strong id="b135908568519"><a name="b135908568519"></a><a name="b135908568519"></a>Масштабы тестовых случаев</strong>: Биты 16-18 указывают на SMALL (маломасштабное тестирование), MEDIUM (среднемасштабное тестирование) и LARGE (крупномасштабное тестирование), соответственно.</p>
  <p id="p296545151020"><a name="p296545151020"></a><a name="p296545151020"></a><strong id="b12181058125111"><a name="b12181058125111"></a><a name="b12181058125111"></a>Уровни тестирования</strong>: Биты 24-28 указывают на LEVEL0 (уровень-0 тестирование), LEVEL1 (уровень-1 тестирование), LEVEL2 (уровень-2 тестирование), LEVEL3 (уровень-3 тестирование) и LEVEL4 (уровень-4 тестирование), соответственно.</p>
  </td>
  <td class="cellrowborder" valign="top" width="13.19131913191319%" headers="mcps1.2.4.1.3"><p id="p17601752115716"><a name="p17601752115716"></a><a name="p17601752115716"></a>Да</p>
  </td>
  </tr>
  </tbody>
  </table>Используйте стандартный синтаксис Jasmine для написания тестовых случаев.Поддерживается спецификация ES6.1.  Сохраните тестовые случаи в директории **entry/src/main/js/test**, чья структура следующая:

    ```
    ├── BUILD.gn   
    │ └── entry
    │   └── src
    │     └── main
    │       └── js
    │         └── default               
    │           └── pages
    │             └── index             
    │               └── index.js        # Входной файл
    │           └── test                # Тестовый код
    │         └── resources             # Ресурсы HAP
    │         └── config.json           # Конфигурационный файл HAP
    ```

2.  Запустите фреймворк тестирования JS и загрузите тестовые случаи. Пример для файла **index.js**:

    ```
    // Запустите фреймворк тестирования JS и загрузите тестовые случаи.
    import {Core, ExpectExtend} from 'deccjsunit/index'

    export default {
        data: {
            title: ""
        },
        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.  Напишите единичный тестовый случай, руководствуясь следующим примером:

    ```
    // Используйте 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')
        })
    }) 
    ```### Упаковка тестовых случаев на основе JavaScript (для стандартной системы)<a name="section445519106559"></a>

Для подробностей о том, как создать HAP, см. руководство по разработке JS-приложений стандартной системы [Сборка и создание HAPs](https://developer.harmonyos.com/en/docs/documentation/doc-guides/build_overview-0000001055075201).

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Фреймворк для разработки и тестирования актов. Развернуть Свернуть
Python и 6 других языков
Apache-2.0
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/openharmony-xts_tools.git
git@api.gitlife.ru:oschina-mirror/openharmony-xts_tools.git
oschina-mirror
openharmony-xts_tools
openharmony-xts_tools
master