Я разрабатываю загрузчик с использованием компилятора XC8 C 1.12 в MPLAB X 1.60 от Microchip. Целевой чип - PIC18F87J60. Мой загрузчик выполняет некоторые дополнительные функции, которые обычно не выполняются загрузчиками. Он загружает образ приложения на флеш-память с сервера и проверяет его целостность, вычисляя хэш-сумму MD5. Кроме того, он должен пройти тест аутентификации на сервере, специфичном для этого проекта. Чтобы все это работало, я использую стек TCP / IP v5.42 от Microchip.
Сейчас я хочу тщательно протестировать загрузчик, но у меня возникли проблемы с выбором правильного метода и инструментов. У меня есть доступ к Pickit 3 ICD, но нет никакого другого специализированного оборудования, такого как логические анализаторы и т. Д. (Кроме оссцилоскопа). Загрузчик реализован в виде иерархической FSM, что может (а может и не) усложнить ситуацию еще больше.
Я думал хотя бы о модульном тесте / модульном тестировании всех различных частей загрузчика и рассматривал все состояния FSM как отдельные функции. В Интернете есть несколько фреймворков для модульного тестирования, некоторые из которых утверждают, что их можно использовать во встроенных и ограниченных средах, таких как моя.
Проблема с ними в том, что большинство из них реализовано как своего рода библиотека C, которая будет скомпилирована с остальной частью программы, но все они ожидают, что компилятор будет следовать некоторому стандарту. Компилятор XC8 действительно следует стандарту C90, но не в полной мере (очевидно, из главы «Отклонение от стандарта ANSI C» в документации). Это вызывает проблемы при компиляции фреймворков.
Я мог бы обойти эту проблему, смоделировав все оборудование, зарегистрировав доступ и протестировав свою машину для разработки под Windows 7, но это потребует огромных усилий, поскольку я использую библиотеку TCP / IP, от которой сильно зависит загрузчик. Еще одним недостатком является то, что в конечном итоге я хочу протестировать на кристалле, потому что код C может вести себя на микросхеме PIC иначе, чем на моем Intel i7.
Есть ли у кого-нибудь идеи, как правильно unit-/moduletest
мой загрузчик? Стоит ли проводить модульное тестирование такой программы на такой платформе? Могу ли я использовать какие-либо другие методики тестирования?
Требования / предварительные / примечания:
- Я говорю о методах тестирования белого ящика. На данный момент тестирование Blackbox не является болезненным. Кроме того, функционально загрузчик не скомпилирован и все функциональные требования измеримы.
- Я хочу максимально автоматизировать тесты и даже автоматически запускать тестирование, когда я нажимаю «скомпилировать».
- Нет никаких строгих требований к производительности, и у меня есть запасная память ROM, так что инструменты кода, такие как установка большого количества датчиков, не должны быть большой проблемой.
- Я далеко не гуру тестирования. Любые причудливые слова, которые я использовал выше, взяты всего за пару часов исследования, но у меня нет реального опыта тестирования.
Заранее благодарим за любые мысли и предложения.
Битджунки,