Имя: Пароль:
IT
IT-новости
TDD (Разработка через тестирование)
0 wangoff
 
07.02.16
03:37
Камрады, всем доброй ночи!
Поделитесь опытом, знаете ли (быть может, сами практикуете), есть ли в стране герои, которые применяют TDD?
Какие выводы, результаты и вообще?

P.S. Чет не разобрался с веткой, прошу анафеме не предавать, секции "Разработка" или как-то так не нашел.
1 Злопчинский
 
07.02.16
03:55
Tdd отстой
Рулит bdd
Смотри silver bullet
На ИС есть публикации

Пока можно сказать так
Все жти фишки применяются в основном командами которые пилят чтото с нуля

Большей части одинэсников они нафиг не сдались
Ибо на тех задачах на которых они сидят использование фишек существенно увеличивает время разработки. А клиенту фишки программеров пофиг

Имхо
Могу ошибаться
2 wangoff
 
07.02.16
03:56
(1) Кстати, раз про Пулю заговорили...
Кто-нибудь обучался там? Есть впечатления?
3 Злопчинский
 
07.02.16
03:58
4 wangoff
 
07.02.16
03:58
(3)
Спасибо. Про BDD интересно.
5 Хранимая Процедура
 
09.02.16
23:08
(0) - есть очень позитивный опыт. Но нужны хорошие инструменты. А они платны (wallaby.js)

(1) ты так говоришь, как будто понимаешь разницу между этими понятиями.
6 Хранимая Процедура
 
09.02.16
23:10
BDD - это типа стиль написания ассертов, да?

а что там меняется из-за переименования понятия?
7 Aleksey
 
09.02.16
23:11
(6) Самовнушение
8 Хранимая Процедура
 
09.02.16
23:12
Советую ознакомиться с гуру автотестов:

http://de.slideshare.net/orgeirIngvarsson/pptx8-38364112

http://de.slideshare.net/orgeirIngvarsson/tao-and-test-automation?related=1

и далее по ссылкам.


Ах да, ты запомни: TDD практикуют только пассивные геи
9 Хранимая Процедура
 
09.02.16
23:14
если серьезно, то TDD очень хорошо помогает, когда нужно разорвать зависимости (писать код в отрыве от базы данных, файловой системы, внешних сервисов) и при написании кода на какой нибудь динамической фигне типа JS.
10 Хранимая Процедура
 
09.02.16
23:15
я не понимаю смысла его использовать в 1С. что там можно писать по TDD?
11 Хранимая Процедура
 
09.02.16
23:18
и TDD обычно практикуется в эджайле, когда юнит тесты очень помогают другому человеку верифицировать код, при white box верифицировании.


Конфигурации для 1С разве дорабатываются в скраме?
12 Хранимая Процедура
 
09.02.16
23:19
(7) - ну да, я тоже пишу в BDD стиле. Но книжки читаю по TDD.
13 Хранимая Процедура
 
09.02.16
23:21
изучаем:  http://xunitpatterns.com/


Я сначала нифига не понял, потом въехал.
14 Хранимая Процедура
 
09.02.16
23:34
очень интересная ссылка:

https://habrahabr.ru/post/275249/
15 wangoff
 
10.02.16
01:36
(14) А в 1Ч ты что делаешь? Самоутверждаешься, или готовишься войти в дело к выходу 1С 9.0?
16 Хранимая Процедура
 
10.02.16
09:35
(15) - я ничего не делаю. А ты что делаешь в моей ветке по ТДД? А ну быстро иди Месароша изучать.

Чтоб все антипаттерны юнит тестирования к вечеру выучил.

А то ишь поразвелось тут умников, которые делают отладку ручную.
17 Хранимая Процедура
 
11.02.16
11:37
> готовишься войти в дело к выходу 1С 9.0

а ты так говоришь, как будто девятке вся разработка будет вестись в TDD стиле.

И большинство 1Сников к этому будут готовы.
18 Garykom
 
гуру
11.02.16
11:41
(17) не будет 1С 9.0 в ближайшие 5 лет
потому что на java пилят вроде, а там проблема есть

форкнут сразу
19 Хранимая Процедура
 
11.02.16
12:21
(18) - да да да. нужно было пилить на Моне
20 Garykom
 
гуру
11.02.16
13:01
(19) хз шо за "Моне", но на Mono пилить тоже самое что и на java - форкнут аналогично
21 artbear
 
