Russian Qt Forum
Ноябрь 01, 2024, 03:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3 ... 6   Вниз
  Печать  
Автор Тема: TDD  (Прочитано 38303 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
TDD
« : Август 05, 2015, 09:40 »

Добрый день

Вот опять встретил человека который, как я понял, юзает TDD вовсю. Никогда не понимал в чем там кайф. Вику откроешь - ну такая фигня, прости господи. Сначала пишем - тест не проходит, потом еще пишем - проходит. И шо? Не говоря уже о том что выделить кусок для теста часто непросто. Наверное я чего-то не понял, поясните.

Спасибо
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #1 : Август 05, 2015, 09:47 »

Не говоря уже о том что выделить кусок для теста часто непросто.

А вот тут вы сами признались, что не умеете писать код.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Август 05, 2015, 09:59 »

Igors,  советую просто почитать книгу по TDD (Кент Бек).
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #3 : Август 05, 2015, 10:05 »

Igors,  советую просто почитать книгу по TDD (Кент Бек).
Строит глазки
Записан
Tuxford
Гость
« Ответ #4 : Август 05, 2015, 10:20 »

Добрый день

Вот опять встретил человека который, как я понял, юзает TDD вовсю. Никогда не понимал в чем там кайф. Вику откроешь - ну такая фигня, прости господи. Сначала пишем - тест не проходит, потом еще пишем - проходит. И шо? Не говоря уже о том что выделить кусок для теста часто непросто. Наверное я чего-то не понял, поясните.

Спасибо
Как фан ТДД скажу какой бенефит.
1. Существенно легче ловить баги.
2. ТДД заставляет писать более гибкий код.
3. В сулачае рефакторинга вещь просто незаменимая.
4. Хотя кода больше приблизительно в 2-3 раза, но в результате, когда проект рарастается, время разработки уменьшается.

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Август 06, 2015, 10:05 »

Igors,  советую просто почитать книгу по TDD (Кент Бек).
Ну хорошо, читаю (аттач). Быстро понял что вначале надо "накидать" (часто с заглушками). а потом уж углубляться и разрисовывать каждый класс в деталях. Сам так часто делаю. Но причем здесь какие-то "тесты", откуда они берутся, как создаются? Отдельный проект что ли делать - так это в большинстве случаев нереально.   
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Август 06, 2015, 10:10 »

Все в пределах одного проекта. Тесты выносятся в отдельную иерархию подкаталогов (один из подходов). Посмотри Креатор, например.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #7 : Август 06, 2015, 11:04 »

Я так делаю:
Есть отдельные классы для чтения, записи разных форматов файлов. Между ними есть связь в виде абстрактных классов.
Для каждого типа файла создаю тест на чтение и запись.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #8 : Август 06, 2015, 12:03 »

ТДД - вещь, придуманная маркетологами, поскольку легко позволяет вдвое увеличить стоимость проекта для заказчика с аргументами о, якобы, более стабильном и безопасном коде. В действительности же время разработки увеличивается на время поддержки тестов в живом состоянии, что означает, фактически, их переделывание в случае рефакторинга и добавления новых фич. Ну а позитив в том, что фирма, использующая ТДД, создает рабочие места для сотрудников-тестеров, которые будут заниматься только тестами и не отвлекать разработчиков от процесса разработки Улыбающийся
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #9 : Август 06, 2015, 13:03 »

У меня только 1 проект с использованием тдд. Но я вижу для себя большой плюс в том, что я могу поменять какую-то функцию в абстрактном классе и быть спокойным, что у меня ничего не порушится в наследниках.
Я вот, не представляю, как бы можно было разрабатывать Qt без тестов. Внесли какие-то изменения в QObject и как дальше быть? Есть гарантии, что библиотека функционирует полностью? Улыбающийся
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #10 : Август 06, 2015, 13:07 »

Это называется Regression Tests, немного другая штука. Регрессионные тесты очень важны, естественно. Все уже было придумано до появления бренда TDD Улыбающийся
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #11 : Август 06, 2015, 13:56 »

Все в пределах одного проекта. Тесты выносятся в отдельную иерархию подкаталогов (один из подходов). Посмотри Креатор, например.
Я использую др IDE, но и там прицепить файл (или суб-проект) не проблема. Но что писать в файле теста?  Непонимающий

Я так делаю:
Есть отдельные классы для чтения, записи разных форматов файлов. Между ними есть связь в виде абстрактных классов.
Для каждого типа файла создаю тест на чтение и запись.
Напр я знаю что в файле записана модель кубика. Значит прочитав его и визуализировав я должен увидеть кубик. Так и я делаю, но причем здесь  TDD?

Я вот, не представляю, как бы можно было разрабатывать Qt без тестов. Внесли какие-то изменения в QObject и как дальше быть? Есть гарантии, что библиотека функционирует полностью? Улыбающийся
Как говорил мой препод
Цитировать
Для того чтобы проверить схему - надо ее включить. Все что ненужно - выгорит, все что нужно - останется
Если ошибиться в QObject - полезет из всех щелей
Записан
Bepec
Гость
« Ответ #12 : Август 06, 2015, 15:23 »

TDD звучит вкусно, делать его нудно и зачастую неудобно. По крайней мере я не видел ещё IDE, которые позволяли бы делать нормальные TDD без многократного копирования уже готового кода в отдельные проекты.

Нет, простые ф-ции типо прочитать файл и проверить на синтаксис - делаются просто и быстро. А вот вещи из разряда создать объект по каким либо данным, провести над ним операцию и проверить тестом - это уже ад.

Идея хорошая, а вот реализация по TDD замедляет проект раз в 10, если не больше. Вроде бы даёт надёжность, а с другой стороны изменение пары строк в основном проекте тянет за собой изменение всех тестов связанных с этим участком, и иногда отнюдь не на пару строк.

Хотя если писать программу по четкому ТЗ, с полной моделью(архитектурой) кода, прошедшему многократные проверки всеми специалистами - тогда да, тогда TDD даст то, ради чего создан Улыбающийся

PS на мой вид это часть Идеальной Программы, именно с больших букв.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #13 : Август 06, 2015, 15:53 »

Идея хорошая, а вот реализация по TDD замедляет проект раз в 10, если не больше. Вроде бы даёт надёжность, а с другой стороны изменение пары строк в основном проекте тянет за собой изменение всех тестов связанных с этим участком, и иногда отнюдь не на пару строк.

Ну, собственно, ради этого ТДД и был придуман - чтобы искусственно завысить себестоимость продукта. Веселые селл-агенты с серьезными лицами распространяют ТДД-литературу, ТДД-методологию, проводят ТДД-семинары и тренинги Улыбающийся Двигают тренд, так сказать. Соответственно косят денюжку. Такой подход не нов - убедить, что это нужно именно ВАМ и именно СЕЙЧАС, а потом подсадить на крючок саппорта. Естественно, внедрять ТДД на фирме или нет - решают не разработчики, а верхний менеджмент. Кто-то за откат, кого-то охмурили "надежным кодом на выходе". Соответственно тратятся ресурсы в Х раз больше, чем обычное регресионное тестирование без ТДД. Это бизнес, ничего личного Улыбающийся
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Bepec
Гость
« Ответ #14 : Август 06, 2015, 16:10 »

Таки да, забыл ещё упомянуть, что нужно проверять не только работу программы, но и работу тестов и охват тестов. А чтобы тестить тесты нужны тесты и так далее Улыбающийся
Записан
Страниц: [1] 2 3 ... 6   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.133 секунд. Запросов: 22.