реклама на сайте
подробности

 
 
> Как тестировать код для встраиваемых систем
Муравей
сообщение Dec 27 2011, 18:50
Сообщение #1


Участник
*

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



Здравствуйте.
Уже достаточно давно пишу код для всяких контроллеров, но задачи были малой и средней сложности. Хватало функционального тестирования, написал программку, протестировал на весь описанный в ТЗ функционал, прошёлся по всему пользовательскому интерфейсу и Ок. Т.е. программные модули по серьёзному, раздельно, не тестировал, только прошивку целиком прямо на конечной платформе.
Как-то взяло сомнение, что это правильный подход , особенно если сложность задач возрастёт и если в проекте будет больше одного программиста :)
Посмотрел на книгу Мартин Р. - Чистый код. Создание, анализ и рефакторинг (Библиотека программиста) - 2010. Целая теория правильного программирования. Но применима ли эта теория для embedded кода?
В общем посоветуйте плз. какую-то литературку на эту тему, может быть какие-то жизненные советы как повысить качество кода, как гарантировать , что программный модуль будет нормально стыковаться с другими модулями и в случае необходимости портироваться на другие системы, и т.д......
Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
andrewlekar
сообщение Dec 11 2013, 19:07
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Цитата
Это типа программист который реализует код или кто?

Да, юнит-тесты пишет программист. Можно использовать того, который пишет и код, можно другого.

Цитата
Вы конкретно писали юнит тесты? К коду который так-же сами и написали? Или как?

Да, писал. К коду, который сам же и написал.

Суть юнит-тестов не в какой-то бюрократии или 100% покрытии, а в подготовке кода к рефакторингу. Юнит-тестирование позволяет уменьшить вероятность, что что-то сломается при рефакторинге, а также предполагает переработку архитектуры кода в плане тестируемости. Эта переработка архитектуры подготавливает код к дальнейшему изменению, т.е. при добавлении новой фичи меньше вероятность, что придётся всё раскурочивать.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Dec 11 2013, 21:36
Сообщение #3


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(andrewlekar @ Dec 11 2013, 23:07) *
...Можно использовать того, который пишет и код...Суть юнит-тестов ...
в подготовке кода к рефакторингу. Юнит-тестирование позволяет уменьшить вероятность, что что-то сломается при рефакторинге,
а также предполагает переработку архитектуры кода в плане тестируемости. ..подготавливает код к дальнейшему изменению,
т.е. при добавлении новой фичи меньше вероятность, что придётся всё раскурочивать.


Замечательно..
Ну а теперь посмотрите о чём велась речь выше:

Цитата(kolobok0): "в том виде котором юзают юнит тесты они проверяют только изменение кода со временем. И больше ничего."

Цитата(vanner): "первая задача модульного тестирования - это проверка корректности работы функции (модуля), т.е.
проверка условия что при указаных входных данных получается корректный результат и/или корректная обработка ошибки.
Проверка регрессий это уже побочный эффект по-сути, при наличии ранее работоспособных тестов легко определить какое
изменение сломало модуль. "
(извините за полное цитирование)

Так, что уважаемый andrewlekar - наши с вами восприятия нахрена это нужно - имеют один вектор.
А вот господин vanner ожидает(насколько я его смог понять) = "проверка корректности работы функции" .

Я заострил внимание именно на организационном моменте. Т.к. именно он определяет качество самих тестов в
плане "корректности работы функции".
Объясняю:
Лично мне слабо понимается сам процесс написания кода программистом, и написание тестов к нему этим-же программистом.
Тесты в этом случае могут НЕ ВЫЯВИТЬ "некорректности работы функции". Т.е. вряд ли правая рука сможе
написать такого, что упустит в реализации левая. А левая вряд ли будет тестировать то, что НЕ написала(либо не знала) правая
рука одного и того-же человека.

Надеюсь мысль передал.
Остаётся только всё то вспомогательное которое не имеет отношения к качеству и уменьшению затрат при производстве
(читай при запуске в производство) программного кода. Т.е. если Вы допустили ошибку, то она честно и провериться с ошибкой
и уйдёт с ошибкой дальше....

ЗЫ
Забегая вперёд, отвечу - я не против механики. Я считаю, что метода хромает. Метода, которая увы и ах применяется повсеместно (противного
не наблюдал). Т.е. написал человек код, написал к нему тест... А как деление на ноль было так и осталось. Вряд-ли человек напишет проверку
выше по уровню знаний чем его же написанный код, который он тестирует.
Go to the top of the page
 
+Quote Post
Idle
сообщение Dec 17 2013, 07:08
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



Цитата(kolobok0 @ Dec 12 2013, 01:36) *
качество самих тестов.

Это один из моментов зачем нужен TDD. Тест может содержать ошибку. Для проверки что сам тест правильный, он выполняется два раза - до написания кода (тест должен вернуть ошибку), и после.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Dec 17 2013, 22:35
Сообщение #5


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(Idle @ Dec 17 2013, 11:08) *
...проверки что сам тест правильный, ...до написания кода (тест должен вернуть ошибку)...


Ваш пример показывает, что тест охватывает сам интерфейс, а не реализацию.
пример:

берём класс строка, который может содержать в себе и ноль так-же (ну например: стандартный CString от MFC).
Не всякий программист, обрабатывая строки это может осязать. Как следствие - режутся данные до нулевого символа.

Это как один из множества, и... "лёгкий" пример.
Поверьте мне дураку - таких нюансов очень и очень много.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Муравей   Как тестировать код для встраиваемых систем   Dec 27 2011, 18:50
- - AlexandrY   Цитата(Муравей @ Dec 27 2011, 20:50) Посм...   Dec 27 2011, 20:58
|- - neiver   По моему одна из лучших книг по тестированию встро...   Dec 28 2011, 08:53
- - 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
|- - 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 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 20:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01425 секунд с 7
ELECTRONIX ©2004-2016