|
Как тестировать код для встраиваемых систем |
|
|
|
Dec 27 2011, 18:50
|

Участник

Группа: Участник
Сообщений: 52
Регистрация: 30-11-11
Пользователь №: 68 593

|
Здравствуйте. Уже достаточно давно пишу код для всяких контроллеров, но задачи были малой и средней сложности. Хватало функционального тестирования, написал программку, протестировал на весь описанный в ТЗ функционал, прошёлся по всему пользовательскому интерфейсу и Ок. Т.е. программные модули по серьёзному, раздельно, не тестировал, только прошивку целиком прямо на конечной платформе. Как-то взяло сомнение, что это правильный подход , особенно если сложность задач возрастёт и если в проекте будет больше одного программиста :) Посмотрел на книгу Мартин Р. - Чистый код. Создание, анализ и рефакторинг (Библиотека программиста) - 2010. Целая теория правильного программирования. Но применима ли эта теория для embedded кода? В общем посоветуйте плз. какую-то литературку на эту тему, может быть какие-то жизненные советы как повысить качество кода, как гарантировать , что программный модуль будет нормально стыковаться с другими модулями и в случае необходимости портироваться на другие системы, и т.д...... Заранее спасибо.
|
|
|
|
|
 |
Ответов
|
Dec 27 2011, 20:58
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(Муравей @ Dec 27 2011, 20:50)  Посмотрел на книгу Мартин Р. - Чистый код. Создание, анализ и рефакторинг (Библиотека программиста) - 2010. Целая теория правильного программирования. Но применима ли эта теория для embedded кода? Да книжонка забавная. Но акценты для embedded не совсем актуальны, ИМХО. Важнее становятся аппаратные ошибки и даже не из-за невнимательности, а из-за не полной документированности аппаратной среды в которой работает программа. Скажем что делать когда модуль DMA выдал ошибку доступа к шине, и при этом не известно ни кто ни что там пересылал по DMA, и что пропало и что передалось. И как правильно построить архитектуру чтобы справляться с такими ошибками и не затормозить систему до нуля, и не дать другим процессам уйти в состояние underflow? Потом много рассуждений о чистоте кода с точки зрения использования его группой. Тогда каждому участнику надо жертвовать своими предпочтениями ради общих правил. Это снижает производительность однозначно. Лучше думать как максимально изолировать разработчиков друг от друга чем заставлять применять общие стандарты. Во встраиваемых системах это вполне возможно использованием нескольких микроконтроллеров. Встраиваемый код не такой большой чтобы обращать внимание на его удобочитаемость. Инструменты рефакторинга из любого кода конфетку сделают за считанные часы. А вот применять как можно меньшее разнообразие синтаксический конструкций важно. Т.е. чем меньше нагружена память программиста распознаванием разных кодовых слов, макросов и знаков тем лучше. Лучше потерять переносимость, но не применять макросы и разные чудные прокладки увеличивающие вложенность функций только ради того чтобы те же указатели правильно формировались на разных архитектурах. Имена не то что должны быть удобочитаемые и понятные их просто должно быть меньше. Да, а насчет тестирования ничего сказать не могу. Не оправдывается какое-то другое тестирование кроме как на живом объекте. Лучше сконцентрировать усилия на способах надежного накопления и передачи отладочной информации с объектов и обновления firmware.
|
|
|
|
|
Dec 28 2011, 08:53
|
Местный
  
Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123

