Я инженер-программист, который будет/может быть нанят как инженер-программист. Я просто хочу получить представление о некоторых программных инструментах, доступных на рынке, используемых при тестировании прошивки. Можете ли вы указать их и немного объяснить, какой тип тестирования они предоставляют для прошивки? Спасибо заранее.
Каковы некоторые доступные программные средства, используемые при тестировании прошивки сегодня?
Ответ 1
Тестирование происходит в нескольких формах и может выполняться на разных этапах. Помимо проверки конструкции до того, как код даже написан, тестирование кода можно разделить на единичное тестирование, интеграционное тестирование, тестирование системы и приемочное тестирование (хотя могут быть и точные термины и количество этапов). В модели V они будут соответствовать горизонтально с этапами в требованиях и разработке дизайна. Кроме того, при разработке и обслуживании вы можете выполнить регрессионное тестирование, гарантируя, что исправленные ошибки остаются фиксированными, когда применяются другие изменения.
Что касается инструментов, то их можно разделить на статический анализ и динамический анализ. Статические инструменты анализируют исходный код без выполнения, тогда как динамический анализ связан с поведением кода во время выполнения. Некоторые (дорогие) инструменты выполняют "абстрактное исполнение", которое представляет собой метод статического анализа, который определяет, как код может потерпеть неудачу во время выполнения без фактического выполнения, этот подход является дорогостоящим с точки зрения затрат, но может обрабатывать гораздо больше путей выполнения и состояний переменных, чем традиционный динамический анализ.
Простейшей формой статического анализа является обзор кода; чтобы человек прочитал ваш код. Существуют инструменты, помогающие даже с этим якобы ручным процессом, например SmartBear Code Collaborator. Аналогично, простейшая форма динамического анализа состоит в том, чтобы просто выполнить код в своем отладчике или даже просто запустить ваш код с различными сценариями тестирования. Первый может быть выполнен программистом во время разработки и отладки блока, в то время как последний больше подходит для тестирования приемки или интеграции.
В то время как обзор кода хорошо подходит для устранения большого количества ошибок, особенно ошибок проектирования, он не настолько эффективен, возможно, при поиске определенных типов ошибок, вызванных тонкой или тайной семантикой языков программирования. Такая ошибка дает автоматическое обнаружение с использованием инструментов статического анализа, таких как инструменты Gimpel PC-Lint и FlexeLint или Программирование инструментов QA для изучения, хотя также полезны более дешевые методы, такие как установка уровня предупреждения компилятора и компиляция с несколькими компиляторами.
Инструменты динамического анализа представлены в нескольких формах, таких как анализ покрытия кода, профилирование производительности кода, анализ управления памятью и проверка границ.
Инструменты/вендоры более высокого уровня включают в себя подобные Coverity, PolySpace (инструмент абстрактного анализа), Кантата, LDRA и Klocwork. На нижнем конце (в цене, не обязательно эффективности) есть инструменты, такие как PC-Lint и Tessy, или даже open-source splint (только C) и большое количество инструментов для модульного тестирования
Ответ 2
Вот некоторые методы тестирования прошивки, которые я нашел полезными...
-
Unit test на ПК; то есть извлекать функцию из прошивки, а также компилировать и тестировать ее на более быстрой платформе. Это позволит вам, например, исчерпывающе проверить функцию, тогда как это будет непомерно трудоемким на месте.
-
Прибор обработчиков прерываний микропрограммного обеспечения с использованием бесплатного запуска аппаратного таймера: тики при входе и выходе и количество прерываний. Следите за минимальной и максимальной частотой и периодом для каждого обработчика прерываний. Эти данные могут быть использованы для проведения монотонного анализа скорости или монотонного анализа сроков.
-
Используйте стандартный протокол, например Modbus RTU, чтобы сделать массив данных состояния доступным по требованию. Это можно использовать для данных конфигурации и проверки.
-
Составьте номер версии прошивки в код, используя автоматизированный процесс сборки, например, путем получения информации о версии из репозитория исходного кода. Сделайте номер версии доступным, используя # 3.
-
Используйте lint или другой инструмент статического анализа. Требовать нулевые предупреждения от lint и от компилятора с помощью -Wall.
-
Увеличьте свои инструменты сборки, чтобы встроить CRC прошивки в код и проверить его во время выполнения.
Ответ 3
Я нашел стресс-тесты полезными. Обычно это означает, что через короткое время система получит много ввода и посмотрит, как она ее обрабатывает. Вход может быть
- Файлы с большим количеством данных для обработки. Примером может служить файл с волновыми данными, которые необходимо проанализировать с помощью устройства сигнализации.
- Данные, полученные приложением, запущенным на другом компьютере. Например, программа, которая генерирует случайный сенсорный экран, нажимает/отпускает данные и отправляет их на устройство отладочного порта.
Эти типы тестов могут вытряхивать множество ошибок (особенно в системах, где производительность критическая, а также ограничена). Хорошая система каротажа также хороша для отслеживания причин ошибок, вызванных стресс-тестом.