Отговори на тема  [ 10 мнения ] 
Test Driven Development 
Автор Съобщение
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Сря Фев 20, 2013 4:18 pm
Мнения: 296
Местоположение: България
Мнение Test Driven Development
Някой да е запознат с TDD за ембедед? От доста хора из нета се чуват позитиви за тестовете като цяло. Аз нямам никакви off-target тестове, да си призная, и искам да се понауча да тествам поне част от кода на ПЦ.

Ето малко хвалби за ТДД: https://embeddedartistry.com/blog/2018/ ... dd-course/


Пон Юли 18, 2022 10:41 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: Test Driven Development
Какво те интересува? Концепцията е много правилна, но си иска ресурс (време, хора, пари). За ембеддед - още повече.


Пон Юли 18, 2022 4:53 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Сря Фев 20, 2013 4:18 pm
Мнения: 296
Местоположение: България
Мнение Re: Test Driven Development
Интересува ме някой прилага ли го в ембедед. Захванал съм да чета книгата https://www.amazon.com/Driven-Developme ... 193435662X, харесва ми идеята и искам да чуя мнения от хора, които са по-навътре в нещата от едно четене на книга.

Казват, че първоначалната инвестиция се изплаща.


Пон Юли 18, 2022 6:01 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: Test Driven Development
За какъв по размер и организация проект говорим?


Пон Юли 18, 2022 9:01 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Сря Фев 20, 2013 4:18 pm
Мнения: 296
Местоположение: България
Мнение Re: Test Driven Development
Нямам конкретен проект, който да чака TDD :)

Харесва ми концепцията колкото се може повече функции да се тестват без хардуер, и ТДД е стъпка в тази посока, т.е. изглежда, че трябва да се пише повече хардуерно-агностичен код, за да може да се тества.


Сря Юли 20, 2022 10:15 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: Test Driven Development
Да, тестването без хардуер не опира само до "тестването" - имам предвид че има концепции как се пише код, който е подходящ за тестване. Изолиран от зависимостите си и разцепен на дребни части - това е началото.


Чет Юли 21, 2022 2:11 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Дек 14, 2004 12:31 pm
Мнения: 3284
Мнение Re: Test Driven Development
Мога да споделя опит от гледна точка на хардуерния TDD. Т.е. как правим чиповете така, че сами да си търсят и намират грешките. От там нататък можеш да направиш паралели с embedded SW. Като цяло концепцията е изградена върху три опори:

1. Bilt-in self test (BIST) - тук вграждаме малко логика която да тества дадена функционална единица. Най-тривиалният пример е малък FSM, който да пише и чете различни pattern-и в паметта и да проверява дали прочетеното отговаря на написаното. Алтернативен пример е функция, която смята CRC на поток от данни и го прекрепя към него, преди този да бъде изпратен по комуникационнен интерфейс. От другата страна същата функция се очаква да върне същия резултат. Ако няма съвпадение значи данните са били повредени при трансфера.

2. Assertions - това трябва да ти е навик. Когато пишеш дадена функция, една част от мозъка ти винаги трябва да е заета да мисли какви стойности или комбинации от стойности са невъзможни. Съотввтно правиш проверка и ако ги видиш биеш аларма. Добра практика е да го прилагаш и на системно ниво. Примерно ако алгоритмите ти сатурират на дадена стойност, можеш да правиш проверки за нарушение на обхвата и разделителна способност. Sutherland има добра статия по темата https://sutherland-hdl.com/papers/2015- ... _paper.pdf

3. micro test bench - тестваш всички функции на най-ниско ниво, още преди да напишеш интеграционните и системни тестове. Идеята е малко bottom-up, вместо рапространеното top-down. На пръв поглед отнема повече време, но който е дебъгвал сложни системи знае, че това е само привидно. 2/3 от времето отива в тестване и 1/3 в развой. И тъй като често работата се върши от различни екипи 1/2 към 1/2 е далеч по-ефективно.


Пон Юли 25, 2022 10:20 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 06, 2007 7:44 pm
Мнения: 2786
Местоположение: Пловдив
Мнение Re: Test Driven Development
За ембедед ми изглежда много трудно приложимо. Освен тестването на логиката на отделни функции, изпълнението на програмата като цяло в една реална система с RTOS е много зависима и от това коя функция за колко време и в кой момент се изпълнява. Колко често и какви прекъсвания заемат процесорният ресурс за да обслужват хардуера / драйверите за него и т.н.

И на мен ще ми е интересно да видя нещо такова за реално приложение.


Пон Юли 25, 2022 11:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Дек 14, 2004 12:31 pm
Мнения: 3284
Мнение Re: Test Driven Development
Да, това е една от отявлените разлики между хардуерното и софтуерното решение. При хардуерът, можем с малко допълнителна логика да направим тестовете да вървят паралелно на функционалните изчисления, което ги прави non-ivasive. При софтуерът опирате до time sharing на хардуерни ресурси, който пак би могъл да бъде транспарентен, но това изисква внимателно планиране на scheduling-а с всичките му неприятни ефекти от гледна точка на скалируемост на ресурсите в бъдеще.

Но чисто теоретично, всяка една система може да бъде планирана така, че един процент от ресурсите да бъде заделен за тестване без това да нарушава нейният времеви детерминизъм. Това е един от основните аргументи в полза на time slot scheduled RTOS. И въпреки това бих предполжил, че >90% от всички ембедед системи в днешно време са базирани на прекъсвания с много примитивни scheduler-и, чиите недъзи биват компенсирани с повече изчислителна мощност...


Вто Юли 26, 2022 11:27 am
Профил WWW
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Сря Фев 20, 2013 4:18 pm
Мнения: 296
Местоположение: България
Мнение Re: Test Driven Development
@HCL - благодаря за детайлния пример. Относно assertions, ползвам ги доста, следвайки концепцията Design by Contract. Хаващат ми доста от бъговете.

Някой да има опит с интегриране на CppUTest в STM32CubeIDE? Искам тестовете да се билдват с gcc за десктоп, а самият проект с arm-none-eabi-gcc.


Сря Авг 10, 2022 12:30 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 10 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни