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

OSCHINA-MIRROR/openharmony-xts_tools

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

XTS

Введение

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

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

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

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

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

    Мини-система запускается на устройствах с памятью размером от 128 КБ и оборудованием микроконтроллерами, такими как 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

Level3

Регулярный

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

Level4

Редкий

```

Продолжение:

<p id="p1048144515457"><a name="p1048144515457"></a><a name="p1048144515457"></a>Проводит комплексное тестирование всех ключевых функций и всех атрибутов DFX, используя широкий спектр различных условий и входных данных, включая крайние случаи и сложные сценарии использования.</p>
</td>
</tr>
</tbody>
</table>

<p id="p648184584514"><a name="p648184584514"></a><a name="p648184584514"></a>Проверяет базовые функциональные возможности ключевых функций и основные атрибуты DFX с общими входными данными. Успешный результат указывает на то, что функции могут быть протестированы.</p>

<p id="p164834520453"><a name="p164834520453"></a><a name="p164834520453"></a>Level2</p>
```<p id="p1248445164516"><a name="p1248445164516"></a><a name="p1248445164516"></a>Проверяет функциональность ключевых функций при крайне аномальных предварительно заданных условиях и необычных комбинациях входных данных.</p>
</td>
</tr>
<tbody>
</tbody>
</table><p id="p148245184511"><a name="p148245184511"></a><a name="p148245184511"></a>Основной</p><p id="p348945124510"><a name="p348945124510"></a><a name="p348945124510"></a>Проверяет базовые функциональные возможности ключевых функций и основных атрибутов DFX с использованием обычных входных данных и ошибок. Успешный результат указывает на то, что функции работают корректно и готовы к бета-тестированию.</p>

**Таблица 2** Гранулярность тестовых случаев<a name="table1690733521014"></a>

<table>
<thead align="left">
<tr id="row9907143516105">
<th class="cellrowborder" valign="top" width="19.591959195919593%" id="mcps1.2.4.1.1">
<p id="p1141312416102"><a name="p1141312416102"></a><a name="p1141312416102"></a>Масштаб тестирования</p>
</th>
<th class="cellrowborder" valign="top" width="35.17351735173517%" id="mcps1.2.4.1.2">
<p id="p34131416109"><a name="p34131416109"></a><a name="p34131416109"></a>Объекты тестирования</p>
</th>
<th class="cellrowborder" valign="top" width="45.23452345234523%" id="mcps1.2.4.1.3">
<p id="p12413141171010"><a name="p12413141171010"></a><a name="p12413141171010"></a>Среда тестирования</p>
</th>
</tr>
</thead>
<tbody>
<tr id="row2907335181017">
<td class="cellrowborder" valign="top" width="19.591959195919593%" headers="mcps1.2.4.1.1">
<p id="p6414134117109"><a name="p6414134117109"></a><a name="p6414134117109"></a>LargeTest</p>
</td>
<td class="cellrowborder" valign="top" width="35.17351735173517%" headers="mcps1.2.4.1.2">
<p id="p20414104113101"><a name="p20414104113101"></a><a name="p20414104113101"></a>Функциональность сервисов, все сценарии и механическая среда испытаний (ME) и уровень сценария DFX</p>
</td>
<td class="cellrowborder" valign="top" width="45.23452345234523%" headers="mcps1.2.4.1.3">
<p id="p5414841121013"><a name="p5414841121013"></a><a name="p5414841121013"></a>Устройства, близкие к реальным устройствам</p>
</td>
</tr>
<tr id="row10907635131015">
<td class="cellrowborder" valign="top" width="19.591959195919593%" headers="mcps1.2.4.1.1">
<p id="p19414134117104"><a name="p19414134117104"></a><a name="p19414134117104"></a>MediumTest</p>
</td>
<td class="cellrowborder" valign="top" width="35.17351735173517%" headers="mcps1.2.4.1.2">
<p id="p14414104113101"><a name="p14414104113101"></a><a name="p14414104113101"></a>Основные функции сервисов, основные сценарии и уровень сценария DFX</p>
</td>
<td class="cellrowborder" valign="top" width="45.23452345234523%" headers="mcps1.2.4.1.3">
<p id="p15414841121013"><a name="p15414841121013"></a><a name="p15414841121013"></a>Эмулированные устройства</p>
</td>
</tr>
</tbody>
</table><td class="cellrowborder" valign="top" width="35.17351735173517%" headers="mcps1.2.4.1.2">
<p id="p114141241141018"><a name="p114141241141018"></a><a name="p114141241141018"></a>Модули, функциональность подсистем после интеграции модулей и DFX</p>
</td>
<td class="cellrowborder" valign="top" width="45.23452345234523%" headers="mcps1.2.4.1.3">
<p id="p14414941111015"><a name="p14414941111015"></a><a name="p14414941111015"></a>Одиночное устройство, которое действительно используется. Можно выполнять имитацию сообщений, но не следует имитировать функции.</p>
</td>
</tr>
<tr id="row1990713353100">
<td class="cellrowborder" valign="top" width="19.591959195919593%" headers="mcps1.2.4.1.1">
<p id="p641414110109"><a name="p641414110109"></a><a name="p641414110109"></a>SmallTest</p>
</td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td class="cellrowborder" valign="top" width="35.17351735173517%" headers="mcps1.2.4.1.2">
<p id="p54141541181018"><a name="p54141541181018"></a><a name="p54141541181018"></a>Модули, классы и функции</p>
</td>
<td class="cellrowborder" valign="top" width="45.23452345234523%" headers="mcps1.2.4.1.3">
<p id="p1841494131013"><a name="p1841494131013"></a><a name="p1841494131013"></a>Локальный ПК. Используйте большое количество моков для замены зависимостей от других модулей.</p>
</td>
</tr>
</tbody>
</table>

