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

 
 
> Как тестировать код для встраиваемых систем
Муравей
сообщение 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
Idle
сообщение Dec 18 2013, 06:02
Сообщение #6


Местный
***

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



Цитата(kolobok0 @ Dec 18 2013, 02:35) *
берём класс строка, который может содержать в себе и ноль так-же (ну например: стандартный CString от MFC).
Не всякий программист, обрабатывая строки это может осязать. Как следствие - режутся данные до нулевого символа.

Вы про то, что программист может забыть написать обработку такого варианта? Да, если забыл один кейс, то сто других тестов на сто других кейсов тут не помогут.

Цитата(kolobok0 @ Dec 18 2013, 02:35) *
тест охватывает сам интерфейс, а не реализацию.

Не, ну как - на каждый нюанс поведения функции свой тест.
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
|- - 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 Текстовая версия Сейчас: 31st July 2025 - 10:20
Рейтинг@Mail.ru


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