Что такое hardware-in-loop тестирование
Что проверяют
Понимаете ли вы, где в цепочке проверок стоит стенд с настоящим железом, и отличаете ли HIL от соседних уровней. Для тестировщика встраиваемых систем это вопрос про план тестирования: что дешевле поймать на модели, что на сборке кода под хост, а что видно только на блоке с реальными входами и выходами.
Как отвечать
Начните с сути. HIL это стенд, где тестируемый блок управления настоящий, со своей платой, прошивкой и электрическими интерфейсами, а окружение (датчики, исполнительные механизмы, физика объекта) считается моделью в реальном времени. Блок не знает, что подключён к симулятору: он видит те же сигналы и те же шины.
Дальше разложите линейку. MIL проверяет модель алгоритма, SIL тот же код, собранный под хост, PIL код на целевом процессоре с симулированным окружением, HIL целевой блок целиком. Чем правее, тем дороже прогон и тем ближе к реальности.
Зачем это нужно тестированию: повторяемость сценария, безопасность (можно оборвать датчик, замкнуть линию, снять питание), покрытие редких режимов. На стенде живут ночной регресс, внесение отказов, проверка времени реакции и трассировка тестов на требования, что критично в отраслях с сертификацией.
Где спотыкаются
Говорят, что HIL это железо плюс симуляция программы, и переворачивают картину. Реальной остаётся именно программа на целевом железе, а моделируется окружение, иначе непонятно, что вообще тестируется.
Считают стенд заменой полевым испытаниям. Модель объекта всегда упрощена, и часть дефектов (помехи, температура, износ, поведение настоящего привода) видна только на объекте. HIL сокращает число выездов, но не отменяет их.
Не думают про реальное время и про сам стенд. Если модель не укладывается в такт, а проводка и калибровка разъехались, тесты начинают падать случайно, и команда приучается перезапускать прогон вместо разбора. Стенд это тоже проверяемый объект, у него должна быть своя диагностика исправности перед запуском набора.