11.02.16
13:03
Есть герои по ТДД
(1) слишком сильное заявление. БДД и ТДД стоят довольно близко. просто часто ТДД считают именно разработкой мелких фич, мелких тестов, а это не так.
22 Хранимая Процедура
 
14.02.16
22:27
(21) - а чем на самом деле является ТДД?
23 Asmody
 
14.02.16
22:44
(22) религией
24 Aleksey
 
14.02.16
22:45
(22) Только Для Девочек

Настоящие мужики таким не балуются
25 Asmody
 
14.02.16
22:48
(24) Точно! Настоящие мужики используют метод СиБО: Сразу и Без Ошибок.
26 Aleksey
 
14.02.16
22:50
Поясните мне малограмотному картинку на вике про ТДД

https://ru.wikipedia.org/wiki/Разработка_через_тестирование

https://upload.wikimedia.org/wikipedia/ru/b/b3/Test-driven-development-ru.png

Алгоритм ТДД

Пишем тест
Если тест прошел, тогда ... пишем тест

Т.е. если мы пишем тест сразу и без ошибок, то мы никогда не передем к написанию программы а будем вечно писать тест?
Или я не прав?
27 Garykom
 
гуру
14.02.16
22:51
(25) Метод кста превосходный.
Но ни у кого (исключения несколько на штук на несколько тысяч прогов) не получается без опыта десятков тысяч часов кодинга
28 Garykom
 
гуру
14.02.16
22:53
(26) Не тест пишем сразу и без ошибок, а код сразу без ошибок.

Суть написали тест(ы), добились что код их проходит.
Далее написали новый код и с 99% вероятностью тесты падают - потому что в тестах этот код "не тестится" он просто не прдусмотрен.
Далее исправляем/пишем новые тесты и правим код пока не пройдут тесты и т.д.
29 Aleksey
 
14.02.16
22:55
(28) Смотри картинку. Если тест НЕ прошел, тогда переходим к написанию кода
А если тест прошел, тогда переходим к написанию ТЕСТА,, Ты же пишешь наоброт

Ну и кому верить, вики или тебе?
30 Garykom
 
гуру
14.02.16
22:55
(28)+ это примерно как вместо того чтобы прыгать много раз не глядя (и потом возвращаться прыгая по другому),
перед каждым прыжком сначала смотрим туда ли мы попали для следующего прыжка
и если попали при прыжке не туда то исправляем нашу позицию на правильную
31 Garykom
 
гуру
14.02.16
22:56
(29) Нет, просто тест вперед пишут ))
Т.е. мы знаем какой код хотим написать и пишем тест который будет его проверять - а так как кода еще нет то тест то и не проходит ))
32 Garykom
 
гуру
14.02.16
22:57
(31)+ возвращаясь к прыжкам это перед тем как прыгнуть мы сначала рисуем позицию кружок куда нуна прыгнуть

и если прыгнули не туда (тест не прошел) то назад и заново прыгаем ))
33 Garykom
 
гуру
14.02.16
22:59
(32)+ т.е. будущий кружок это тест, а мы сча не в этом кружке стоим - тест перед прыжком (написанием кода) не прошел потому что еще не прыгали ))
34 Aleksey
 
14.02.16
23:00
Это я все понимаю, я не понимаю алгоритм на картинке , а точнее что такое "код" в данном контексте. Т.е. код чего,. теста или основной программы.?
35 Garykom
 
гуру
14.02.16
23:02
(33) "написать код" -  основной программы,
"написать тест" - код теста в самом начале
36 Aleksey
 
14.02.16
23:03
Ну насколько я понимаю в данном случае я просту вставляю в код фейковй заглушки которые возвращают нужный результат без всякого алгоритма, т.е. при написании теста я считаю что если тест прошел, значит все хорошо, и можно приступать к написанию кода, т.е. к замену фейковых заглушик на реальный алгоритм. Потом опять запускаю тест. Тест пройден - значит алгоритм рабочий
37 Злопчинский
 
14.02.16
23:03
я вот тоже как-то с трудом это на отвлеченных фразах/примерах понимаю... можно сказать так: пока не увижу как это работает вживую - не поверю...
38 Злопчинский
 
14.02.16
23:05
(36) итого: я подгоняю результат работы под правильный результат теста. дает ли это написание правильного кода? - хз... лочень сомневаюсь.. стоит только не так сформулировать тест и все... получится попа..?
39 Garykom
 
