Переваги вбудованої тестової системи (BIT)

Огляд

Система вбудованого тестування (BIT) — це комплексна, модульна та розширювана платформа для тестування, розроблена для вбудованих систем на базі Linux. Вона забезпечує автоматизовану діагностику апаратного та програмного забезпечення за допомогою архітектури на основі плагінів, забезпечуючи надійність, цілісність та експлуатаційну готовність системи.


Ключові переваги

🛡️ Підвищена надійність системи

  • Проактивне виявлення несправностей до того, як збої вплинуть на роботу
  • Постійний моніторинг критично важливих системних ресурсів
  • Система раннього попередження про потенційну деградацію обладнання

⚡ Зменшення простоїв

  • Автоматизована діагностика усуває витрати на ручне тестування
  • Заплановане виконання тестів виконується у фоновому режимі
  • Миттєве сповіщення про несправності забезпечує швидке реагування

📊 Комплексне покриття

  • Перевірка апаратного забезпечення (PCI, USB, GPIO, послідовний порт, CAN, Ethernet)
  • Моніторинг системних ресурсів (процесор, пам'ять, диск)
  • Перевірка шляху передачі даних (TCP, шина CAN, послідовні порти)

🔌 Архітектура «підключи та працюй»

  • Динамічне завантаження плагіна під час виконання
  • Параметри тестування , керовані конфігурацією
  • Для додавання нових тестів не потрібні зміни в основній системі

📋 Системна інтеграція

  • Працює як рідний сервіс Linux
  • Автоматичний запуск під час завантаження
  • Стандартне керування службами ( systemctl start/stop/status )

Типи тестів та охоплення

Система BIT реалізує три основні категорії тестування, що відповідають галузевим стандартам вбудованих методологій тестування:

Індикатор увімкнення живлення (PBIT)

Тести виконуються один раз під час запуску системи для перевірки цілісності обладнання перед початком нормальної роботи.

Безперервний BIT (CBIT)

Тести, що періодично виконуються під час звичайної роботи для виявлення помилок під час виконання та виснаження ресурсів.

Заводський біт (FBIT)

Комплексні апаратні випробування, що використовуються під час виробництва та обслуговування для перевірки всіх системних інтерфейсів.


Зведена таблиця тестів

Тести BIT при ввімкненні (PBIT)

Назва тесту Опис Частота
pbit_bsp_version Перевіряє відповідність версії BSP очікуваній конфігурації Одного разу під час запуску
pbit_can Перевіряє доступність інтерфейсу шини CAN Одного разу під час запуску
pbit_checksum Перевіряє контрольні суми файлів на цілісність Одного разу під час запуску
pbit_cpu_cores Перевіряє очікувану кількість ядер процесора Одного разу під час запуску
pbit_cpu_usage Перевіряє, чи початкове використання процесора знаходиться в межах дозволених значень Одного разу під час запуску
pbit_disk_health Перевіряє стан справності диска SMART Одного разу під час запуску
pbit_disk_usage Перевіряє доступність місця на диску під час завантаження Одного разу під час запуску
pbit_dmesg_check Сканує dmesg на наявність критичних помилок Одного разу під час запуску
pbit_ethernet Перевіряє доступність інтерфейсу Ethernet Одного разу під час запуску
pbit_file_checksum Перевіряє цілісність критично важливих системних файлів Одного разу під час запуску
pbit_firewall_configuration Перевіряє правильність налаштування правил брандмауера Одного разу під час запуску
pbit_gpio Перевіряє доступність та стан контактів GPIO Одного разу під час запуску
pbit_gpu_loading Перевіряє драйвер графічного процесора та початкове завантаження Одного разу під час запуску
pbit_memory_usage Перевіряє доступну пам'ять під час запуску Одного разу під час запуску
pbit_pci_whitelist Перевіряє пристрої PCI на відповідність затвердженому білому списку Одного разу під час запуску
pbit_permissions_verification Перевіряє дозволи файлів/каталогів Одного разу під час запуску
pbit_power_test Перевіряє стан та напругу живлення Одного разу під час запуску
pbit_selinux_apparmor_status Перевіряє стан модуля безпеки Одного разу під час запуску
pbit_serial_ports Перевіряє доступність послідовного порту Одного разу під час запуску
pbit_ssh_configuration Перевіряє конфігурацію безпеки SSH Одного разу під час запуску
pbit_syslog_analysis Сканує системний журнал на наявність критичних помилок запуску Одного разу під час запуску
pbit_temperature Перевіряє початкові показники теплових вимірювань Одного разу під час запуску
pbit_usb_whitelist Перевіряє USB-пристрої на відповідність затвердженому білому списку Одного разу під час запуску

Безперервні випробування BIT (CBIT)

Назва тесту Опис Частота
cbit_bsp_version Відстежує узгодженість версій BSP Налаштовується
cbit_can Відстежує стан шини CAN та лічильники помилок Налаштовується
cbit_checksum Періодична перевірка цілісності файлів Налаштовується
cbit_cpu_cores Відстежує доступність ядер процесора Налаштовується
cbit_cpu_usage Відстежує використання процесора протягом ковзного вікна Кожні 1 с
cbit_disk_health Відстежує атрибути SMART диска Налаштовується
cbit_disk_usage Відстежує використання диска відповідно до порогових значень Кожні 30 років
cbit_dmesg Моніторинг буфера повідомлень ядра Налаштовується
cbit_dmesg_check Безперервне виявлення помилок dmesg Налаштовується
cbit_ethernet Моніторинг стану та помилок Ethernet-з'єднання Налаштовується
cbit_ethernet_status Відстежує стан Ethernet-з'єднання Налаштовується
cbit_firewall_configuration Контролює цілісність правил брандмауера Налаштовується
cbit_gpio Відстежує зміни стану GPIO Налаштовується
cbit_gpu_loading Відстежує використання графічного процесора Налаштовується
cbit_memory_usage Відстежує моделі споживання пам'яті Налаштовується
cbit_pci_whitelist Відстежує зміни пристроїв PCI Налаштовується
cbit_permissions Відстежує зміни дозволів на доступ до файлів Налаштовується
cbit_permissions_verification Безперервна перевірка дозволів Налаштовується
cbit_power_consumption Контролює споживання енергії та ефективність Налаштовується
cbit_selinux_apparmor_status Відстежує стан модуля безпеки Налаштовується
cbit_serial_ports Моніторинг доступності послідовного порту Налаштовується
cbit_ssh_configuration Відстежує зміни конфігурації SSH Налаштовується
cbit_syslog_analysis Безперервний моніторинг помилок системного журналу Налаштовується
cbit_temperature Відстежує показники та тенденції теплових показників Налаштовується
cbit_usb_whitelist Відстежує зміни на USB-пристроях Налаштовується

Заводські випробування BIT (FBIT)

Назва тесту Опис Частота
fbit_can_data Перевірка функціональності передачі/прийому шини CAN Налаштовується
fbit_gpio_data Перевіряє функціональність вводу/виводу GPIO Налаштовується
fbit_pci Перелік та перевірка пристроїв PCI Налаштовується
fbit_serial_data Перевіряє зв'язок зворотного зв'язку послідовного порту Налаштовується
fbit_ssd Перевірка продуктивності читання/запису SSD Налаштовується
fbit_system_data Збір системної інформації Налаштовується
fbit_tcp_data Тестує шляхи передачі даних Ethernet за допомогою iPerf Налаштовується
fbit_usb Перевірка читання/запису USB-пристрою Налаштовується
fbit_video Перевірка відеовиходу Налаштовується

Всього: 57 вбудованих тестів, що охоплюють перевірку обладнання, моніторинг системи та перевірку безпеки.


Архітектура плагінів

Система BIT побудована на потужній архітектурі плагінів , яка забезпечує безперешкодне розширення без зміни основного коду системи.

Як це працює

Система BIT використовує Zenoh як проміжне програмне забезпечення для обміну повідомленнями, що дозволяє розповсюджувати результати тестів у режимі реального часу клієнтам моніторингу та безперешкодно інтегруватися з системами GVA (Generic Vehicle Architecture) через мости протоколів.

Архітектура потоку повідомлень

flowchart LR subgraph Server["🖥️ BIT Server"] BM["BIT Manager"] PBIT["PBIT Plugins"] CBIT["CBIT Plugins"] FBIT["FBIT Plugins"] end subgraph Zenoh["🌐 Zenoh Network"] ZS["Zenoh Session"] end subgraph Clients["📱 BIT Clients"] GUI["BIT GUI"] CLI["BIT CLI"] end subgraph Gateway["🔗 BIT Gateway"] ZDG["Zenoh-DDS Bridge"] end subgraph GVA["🎖️ GVA Domain (DDS)"] HUMS["Health & Usage
Monitoring Service"] end PBIT -->|TestResult| BM CBIT -->|TestResult| BM FBIT -->|TestResult| BM BM -->|"Zenoh Publish
bit/{hostname}/PBIT"| ZS BM -->|"Zenoh Publish
bit/{hostname}/CBIT"| ZS BM -->|"Zenoh Publish
bit/{hostname}/FBIT"| ZS ZS -->|"Subscribe
bit/+/+"| GUI ZS -->|"Subscribe
bit/+/+"| CLI ZS -->|"Subscribe
bit/+/+"| ZDG ZDG -->|"DDS Publish
GVA::HealthStatus"| HUMS

Детальна послідовність повідомлень

sequenceDiagram participant Plugin as Test Plugin participant BM as BIT Manager participant Zenoh as Zenoh Router participant GUI as BIT GUI participant Gateway as BIT Gateway participant HUMS as GVA HUMS (DDS) Note over Plugin,HUMS: Test Execution & Result Distribution Plugin->>BM: Execute Test BM->>BM: Encode BuiltInTestResult (Protobuf) BM->>Zenoh: Publish to bit/{hostname}/CBIT par Parallel Distribution Zenoh-->>GUI: Forward Result GUI->>GUI: Display in Dashboard and Zenoh-->>Gateway: Forward Result Gateway->>Gateway: Zenoh → DDS Transform Gateway->>HUMS: Publish GVA::HealthStatus HUMS->>HUMS: Update Vehicle Health Record end Note over GUI,HUMS: Real-time monitoring on both systems

Деталі мосту протоколу

Компонент Протокол вхід Вихід протоколу Мета
Менеджер BIT Внутрішній Зенох Публікує результати тестування
Графічний інтерфейс BIT Зенох Відображає результати в режимі реального часу
БІТ-КЛІ Зенох Моніторинг командного рядка
Шлюз BIT Зенох DDS (ВДВ) Мости до систем транспортних засобів
ВДВ HUMS Лікар-стоматолог Моніторинг стану та використання

Функції плагіна

Функція Опис
Динамічне завантаження Плагіни завантажуються як спільні бібліотеки ( .so ) під час виконання.
Інтерфейс на основі ознак Узгоджені характеристики TestRun та TestDetails для всіх плагінів
Файли конфігурації Конфігурація на основі TOML для кожного тесту ( /etc/bit/*.toml )
Відстеження версій Кожен плагін повідомляє версію та позначку часу збірки
Зворотні виклики журналу Уніфікована інфраструктура ведення журналу для всіх тестів
Лічильники пробігів Автоматичне відстеження статистики успішних/неуспішних прогалин

Створення нового плагіна

Створення власного плагіна BIT є простим:

  1. Реалізуйте трейт TestRun :
 impl TestRun for MyCustomTest {
    fn run(&mut self) {
        // Your test logic here
        self.base_test.status = TestStatus::Success;
    }
}
  1. Експорт інтерфейсу плагіна:
 #[no_mangle]
pub extern "C" fn create_test() -> Box {
    Box::new(MyCustomTest::new())
}
  1. Створіть файл конфігурації (необов'язково):
 [my_custom_test]
frequency = 60
enabled = true
threshold = 90
  1. Зберіть та розгорніть спільну бібліотеку в /usr/local/lib/bit_manager/

Функції безпеки мови Rust

Система BIT реалізована на Rust , що забезпечує безпрецедентні гарантії безпеки, критично важливі для вбудованих та критично важливих для безпеки систем.

Безпека пам'яті

Функція Вигода
Без нульових вказівників Option типи запобігають розіменуванням нульових вказівників
Без переповнення буфера Перевірка меж для всіх звернень до масивів/векторів
Не використовувати після звільнення Система володіння гарантує дійсність пам'яті
Без перегонів даних Запобігання помилкам одночасного доступу під час компіляції

Чому Rust для BIT?

🔒 Безпека під час компіляції

Rust виявляє цілі категорії помилок під час компіляції , які можуть спричинити збої під час виконання в C/C++:

  • Витоки пам'яті
  • Переповнення буфера
  • Умови перегонів
  • Розіменування нульового вказівника

⚡ Абстракції з нульовою вартістю

Високорівневі функції безпеки компілюються в ефективний машинний код без накладних витрат під час виконання , що відповідає продуктивності C/C++.

🔧 Безстрашний паралельний розвиток

Модель власності забезпечує безпечне виконання багатопотокових тестів без перегонів даних:

 // Thread-safe shared state with Arc>
let shared_state = Arc::new(Mutex::new(TestState::new()));

📦 Сучасне управління залежностями

  • Менеджер пакетів вантажу забезпечує відтворюваність збірок
  • Автоматизоване вирішення залежностей
  • Вбудований фреймворк для тестування

🛡️ Типобезпечна конфігурація

Розбір конфігурації використовує систему типів Rust для раннього виявлення помилок:

 let threshold: f32 = config.get("threshold")?;  // Type-checked at compile time

Статистика безпеки

Метрика Rust проти C/C++
Помилки безпеки пам'яті Виключається під час компіляції
Класи вразливостей CVE, що запобігаються ~70% поширених вразливостей
Збої в роботі нульового вказівника Неможливо
Порушення безпеки потоків Зафіксовано під час компіляції

Інтеграція та розгортання

Служба Systemd

 # Enable automatic startup
sudo systemctl enable bit_manager

# Start the service
sudo systemctl start bit_manager

# Check status
sudo systemctl status bit_manager

Встановлення пакетів Debian

 cargo deb -p bit_manager
sudo dpkg -i target/debian/bit_manager_*.deb

Шляхи конфігурації

Шлях Мета
/etc/bit/ Файли конфігурації тестів (TOML)
/usr/local/lib/bit_manager/ Спільні бібліотеки плагінів
/var/log/bit_manager/ Файли журналів

Інспекція та моніторинг

Утиліта bit_inspect надає детальну інформацію про завантажені тести:

 # List all available tests
bit_inspect

# Get detailed information about a specific test
bit_inspect cbit_disk_usage

Приклад виводу:

 Details:
  Long-Name              Disk utilization test
  Author                 Ross Newman 
  Description            Check the disk is not nearing full
  Status                 NotRun

Plugin Details:
  Plugin Name            cbit_disk_usage
  Version                1.0.0
  Date Built             2025-03-09 01:42:11
  Run Frequency          Periodic(30s)

Короткий зміст

Система BIT забезпечує:

Комплексна діагностика обладнання та програмного забезпечення
Розширювана архітектура плагінів для користувацьких тестів
Безпечна для пам'яті реалізація в Rust
Стандартна методологія PBIT/CBIT/FBIT
Нативна інтеграція з Linux/systemd
Параметри тестування, керовані конфігурацією
Моніторинг та ведення журналу в режимі реального часу