**Таблица 3** Типы тестов<a name="table18811230124619"></a>
<table>
<thead align="left">
<tr id="row48163019466">
<th class="cellrowborder" valign="top" width="19.040000000000003%" id="mcps1.2.3.1.1">
<p id="p1791784418465"><a name="p1791784418465"></a><a name="p1791784418465"></a>Тип</p>
</th>
<th class="cellrowborder" valign="top" width="80.96%" id="mcps1.2.3.1.2">
<p id="p2917164444614"><a name="p2917164444614"></a><a name="p2917164444614"></a>Определение</p>
</th>
</tr>
</thead>
<tbody>
<tr id="row682630104615">
<td class="cellrowborder" valign="top" width="19.040000000000003%" headers="mcps1.2.3.1.1">
<p id="p1091784414469"><a name="p1091784414469"></a><a name="p1091784414469"></a>Функционал</p>
</td>
<td class="cellrowborder" valign="top" width="80.96%" headers="mcps1.2.3.1.2">
<p id="p1191784414470"><a name="p1191784414470"></a><a name="p1191784414470"></a>Проверяет работоспособность системы в целом.</p>
</td>
</tr>
</tbody>
</table>```markdown
<tr id="row1821930154611">
<td class="cellrowborder" valign="top" width="19.040000000000003%" headers="mcps1.2.3.1.1">
<p id="p591714474612"><a name="p591714474612"></a><a name="p591714474612"></a>Производительность</p>
</td>
<td class="cellrowborder" valign="top" width="80.96%" headers="mcps1.2.3.1.2">
<p id="p15917154410463"><a name="p15917154410463"></a><a name="p15917154410463"></a>Проверяет способность объекта тестирования обрабатывать данные при определённых условиях и моделях нагрузки. Производительность измеряется количеством обрабатываемых данных за единицу времени, например вызовами в секунду, кадрами в секунду или объёмом событий, обрабатываемых в секунду.</p>
</td>
</tr>
<tr id="row13821030104616">
<td class="cellrowborder" valign="top" width="19.040000000000003%" headers="mcps1.2.3.1.1">
<p id="p691711440467"><a name="p691711440467"></a><a name="p691711440467"></a>Энергопотребление</p>
</td>
<td class="cellrowborder" valign="top" width="80.96%" headers="mcps1.2.3.1.2">
<p id="p159171544104616"><a name="p159171544104616"></a><a name="p159171544104616"></a>Проверяет потребление энергии объектом тестирования в течение определённого периода времени при определённых условиях и моделях нагрузки.</p>
</td>
</tr>
<tr id="row6821330114618">
<td class="cellrowborder" valign="top" width="19.040000000000003%" headers="mcps1.2.3.1.1">
<p id="p13917164454612"><a name="p13917164454612"></a><a name="p13917164454612"></a>Надёжность</p>
</td>
<td class="cellrowborder" valign="top" width="80.96%" headers="mcps1.2.3.1.2">
<p id="p159171544104618"><a name="p159171544104618"></a><a name="p159171544104618"></a>Проверяет надёжность работы объекта тестирования, то есть его способность продолжать выполнять свои задачи без отказов или ошибок при различных условиях эксплуатации.</p>
</td>
</tr>

Отсутствует перевод последнего пункта, поэтому добавил его согласно правилам перевода.

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

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

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

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

Глобализация

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

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

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

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

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

Стандарт

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

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

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

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

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

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

Перевод:

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

Система

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

Язык программирования

Мини

HCTest

C

Малый

HCPPTest

C++

Стандартный

HCUnitTests

C

4. 1. 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
  1. Напишите тестовый случай в директории 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);

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

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

    Примечание: Средство сборки ACTS — это статическая библиотека, которая будет связана с образом.

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

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

Запишите образ на разработочную плату.

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

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

Лог каждого набора тестов начинается со строки Начало выполнения набора тестов: и заканчивается строкой xx Тестов xx Ошибок xx Пропущено.

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

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

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

  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.

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

Настройка тестовых случаев

Предварительное действие тестового случая

virtual void SetUp() {
}

Очистка тестового случая

virtual void TearDown() {
}

Запись тестового случая

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

  • HWTEST: определение общих тестовых случаев, включая имя тестовой группы, имя тестового случая и аннотацию.
  • HWTEST_F: определение тестовых случаев SetUp и TearDown, включая имя тестовой группы, имя тестового случая и аннотацию.

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

HWTEST_F(TestSuite, TestCase_0001, Function | MediumTest | Level1) {
    // Выполняйте какие-либо действия
}

Создание конфигурационного файла модуля тестирования (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" ]
}

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

    ```markdown
     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.19131913191319%" 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.19131913191319%" 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>
 <td class="cellrowborder" valign="top" width="13.19131913191319%" headers="mcps1.2.4.1.3">
 <p id="p49811435125210"><a name="p49811435125210"></a><a name="p49811435125210"></a>Нет</p>
 </td>
 </tr>
 </tbody>