гуру
14.02.16
23:07
(36) Боюсь не понял главной фишки ))

Никаких фейковых заглушек, точнее сначала пишется тест который должен пройти "на заглушке", пустой код не проходит - пишем заглушку - тест прошел - пишем уже тест для не совсем заглушки - пишем код внутри заглушки
40 Garykom
 
гуру
14.02.16
23:08
(39)+ в смысле "заглушки" снаружи это нормальный код сразу, просто внутри их тест не проверят пока, поэтому и заглушка
41 Aleksey
 
14.02.16
23:08
(38) Ну как бы основная фишка теста именно в последующем сопровождении. Когда Вася внес исправления и всё сломал.
И вот тест позволяет проверить что то что работало и сейчас работает. Не более того
42 Garykom
 
гуру
14.02.16
23:09
(41) не только что просто сломал, а быстро понять в каком месте оно ломается

это нечто отладчика включенного сразу в код программы и контролирующего выполнение
43 Aleksey
 
14.02.16
23:09
(39) А теперь смотри внимательно картинку. Тест прошел - > пишем тест, до тех по пока тест не будет проходить
44 Aleksey
 
14.02.16
23:13
(42) Проблема в том что оно работает только по маячкам. Если маячок не выставлен, то ты никогда не узнаешь что Вася что-то сломал.

Яркий пример типовые. Да 1С проверяет, но в качестве маячков у них пользователь с полными правами. Поэтому каждое изменения в коде у них проходит тест, но в реальности у пользователя с ограниченными правами программа не работает, в лучшем случае напишет просто ошибка доступа, в худшем программа закрывается с невнятной ошибкой
45 Garykom
 
гуру
14.02.16
23:13
(43) Правильно! Тест на заглушке прошел, поэтому нужно написать тест для проверки кода внутри заглушки.
Причем такой тест чтобы "заглушка" его точно не прошла ))
46 Garykom
 
гуру
14.02.16
23:14
(44) Это они пожмотили на покрытии тестами. Нуна же под всеми комбинациями наборов прав тестить - это доп время нехилое
47 Aleksey
 
14.02.16
23:15
(45) Что то я совсем запутался
48 Garykom
 
гуру
14.02.16
23:16
(47) -А можно утром стулья, а вечером деньги
- Можно, но деньги вперед!
49 Garykom
 
гуру
14.02.16
23:17
(48)+ пока денег не хватает (тест проходит) - значит мало кода написали (мало денег дали)
50 Garykom
 
гуру
14.02.16
23:18
(49)+ *мало кода теста написали
51 Aleksey
 
14.02.16
23:19
ты говоришь одно, а на картинке вижу другое. При этом ты говоришь картинка правильная.
Правда я исхожу из видео про БДД из той ветки
52 Злопчинский
 
14.02.16
23:19
(45) сто якорей вам в ... ;-)
если я буду писать такие тесты, чтобы заглушка не прошла - то заглущка будет целиком состоять из попыток пройти тест - но будет ли при этом рождаться функционально нужный пользователю код.???
53 Garykom
 
гуру
14.02.16
23:22
(52) да это есть такое TDD по сравнению с СиБО (25) на порядки медленнее, но он повышает вероятность правильности кода
54 Aleksey
 
14.02.16
23:24
И что удивительно, без неделю месяц обсуждаем, постоянно просим разобрать рабочий пример по шагам, но никто из сторонник метода так и не осилил, все только абстракциями разговаривают.
55 Garykom
 
гуру
14.02.16
23:36
Простой пошаговый пример:

1. Нужно написать функцию в которую передается в числа и операция между ними, и возвращается результат

2. Пишем тест
Если МояФункция(число1, число2, операция) <> Неопределено Тогда
ТестПрошел();
КонецЕсли;

3. Функции нету - тест свалится с "нет функции"

4. Пишем код
Функция МояФункция(число1, число2, операция)
Возврат Неопределено;
КонецФункции

5. Тест не пройдет, можно писать дальше код

6. Пишем код
Функция МояФункция(число1, число2, операция)
Результат  = Неопределено;
  Если операция = "+" Тогда
  Результат = число1 + число2;
КонецЕсли;
Возврат Результат;
КонецФункции

7. тест прошел, нужно переписывать тест
Если МояФункция(число1, число2, операция) = Неопределено Тогда
ТестНеПрошел();
КонецЕсли;
Если ТипЗнч(МояФункция(число1, число2, операция))<>Тип("Число") Тогда
ТестНеПрошел();
КонецЕсли;

