Russian Qt Forum
Ноябрь 22, 2024, 14:58
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
Общий
>
TDD
Страниц:
1
2
[
3
]
4
5
6
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: TDD (Прочитано 38559 раз)
sergek
Гипер активный житель
Offline
Сообщений: 872
Мы должны приносить пользу людям.
Re: TDD
«
Ответ #30 :
Август 07, 2015, 22:49 »
Вряд ли кто-нибудь сможет привести внятные примеры использования таких книжных технологий. Если они используются, то в таких-нибудь больших фирмах, которые делают софт на продажу. В нашем форуме они, очевидно, не представлены.
Можно привести еще примеры часто внедряемых, но не работающих технологий из параллельной области - СОФПИ, ITSM со всеми процессами. У меня сложилось стойкое убеждение, что внедрение этих технологий преследует цель либо убить отрасль, либо зашибить бабло на инфраструктуре и сопровождении этого все маразма. Уж извините.
Записан
Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
xokc
Птица говорун
Offline
Сообщений: 976
Re: TDD
«
Ответ #31 :
Август 08, 2015, 01:01 »
Цитата: Авварон от Август 07, 2015, 11:01
Лол, то есть у вас даже отдела тестирования нет? Какое счастье, что люди типа вас не работают на биржах/не пишут ПО для АЭС/самолетов.
Я может сильно чью то уверенность в безопасности АЭС/самолетов сейчас подорву, но на самом деле в наших предприятиях в подавляющем случае таких не то чтобы подразделений, а и должностей нет. Я, по крайней мере, ни в одном из многих известных мне лично организаций весьма схожего профиля тестировщика (в современном понимании этого слова) не видел. И уж о TTD там точно никто не задумывался. Отдел технического контроля, да есть. Но у него СОВСЕМ другие функции.
Записан
Bepec
Гость
Re: TDD
«
Ответ #32 :
Август 08, 2015, 02:04 »
Что и говорить, если должности "программист" нет... Есть инженер, старший инженер и техник
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: TDD
«
Ответ #33 :
Август 08, 2015, 08:14 »
Не, ну объявить "фигня, понты" всегда успеется. Я пытаюсь настроиться позитивно и понять светлые стороны
Цитировать
...ну что же в ней хорошего?
Ну что дурдом по ней плачет - это ясно.
Ножки... ножки как у козла рожки...
(классика советского кино)
Вот та книга что
Пантер
рекомендовал - там человек довольно увлеченно рассказывает. Я так понял что он сначала накидывает какую-то "схему тестов", причем некоторые у него даже и не компилятся (ну это уж он загнул), а потом парит как бы "тест за тестом". Др словами сначала взаимодействие и размещение ф-ционала, а потом уж расписывать классы в деталях. В этом смысл есть, но как построить "систему тестов" - хз
Также меня смущает как отрабатываются более крупные, не побоюсь этого слова, "архитектурные" изменения. Напр то же чтение obj файла. Поначалу решил хранить вертексы и фейсы просто в контейнерах. Ну ладно, сделал. Потом выяснилось что так не очень хорошо, напр для рисования с OpenGL. Переделал, теперь вместо контейнеров класс который знает что делать с геометрией. А как же с массой написанных тестов
Шо, опять все по новой?
Цитата: Bepec от Август 07, 2015, 18:45
PS я вот к примеру не смог ответить на вопрос - как сделать тест, имитирующий реакцию пользователя (щелчок кнопок, глобальные клавиши, открытие нескольких окон, ввод данных, запись данных).
Насколько я понял, это к TDD отношения не имеет, это "просто тест". А что без тестирования и отладки ничего не живет - то ясно
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: TDD
«
Ответ #34 :
Август 08, 2015, 12:45 »
Цитата: Igors от Август 08, 2015, 08:14
Также меня смущает как отрабатываются более крупные, не побоюсь этого слова, "архитектурные" изменения. Напр то же чтение obj файла. Поначалу решил хранить вертексы и фейсы просто в контейнерах. Ну ладно, сделал. Потом выяснилось что так не очень хорошо, напр для рисования с OpenGL. Переделал, теперь вместо контейнеров класс который знает что делать с геометрией. А как же с массой написанных тестов
Шо, опять все по новой?
Ну это значит, что вы не продумали использование. Очевидно, что должен быть класс с методами load/save(?) возвращающими как-то ошибку. И должен быть файл с тестом на этот класс. Если же у вас в левом месте ф-ия, к-ая читает данные в пачку контейнеров, принимая их по ссылке - это кривая "архитектура" by definition.
То, что АПИ класса меняется - это нормально. И тесты вам помогут его поменять, а не помешают. Добавили новое АПИ - исправили тесты, убедились, что работает, перешли на новое АПИ в коде, удалили старый. Можно даже не запускать приложение - 90% что регрессий вы не внесли. В случае отстутствия теста вам придется разбираться где вы там что забыли инициализировать по портянкам коллстеков в 60 вызовов.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: TDD
«
Ответ #35 :
Август 08, 2015, 14:44 »
Цитата: Авварон от Август 08, 2015, 12:45
Ну это значит, что вы не продумали использование. Очевидно, что должен быть класс с методами load/save(?) возвращающими как-то ошибку. И должен быть файл с тестом на этот класс. Если же у вас в левом месте ф-ия, к-ая читает данные в пачку контейнеров, принимая их по ссылке - это кривая "архитектура" by definition.
Мне кажется это решение (пачка контейнеров) не заслуживает осуждения. Во всяком случае именно так делают во многих open sources. С год назад тут показывалось как круто это сделать на boost::spirit - и тоже была бааальшая пачка
Достоинство obj текстовика - что вот так "тыц и готово" проходит. Конечно капитальным такое решение не назовешь, но часто большего и не требуется.
Цитата: Авварон от Август 08, 2015, 12:45
То, что АПИ класса меняется - это нормально. И тесты вам помогут его поменять, а не помешают. Добавили новое АПИ - исправили тесты, убедились, что работает, перешли на новое АПИ в коде, удалили старый. Можно даже не запускать приложение - 90% что регрессий вы не внесли. В случае отстутствия теста вам придется разбираться где вы там что забыли инициализировать по портянкам коллстеков в 60 вызовов.
Конечно приличный класс (или ф-ционал) без отладки (а значит и тестового кода) просто не пойдет (где-то да насвистел). Но TDD тут ни при чем, Вы говорите просто о нормальном тестировании. Далеко не для всех классов Вы будете его делать, далеко не всегда даже выносить тесты в отдельные файлы - может просто включите макросы тестовых печатей. Не верю что чтение obj начнете с теста "пустой файл", не будете Вы такой фигней заниматься
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: TDD
«
Ответ #36 :
Август 08, 2015, 15:03 »
Цитата: Igors от Август 08, 2015, 14:44
Мне кажется это решение (пачка контейнеров) не заслуживает осуждения. Во всяком случае именно так делают во многих open sources. С год назад тут показывалось как круто это сделать на boost::spirit - и тоже была бааальшая пачка
Не, там заполнялась структура ModelData.
Но вам говорят о другом... нужно продумывать удобные механизмы использования своих классов и тестировать эти api, а что там под капотом не должно влиять.
Записан
Bepec
Гость
Re: TDD
«
Ответ #37 :
Август 08, 2015, 15:19 »
Портянки каллстеков это именно плохая архитектура и к ТДД отношения не имеет... Просто не видно разницы - и в том и в этом случае, проверять и тестировать надо всё.
Единственное что на мой взгляд ТДД может выявить - это невнимательность программиста, приведшая к ошибке в одной(1) функции. Но это проблема начинающий специалистов, отнюдь не середнячков.
PS почему меня так напрягает тест простых ф-ций - нигде у меня тестирование простых ф-ций не нужно. Ф-ция делает то-то и то-то и делает это хорошо. Вопрос в комплексе функций...
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: TDD
«
Ответ #38 :
Август 08, 2015, 15:26 »
Цитата: Igors от Август 08, 2015, 14:44
boost::spirit
буст - говно
Цитата: Igors от Август 08, 2015, 14:44
Конечно приличный класс (или ф-ционал) без отладки (а значит и тестового кода) просто не пойдет (где-то да насвистел). Но TDD тут ни при чем, Вы говорите просто о нормальном тестировании. Далеко не для всех классов Вы будете его делать, далеко не всегда даже выносить тесты в отдельные файлы - может просто включите макросы тестовых печатей. Не верю что чтение obj начнете с теста "пустой файл", не будете Вы такой фигней заниматься
Я пишу класс, продумываю АПИ, делаю заглушки АПИ (ну там геттеры-сеттеры пишу сразу), пишу тесты на АПИ, потом заполняю класс. Это не совсем каноничное ТДД, которое требует написания теста до написания класса.
Макросы тестовых печатей - отличное тестирование:)
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: TDD
«
Ответ #39 :
Август 08, 2015, 17:16 »
Цитата: Авварон от Август 08, 2015, 15:26
Макросы тестовых печатей - отличное тестирование:)
Которое никто не отменял
Цитата: Авварон от Август 08, 2015, 15:26
Я пишу класс, продумываю АПИ, делаю заглушки АПИ (ну там геттеры-сеттеры пишу сразу), пишу тесты на АПИ, потом заполняю класс.
Продумывание API развивается "по экспоненте". Тот же пример с obj - Вы можете и не знать что дальше делать с прочитанным, поэтому пока самое разумное - считать пачку контейнеров. Ну их конечно можно объединить в класс и назвать напр ModelData, но сути это не меняет. Только потом, когда полезете в glDrawElements, Вы обнаружите что вертексы надо "расшарить". Вот тогда да - нужно думать над API, для этого появились инфа/основания.
И там будет о чем подумать. Напр в obj файле фейсы могут иметь любое число вертексов. Как же их хранить и удобно рисовать (glDrawElements)? Слабонервные начинают лепетать "у меня только треугоооольники" - но Вы же не такой, правда?
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: TDD
«
Ответ #40 :
Август 08, 2015, 17:27 »
Цитата: Igors от Август 08, 2015, 17:16
Продумывание API развивается "по экспоненте". Тот же пример с obj - Вы можете и не знать что дальше делать с прочитанным, поэтому пока самое разумное - считать пачку контейнеров. Ну их конечно можно объединить в класс и назвать напр ModelData, но сути это не меняет. Только потом, когда полезете в glDrawElements, Вы обнаружите что вертексы надо "расшарить". Вот тогда да - нужно думать над API, для этого появились инфа/основания.
Вы опять перепутали API и внутреннюю реализацию.
К тому же это пример НЕ продумывания api вообще, от слова "совсем". Все что вы собрались обнаруживать потом, вы должны были обнаружить в дали от компьютера с блокнотом в руках, только после этого вы вообще можете о чем-то начинать думать. С этого момента проектирование только начинается.
А подход, сесть за компьютер, набрать в редакторе "class MainWindow" и открыть ТЗ на проект, исключает этап проектирования. Но лучше так не делать.
Записан
poru
Самовар
Offline
Сообщений: 103
Re: TDD
«
Ответ #41 :
Сентябрь 03, 2015, 16:40 »
Цитата: Racheengel от Август 06, 2015, 15:53
... внедрять ТДД на фирме или нет - решают не разработчики, а верхний менеджмент ...
Программирование - слишком сложная интеллектуальная деятельность, чтобы можно было надеяться навязать ей узы административной системы. (Ван Тассел)
И еще... Никто не знает, в чем именно заключается тестирование, что является конечной целью и какие результаты следует получить. Принято считать тестирование законченным, если выполнение программы завершается кодом возврата 0, даже если исходные данные различаются хотя бы одним числом. (СВН)
Вопрос сторонникам технологии тестирования: Как вы будете тестировать вот этот случай?
Код
C++ (Qt)
float
a
=
123456789
;
float
b
=
123456788
;
qDebug
(
)
<<
a
-
b
;
«
Последнее редактирование: Сентябрь 03, 2015, 16:52 от poru
»
Записан
Tuxford
Гость
Re: TDD
«
Ответ #42 :
Сентябрь 03, 2015, 16:48 »
Цитата: poru от Сентябрь 03, 2015, 16:40
И еще... Никто не знает, в чем именно заключается тестирование, что является конечной целью и какие результаты следует получить. Принято считать тестирование законченным, если выполнение программы завершается кодом возврата 0, даже если исходные данные различаются хотя бы одним числом.
Размышления уровня джуниора. Если не знаете, то читайте умные книги. На такие дурацкие вопросы уже есть давно ответы.
Записан
poru
Самовар
Offline
Сообщений: 103
Re: TDD
«
Ответ #43 :
Сентябрь 03, 2015, 17:26 »
Tuxford
, читайте классические произведения.
Записан
Tuxford
Гость
Re: TDD
«
Ответ #44 :
Сентябрь 03, 2015, 17:52 »
Цитата: poru от Сентябрь 03, 2015, 17:26
Tuxford
, читайте классические произведения.
Названия в студию.
Записан
Страниц:
1
2
[
3
]
4
5
6
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...