|
По моему одна из лучших книг по тестированию встроенного ПО: Testing embedded software - Bart Broekman and Edwin Notenboom Наити ее в свободном доступе не очень просто, если кто не найдет, пишите в личку - вышлю мылом. Цитата(AlexandrY @ Dec 28 2011, 00:58)  ... Потом много рассуждений о чистоте кода с точки зрения использования его группой. Тогда каждому участнику надо жертвовать своими предпочтениями ради общих правил. Это снижает производительность однозначно. Лучше думать как максимально изолировать разработчиков друг от друга чем заставлять применять общие стандарты. Во встраиваемых системах это вполне возможно использованием нескольких микроконтроллеров. Встраиваемый код не такой большой чтобы обращать внимание на его удобочитаемость. Инструменты рефакторинга из любого кода конфетку сделают за считанные часы. ... Я бы к вам не пошел работать. На проекте, где я сейчас работаю, диаметрально противоположная организация рабочего процесса. Идёт постоянный обмен опытом и ротация зон ответственности, чтоб ни один сотрудник не становился незаменимым носителем уникальных знаний. Даже если половина сотрудников отдела пойдёт в отпуск или заболеет, оставшиеся смогут выполнить их работу, пусть и медленнее. А с такой организацией труда как вы описываете, я имел "счастье" сталкиваться на прошлой работе. Больше не хочется. Этот подход работает в небольших локализованных компаниях, а в более-менее крупных и тем более распределённых, не работает даже на простых проектах. С наступающим Вас!
|
|
|
|
Сообщений в этой теме
Муравей Как тестировать код для встраиваемых систем Dec 27 2011, 18:50 Idle Цитата(Муравей @ Dec 27 2011, 21:50) Здра... Dec 28 2011, 06:45 Danis Цитата(Муравей @ Dec 27 2011, 22:50) В об... Jan 15 2012, 08:20 cg_shura Смотрите в сторону юнит-тестирования, я для юнит-т... Dec 4 2013, 17:47 demiurg_spb Так уж сложилось, что не привык писать юнит-тесты.... Dec 5 2013, 06:11  vanner Цитата(demiurg_spb @ Dec 5 2013, 10:11) Т... Dec 6 2013, 14:08   demiurg_spb Цитата(vanner @ Dec 6 2013, 18:08) А я и ... Dec 7 2013, 11:29    vanner Цитата(demiurg_spb @ Dec 7 2013, 15:29) А... Dec 9 2013, 07:27     kolobok0 Цитата(vanner @ Dec 9 2013, 11:27) ..зада... Dec 9 2013, 22:35      vanner Цитата(kolobok0 @ Dec 10 2013, 02:35) ну ... Dec 10 2013, 06:05   kolobok0 Цитата(vanner @ Dec 6 2013, 18:08) .. юни... Dec 7 2013, 22:07 andrewlekar Цитатану а теперь объясните тупому, как Вы предлаг... Dec 10 2013, 04:33 kolobok0 Цитата(andrewlekar @ Dec 10 2013, 08:33) ... Dec 11 2013, 18:11 andrewlekar ЦитатаЭто типа программист который реализует код и... Dec 11 2013, 19:07 kolobok0 Цитата(andrewlekar @ Dec 11 2013, 23:07) ... Dec 11 2013, 21:36  vanner Цитата(kolobok0 @ Dec 12 2013, 01:36) Объ... Dec 14 2013, 14:52   AlexandrY Цитата(vanner @ Dec 14 2013, 16:52) Да, а... Dec 14 2013, 20:13  Idle Цитата(kolobok0 @ Dec 12 2013, 01:36) кач... Dec 17 2013, 07:08   kolobok0 Цитата(Idle @ Dec 17 2013, 11:08) ...пров... Dec 17 2013, 22:35    Idle Цитата(kolobok0 @ Dec 18 2013, 02:35) бер... Dec 18 2013, 06:02     AlexandrY Цитата(Idle @ Dec 18 2013, 08:02) Вы про ... Dec 18 2013, 07:38      Idle Цитата(AlexandrY @ Dec 18 2013, 11:38) Эт... Dec 18 2013, 08:28      XVR Цитата(AlexandrY @ Dec 18 2013, 11:38) Эк... Dec 18 2013, 15:09 XVR Юнит тестирование применяется в больших иерархичес... Dec 16 2013, 09:38 AlexandrY Цитата(XVR @ Dec 16 2013, 11:38) Очень сл... Dec 16 2013, 10:01  XVR Цитата(AlexandrY @ Dec 16 2013, 14:01) И ... Dec 16 2013, 11:16   AlexandrY Цитата(XVR @ Dec 16 2013, 13:16) Если они... Dec 16 2013, 11:29    XVR Цитата(AlexandrY @ Dec 16 2013, 15:29) Ну... Dec 16 2013, 13:14     AlexandrY Цитата(XVR @ Dec 16 2013, 15:14) Угу. Вид... Dec 16 2013, 13:45  cg_shura Цитата(AlexandrY @ Dec 16 2013, 12:01) Ес... Dec 19 2013, 09:10   AlexandrY Цитата(cg_shura @ Dec 19 2013, 11:10) Это... Dec 19 2013, 09:50 ZASADA AlexandrY , спасибо за ссылку на тойоту, весьма по... Dec 18 2013, 08:56 Idle Вообще-то да, не пишите тесты, не. Чем меньше рыно... Dec 18 2013, 09:04 ZASADA главное не наличие товара, а чтобы покупатели наш... Dec 18 2013, 09:12 Idle Цитата(ZASADA @ Dec 18 2013, 13:12) главн... Dec 18 2013, 10:10 Idle Да, ни юнит-тестирование, ни TDD не гарантируют от... Dec 18 2013, 16:47
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|