8. тест зараза снова прошел, нуна переписывать его
Если МояФункция(число1, число2, операция) = Неопределено Тогда
ТестНеПрошел();
КонецЕсли;
Если ТипЗнч(МояФункция(число1, число2, операция))<>Тип("Число") Тогда
ТестНеПрошел();
КонецЕсли;
Если (МояФункция(1, 2, "+")<>3 Тогда
ТестНеПрошел();
КонецЕсли;

9. и снова тест прошел, снова переписываем тест
Если МояФункция(число1, число2, операция) = Неопределено Тогда
ТестНеПрошел();
КонецЕсли;
Если ТипЗнч(МояФункция(число1, число2, операция))<>Тип("Число") Тогда
ТестНеПрошел();
КонецЕсли;
Если (МояФункция(1, 1, "+")<>2 Тогда
ТестНеПрошел();
КонецЕсли;
Если (МояФункция(2, 1, "-")<>1 Тогда
ТестНеПрошел();
КонецЕсли;

10. урра! тест не прошел
можно дальше пилить код

11. пилим код для "-"
56 Aleksey
 
14.02.16
23:37
Плюс смущает слово разработка в сабже. Я бы понял доработка программы через тестирования, но когда я пишу с нуля я еще и сам не знаю что в конечном итоги получу, потому что вот не припомню, чтобы с первого раза заказчик знал что хочет.
Обычно это примерно так.
- Мы хотим большую круглую кнопку. На вопрос зачем, отвечают. Ну как же ты не понимаешь, это позволит нам увеличить продажи и больше зарабатывать, а ты ничего делать не хочешь и мешаешь нам приносить больше прибыли собственникам.
- Ну ок, рисуем большую круглую кнопку.
Они смотрят чешут репу и выдают, нет ты знаешь ты был прав, давай не одну большую, а 8 и по кругу.
Ок, вот вам 8 и по кругу.
Опять смотрят, думают и спрашивают, а ты не знаешь зачем мы тебя это просили сделать?
Ну чтобы больше продавать наверное?
А как это нам поможет больше продавать?
Ну я не знаю.
И вот и мы не помним зачем нам это, ладно забей можешь удалять все кнопки.

И тут возникает вопрос. Если ты не разработчик тиражного решения, которую будут пилить после тебя непонятно кто и которое в последствие нужно будет поддерживать, то использования данного решения скорее вредно чем полезно
57 Garykom
 
гуру
14.02.16
23:43
(56) Этот пример, когда заказчик не знает что ему нужно (тестов нет вообще заранее) не TDD и не BDD а просто BDSM
58 Хранимая Процедура
 
14.02.16
23:51
(57) - нет, это СКРАМ.
59 Хранимая Процедура
 
14.02.16
23:52
а что это 2 темы по ТДД на глагне?
60 Garykom
 
гуру
14.02.16
23:57
(59) 2-я не просто по TDD, а по конкретной технологии реализации
61 hrmscentr
 
15.02.16
17:29
Срочно требуется WEB-ПРОГРАММИСТ!(115 000-250 000 тыс.руб.)
Уважаемые профессионалы! Крайне буду благодарна за понимание!
Данный месседж публикую ни с целью спама! А с целью поиска члена в нашу профессиональную семью!
Ни в коем случае не хочу нарушать ваш профессиональный микроклимат!
Спасибо за понимание!
В связи с расширением штата сотрудников ищем талантливого специалиста!

Что мы готовы предложить:
Достойную оплату труда (115 000т.р.-250 000т.р.)
Комфортное рабочее место, в шаговой доступности от м.Пролетарская
Стабильный график работы 5/2 с 10.00-19.00

Ты идеален для нас , если…

Имеешь опыт работы с PHP 5, MySQL не менее 3-х лет(примеры работ)
Опыт работы хотя бы с одним из фреймворков Phalcon PHP, Symfony, Yii и т.п.
Свободное владение ООП
Опыт работы с системами контроля версий git
Опыт создания приложений с unit-тестированием
Понимание принципов построения архитектуры высоконагруженных систем


По всем вопросам обращаться по телефону +7(929)516-92-30
HR-manager Андрианова Анастасия
или присылать резюме на почту [email protected]
mscentr.ru
https://rabota.mail.ru/vacancy/15985321
62 vicof
 
15.02.16
17:30
(61) А 1сники не нужны от 150 до 300?