Переваги вбудованої тестової системи (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) через мости протоколів.
Архітектура потоку повідомлень
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
Детальна послідовність повідомлень
Деталі мосту протоколу
| Компонент | Протокол вхід | Вихід протоколу | Мета |
|---|---|---|---|
| Менеджер BIT | Внутрішній | Зенох | Публікує результати тестування |
| Графічний інтерфейс BIT | Зенох | — | Відображає результати в режимі реального часу |
| БІТ-КЛІ | Зенох | — | Моніторинг командного рядка |
| Шлюз BIT | Зенох | DDS (ВДВ) | Мости до систем транспортних засобів |
| ВДВ HUMS | Лікар-стоматолог | — | Моніторинг стану та використання |
Функції плагіна
| Функція | Опис |
|---|---|
| Динамічне завантаження | Плагіни завантажуються як спільні бібліотеки ( .so ) під час виконання. |
| Інтерфейс на основі ознак | Узгоджені характеристики TestRun та TestDetails для всіх плагінів |
| Файли конфігурації | Конфігурація на основі TOML для кожного тесту ( /etc/bit/*.toml ) |
| Відстеження версій | Кожен плагін повідомляє версію та позначку часу збірки |
| Зворотні виклики журналу | Уніфікована інфраструктура ведення журналу для всіх тестів |
| Лічильники пробігів | Автоматичне відстеження статистики успішних/неуспішних прогалин |
Створення нового плагіна
Створення власного плагіна BIT є простим:
- Реалізуйте трейт
TestRun:
impl TestRun for MyCustomTest {
fn run(&mut self) {
// Your test logic here
self.base_test.status = TestStatus::Success;
}
}- Експорт інтерфейсу плагіна:
#[no_mangle]
pub extern "C" fn create_test() -> Box {
Box::new(MyCustomTest::new())
} - Створіть файл конфігурації (необов'язково):
[my_custom_test]
frequency = 60
enabled = true
threshold = 90- Зберіть та розгорніть спільну бібліотеку в
/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
✅ Параметри тестування, керовані конфігурацією
✅ Моніторинг та ведення журналу в режимі реального часу