</table>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 ">| Действие | Описание | Обязательность |
 | --- | --- | --- |
 | beforeEach | Выполняется перед каждым тест-кейсом. Это действие уровня тест-кейса, которое выполняется перед каждым тестом. Количество вызовов равно количеству определённых тест-кейсов. Вы можете передать функцию действия как единственный параметр. | Нет |
 | afterEach | Выполняется после каждого тест-кейса. Это действие уровня тест-кейса, которое выполняется после каждого теста. Количество вызовов равно количеству определённых тест-кейсов. Вы можете передать функцию очистки как единственный параметр. | Нет |
 | describe | Определяет набор тестов. Вы можете передать два параметра: имя набора тестов и функцию набора тестов. Утверждение `describe` поддерживает вложенность. |Примечание: В таблице выше используется структура данных для представления информации, аналогичной исходному тексту, но адаптированной для удобства восприятия на русском языке. Вы можете использовать `<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>` утверждении.

</p>
</td>
<td class="cellrowborder" valign="top" width="13.19131913191319%">
<p id="p898217352527"><a name="p898217352527"></a><a name="p898217352527"></a>Да</p>
</td></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>
<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 указывают на ФУНКЦИЮ (тест функциональности), ПЕРФОРМАНС (тест производительности), ПОВЕР (тест потребления энергии), РЕЛІАБІЛЬІТЕ (тест надёжности), СЕКЮРІТЬ (тест соответствия требованиям безопасности), ГЛОБАЛ (тест целостности), КОМПАТАБІЛІТЬ (тест совместимости), ЮЗЕР (тест пользователя), СТАНДАРТ (стандартный тест), СЭФТИ (тест функций безопасности) и РЕЗИЛЕНС (тест устойчивости), соответственно.</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 указывают на МАЛ (малый масштаб тестирования), МЕДИУМ (средний масштаб тестирования) и ЛАРГ (большой масштаб тестирования), соответственно.</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 указывают на ЛЕВЕЛ0 (уровень-0 тестирования), ЛЕВЕЛ1 (уровень-1 тестирования), ЛЕВЕЛ2 (уровень-2 тестирования), ЛЕВЕЛ3 (уровень-3 тестирования) и ЛЕВЕЛ4 (уровень-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', function () { var info = app.getInfo() expect(info.versionName).toEqual('1.0') expect(info.versionCode).toEqual(3) }) })


### Упаковка тестовых случаев на основе JavaScript (для стандартной системы) <a name="section445519106559"></a>Для получения подробностей о том, как создать HAP, см. руководство по разработке приложений на JavaScript стандартной системы [Создание и сборка HAP](https://developer.harmonyos.com/ru/docs/documentation/doc-guides/build_overview-0000001055075201).

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

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

Введение

Фреймворк для разработки и тестирования актов. Развернуть Свернуть
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