Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Процесс и инструменты для разработки 
:(
    Опции темы
neutrino
Дата 27.10.2009, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



Цитата(deviLoper @  31.8.2007,  14:10 Найти цитируемый пост)
Недавно прочитал книгу "Экстремальное программирование" Кент Бек, которая очень понравилась. Помаленку пытаюсь использовать описанные там приципы. Интересно было бы услышать мнение тех, кто использовал UML, паттерны и XP. Что-то вроде сравнительного анализа.

Уже 7 месяцев применяю принципы TDD. Здоровая для качества кода штука. Вот каk я делаю:
1) сначала осмысливаю задачу
2) делаю поверхностный дизайн
3) пишу тесты
...

TDD (Test Driven Development) или  XP не запрещают делать первичный дизайн. Просто не надo егo изначально продумывать дo костей. V этоm нет смысла, т.к. зачастую оn меняется в процессе разработки.

Написав сначала тесты мы получаем:
1) лучшее понимание того, чтo мы должны сделать
2) уже готовый интерфейс того, чегo мы пишем
3) достаточную базу для проверки нашегo кода.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
PashaPash
Дата 27.10.2009, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



neutrino, сколько человек в команде, как внедряли, как контролируете, чем из фреймворков пользуетесь? win/web проекты? как организуете тесты? на базе/без? smile


--------------------
PM MAIL WWW   Вверх
neutrino
Дата 27.10.2009, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



PashaPash, Я выбрался козлом отпущения. Всего из 30 программеров пользуются ТДД - 5. Я первый в нашей комманде (12 человек). Я буду как раз контролировать процесс перехода с нативного программинга на ТДД для нашей комманды.
Тогда расскажу как дела обстоят в другой комманде.

Внедрять очень сложно. Основной фактор - нежелание людей писать тесты а тем более писать их до собственно программинга.

Контролируем пока никак. Мы используем Решарпер. У него есть какие-то методы контроля качества кода. Есть человек, который этим занимается. Но пока все глухо. Очень не хочетя делать код ревью. Думаю если перейти на парное программирование, то проблема контроля решится сама собой. Но начальство против этого подхода. Еще не осознало всю прелесть парного программинга.

NUnit + ReSHarper, PostSharp (в основном, конечно Laos). Для логгинга юзаем Log4NET.

Проэкты только Win

Как организуем тесты? Немного не понял вопрос. Каждый пишет тесты для своего кода. Есть отдел, который занимается интегрированными тестами - QA. Понятия не имею как он работает. Тесты пишутся в отдельном проекте. Группы тестов складываются по темам в TestFixture-ы ... Например у меня есть AcceptanceTests, PerformanceTests ...
Цитата(PashaPash @  27.10.2009,  10:13 Найти цитируемый пост)
на базе/без? 

На базе чего?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
PashaPash
Дата 27.10.2009, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(neutrino @  27.10.2009,  13:31 Найти цитируемый пост)
На базе чего?

тесты прогоняете на базе данных или без нее? smile Хотя, для win не так актуально.

У нас web, с ним чуть попроще.

У нас примерно так:
1. asp.net mvc, обязательные тесты на уровне контроллеров. Именно TDD-тесты, а не Acceptance/Performance. Т.е. скорее автоматические Regression тесты.
2. CruiseControl.net
 - билд при коммите, с прогонкой тестов не на базе данных, на стабе.
 - ночной билд, с прогонкой тех же тестов на базе данных + деплоймент
3. MSTest + родной MSTest-овый контроль покрытия. Фейл билда при уменшении покрытия на 0.1% от прошлого билда. сурово, но более-менее работает smile
4. Студийные FxCop, StyleCop и фейл билда при предупреждениях
5. Обязательный ревью вообще всех изменений, в Crucible.

Первые пару коммитов девелоперы ругались, потом привыкли. 

Насчет парного программирования - я после 4 часов парного программинга обычно выжат полностью, могу только тупить в монитор. Хотя, тут наверное зависит от напарника. smile

Это сообщение отредактировал(а) PashaPash - 27.10.2009, 21:29


--------------------
PM MAIL WWW   Вверх
Unlocker
Дата 27.10.2009, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 2.11.2007
Где: Москва - Знаменск (Капустин Яр)

Репутация: нет
Всего: 2



Решил подключиться к теме обсуждения.
Знать и уметь применять шаблоны проектирования сейчас уже совершенно необходимо иначе топорную систему ничто не спасет от мусорной корзины. Но часто не имея достаточной информации, сложно грамотно спроектировать точки эволюции системы. Сейчас дочитываю уже третий толмуд по теме проектирования ОО-систем (Крег Ларман "UML и шаблоны проектирования"). Он несколько раз указывает на то, что не стоит применять паттерны только ради их применения. Надо трезво оценивать пользу и вред их применения. 
Сам стараюсь их применять по мере необходимости в своих мини-проектах для пробы пера. На работе, как я уже упоминал, мне очень сложно заниматься проектированием и рефакторингом, т.к. собранной конкретной информации по целям и задачам мало; а мышление некоторых для сложной системы на уровне "нажми кнопку -  получишь сообщение Привет" иногда начисто убивает желание что-то совершенствовать.  smile 
Хочу попутно выяснить у социума: есть ли члены команд с внедренным процессом разработки типа RUP (Rational Unified Process)? Если есть, то какая численность и уровень команды? Кто отвечает за претворение в жизнь тех или иных этапов внедрения?
--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b."
PM MAIL ICQ Skype GTalk Jabber   Вверх
ivashkanet
Дата 28.10.2009, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(PashaPash @  27.10.2009,  21:26 Найти цитируемый пост)
Насчет парного программирования - я после 4 часов парного программинга обычно выжат полностью, могу только тупить в монито

PashaPash, эффективное время работы программиста в день 2-3 часа в обычном проекте и 3-4 (возможно больше, но не думаю) при..., скажем так, более организованном и командном подходе (не хочу говорить agile). 

Парное программирование заставляет вас работать наиболее близко к эффективному режиму. Получается вы с напарником вырабатываете дневную норму за раз. Что, естественно, приводит к чрезмерной утомляемости. Раз-два в неделю это можно делать, но если каждый день, то... мы получим еще одних противников этой методики smile 

Предлагаю попробовать снизить время работы в паре до 1,5 часа (чисто условно, но 2, ИМО, тоже много) с небольшим перерывом (сделайте себе кофе, переговорите о том что сделали, сделаете, на те же фишки зайдите...).

Кроме того, советую сделайть план того, что бы собираетесь делать. С ним намного проще не отвлекаться на посторонние вещи. С помощью него ваше эффективное время станет еще эффективнее. И обязательно ему следуйте. Успели выполнить раньше? Остановитесь. Не успеваете (это видно задолго до конца 1,5 часов)? Урежте план. Со временем вы будете составлять планы ровно на эти 1,5 часа с легкостью.



Это сообщение отредактировал(а) ivashkanet - 28.10.2009, 10:01
PM MAIL WWW ICQ   Вверх
PashaPash
Дата 28.10.2009, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



ivashkanet, отличные советы, но лично у меня PP приносит пользу только при 
- фиксе или дизайне чего-то сложного
- обучении нового человека каким-то внутренним фишкам проекта

Т.е. PP - это скорее исключение из общего процесса, чем регулярная практика. К тому же частичные альтернативы, тот же peer code review, имеют (опять же, лично для меня) несколько преимуществ
- оставляют артефакты, хотя бы в виде комментов
- не требуют одновременного участия 
- позволяют разделить знания между n>2 людьми
- не так сильно выедают моск smile
- проще воспринимаются PM-ами (те не забывают делить результат на 2)

Насколько я знаю, практически все используют парное программирование, в том или ином виде, просто не называют его PP. Но я не хотел бы преувеличивать/преуменьшать значение PP, или считать его серебряной пулей. 

Почти всегда есть другие, более дешевые способы поднять эффективность - донесение до разработчиков понятия flow, например. Планы на полтора часа (или на 40 минут), отключенный IM, проверка почты раз в 4 часа... работают для одного человека так же хорошо, как и в парном программировании. Даже, возможно, лучше smile 

PS что-то всех в оффтоп унесло....

Это сообщение отредактировал(а) PashaPash - 28.10.2009, 16:12


--------------------
PM MAIL WWW   Вверх
neutrino
Дата 28.10.2009, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



PashaPash, Кстати, спасибо. Теперь думаю и мы внедрим FxCop. А что такое StyleCop? Кстати, у решарпера есть такая тема: CleanUp Code. Очень полезная штука. Иногда решает большинство жалоб FxCop-а.
Цитата(PashaPash @  27.10.2009,  20:26 Найти цитируемый пост)
Crucible

А это хто? Ну ладно, щац я тебя замучаю. Пойду гуглить smile Фенькс за тулзы.

Добавлено через 1 минуту и 50 секунд
Цитата(PashaPash @  27.10.2009,  20:26 Найти цитируемый пост)
Именно TDD-тесты, а не Acceptance/Performance. Т.е. скорее автоматические Regression тесты.

Это я как пример fixtures привел. 


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
PashaPash
Дата 28.10.2009, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



neutrinoStyleCop - майкросовтовская проверялка стиля кода - порядка методов, имен параметров, пробелов между скобками. Лучше использовать сразу с StyleCop for ReSharper.


--------------------
PM MAIL WWW   Вверх
ivashkanet
Дата 29.10.2009, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(PashaPash @  28.10.2009,  16:12 Найти цитируемый пост)
ivashkanet, отличные советы, но лично у меня PP приносит пользу только при...

У меня PP используется только при передаче знаний. Да и то за счет моего личного времени. Ибо руководство не понимает пользы (да и не хочет понять). Так же как и код ревью и дизайн ревью. 
Наш тимлидер вообще построил такую систему, что каждый обособленно делает свой таск и совершенно не в курсе что делает сосед. Обсуждать такой подход отказывается. Хотя уже несколько раз проект отгребал по этой причине.

Цитата(PashaPash @  28.10.2009,  16:12 Найти цитируемый пост)
Планы на полтора часа (или на 40 минут), отключенный IM, проверка почты раз в 4 часа... работают для одного человека так же хорошо, как и в парном программировании.

+100 
Только планы у меня сразу на весь кусок работы (1-2 недели расписаны по таскам 1-3-8 часов). 


Цитата(PashaPash @  28.10.2009,  16:12 Найти цитируемый пост)
PS что-то всех в оффтоп унесло....

Надо выделять темы. Ты же у нас модер. Работай smile 
PM MAIL WWW ICQ   Вверх
neutrino
Дата 29.10.2009, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



PashaPash
Цитата(PashaPash @  27.10.2009,  20:26 Найти цитируемый пост)
Crucible.

Рульная тулза. А че у тебя за контора? Что-то больно серьезный подход.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
PashaPash
Дата 29.10.2009, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(ivashkanet @  29.10.2009,  11:25 Найти цитируемый пост)

Надо выделять темы. Ты же у нас модер. Работай smile 

Выделять особо некуда, только если в курилку. Организация работы это скорее тема для PM, а не для рядовых программистов.
Цитата(neutrino @  29.10.2009,  13:30 Найти цитируемый пост)

Рульная тулза. А че у тебя за контора? Что-то больно серьезный подход. 

Logic Software. Подход суровый на основном проекте, потому что на прошлой версии (текущем релизе) мы, как выразился ivashkanet, пару раз сильно отгребли :( На аутсорсе и на мелких проектах все не так строго.


--------------------
PM MAIL WWW   Вверх
ivashkanet
Дата 30.10.2009, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(PashaPash @  29.10.2009,  13:47 Найти цитируемый пост)
Организация работы это скорее тема для PM, а не для рядовых программистов.

Хорошо когда ПМ-ы это понимают и действительно стараются улучшать работу. Но часто "спасение утопающих становится делом рук самих утопающих".

Цитата(PashaPash @  29.10.2009,  13:47 Найти цитируемый пост)
Подход суровый на основном проекте, потому что на прошлой версии (текущем релизе) мы, как выразился ivashkanet, пару раз сильно отгребли

Эхх мечты, мечты. Я не то что Crucible, я ревью хотя бы важных тасков (до и после/дизайн и код ревью) добиться не могу. Во дают smile 

PM MAIL WWW ICQ   Вверх
Любитель
Дата 30.10.2009, 11:47 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Цитата(PashaPash @  29.10.2009,  13:47 Найти цитируемый пост)
Организация работы это скорее тема для PM, а не для рядовых программистов.

Я не согласен smile А тему надо выделить куда-нибудь отдельно.. Почитать интересно smile 


--------------------
PM MAIL ICQ Skype   Вверх
PashaPash
Дата 30.10.2009, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Пока оставил топик в этом разделе, как .net-specific.

Цитата(ivashkanet @  30.10.2009,  10:12 Найти цитируемый пост)

Хорошо когда ПМ-ы это понимают и действительно стараются улучшать работу. Но часто "спасение утопающих становится делом рук самих утопающих".

Спасение утопающих вообще всегда дело рук самих утопающих :( Оставь в стратегическом месте распечатку по теме - и жди smile

По поводу внедрения ccnet/Сrucible/tdd/чего угодно. 
Всегда есть куча способов:
1. Убедить PM-а/Тимлида, показав им статью вроде The Joel Test: 12 Steps to Better Code или Best Practices for Peer Code Review. Во второй есть графики, а графики для PM-ов и выше - серьезный аргумент. no joking.
2. Поставить <что-то> на своей машине и активно использовать. Сделать стандартом de-facto. Очень хорошо срабатывает для ccnet smile
3. Самому стать тимлидом и творить что угодно
4. Сменить работу


--------------------
PM MAIL WWW   Вверх
neutrino
Дата 1.11.2009, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



Цитата(neutrino @ 29.10.2009,  12:30)
PashaPash
Цитата(PashaPash @  27.10.2009,  20:26 Найти цитируемый пост)
Crucible.

Рульная тулза. А че у тебя за контора? Что-то больно серьезный подход.

Мы все хотели установить какой-нить форум внутренний. Но наш АйТи ограничил нас до MS SharePoint. Там есть форум, но посты надо писать в HTML коде.  Просто афигеть. В каком веке живем?

Паша, а есть ли что-нибудь бесплатное похожее на вышеупомянутую тулзу? Очень хочется ...


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
PashaPash
Дата 2.11.2009, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(neutrino @  1.11.2009,  11:32 Найти цитируемый пост)

Мы все хотели установить какой-нить форум внутренний. Но наш АйТи ограничил нас до MS SharePoint. Там есть форум, но посты надо писать в HTML коде.  Просто афигеть. В каком веке живем?

IMHO, во внутреннем форуме вообще смысла нет. Если очень хочется, то есть вполне легальные обходные пути. Установка любого форума на свою рабочую машину, или использование Groove, например.
Цитата(neutrino @  1.11.2009,  11:32 Найти цитируемый пост)

Паша, а есть ли что-нибудь бесплатное похожее на вышеупомянутую тулзу? Очень хочется ... 

http://www.reviewboard.org/


--------------------
PM MAIL WWW   Вверх
Partizan
Дата 4.11.2009, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Собственно расскажу о своём (не очень большом) опыте разработки в соответствии с процессами...

1. Одна из контор, в которых я работал использовала CMMI...
Типичная вещь - code review...перед каждым коммитом собираются 3-5 человек, и высказывают тебе все замечания, которые в итоге оформляются как faults...собственно после фикса всех замечаний и делается коммит, который Configuration Manager-ы затем сливают с мэйн-бранчем(хотя это, может быть, ClearCase-specific task). Из плюсов такого подхода могу отметить то, что как правило замечания, действительно, как правило, делаются существенные (при условии, что никто не забил на подготовку к ревью). Из минусов - в крупном проекте (over 900 000 LOC) - зачастую девелоперы забивают на подготовку, и выдумывают фолты прямо по ходу ревью. В результате существенные косяки иногда легко пролетают ревью.

2. Во второй работает Agile...
Как таковая, разработка по TDD не используется, Unit Test-ы пишутся, но уже после реализации функционала. 
Continious integration в виде билда после каждого коммита, а также каждую ночь на билд машине собираются все проекты.
Сам я в Agile-методологии, можно сказать, новичок, так что ничего более путного сказать тут не могу smile 

Поставил style cop, разве что...наверно скоро руки дойдут до его настройки...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
neutrino
Дата 4.11.2009, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



Цитата(Partizan @  3.11.2009,  23:10 Найти цитируемый пост)
Поставил style cop, разве что...наверно скоро руки дойдут до его настройки... 

Вот именно. А то ругается на всякую хрень. Я например константы в CamelCase ну никак не приму. ИМХО, константы должны быть в ALLCAPS. Да и потом все эти префиксы приватных полей тоже не люблю. Хотя в нашей конторе стандарты говорят писать myField. Лучше писать простые и небольшие классы, тогда и отпадет нужда в этих различиях. Действительно, если и методы короткие, то ничего не стоит отличить local variable от class field, даже если оба написаны lowerCamelCase, а вот всякие префиксы _field, myField, m_field ... только делают код противным. ИМХО конечно.

Пишите короткие классы с короткими методами, и нужда во всяких walkaround-ах просто отпадет сама собой.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
PashaPash
Дата 6.11.2009, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(Partizan @  4.11.2009,  00:10 Найти цитируемый пост)
Поставил style cop, разве что...наверно скоро руки дойдут до его настройки... 

Его бесполезно включать на существующих проектах. Единственный вариант - в следующем проекте прикрутить заранее.

Continious integration вполне и без agile работает. А если пишете тесты после кода, то это точно не Agile. Agile это скорее общий подход к процессу, чем набор инструментов. Типа веселые офигенно мотивированные профессионалы очень круто и бодро пишут тру-софтину, без всякой там документации, ведь рабочий продукт круче, и кастомер с ними на той же волне. И, кстати, по Agile - если есть рабочий продукт - то тесты и документация не нужны, ведь все уже работает. Шутка, но в ней доля правды.

У нас peer code review, уже после коммита. Хотя, для >100k LOC строгие ревью вполне оправданы.

neutrino, в StyleCop можно свои правила писать. Кстати, стандартные правила - это просто уточненный Design Guidelines for Class Library Developers


--------------------
PM MAIL WWW   Вверх
Partizan
Дата 6.11.2009, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Цитата

Его бесполезно включать на существующих проектах. Единственный вариант - в следующем проекте прикрутить заранее.


Ну почему же, есть ненулевая вероятность, что все соблюдали гайдлайны по максимуму smile


Цитата

А если пишете тесты после кода, то это точно не Agile


В последнее время, я всё чаще слышу от коллег фразы типа "неплохо бы попробовать TDD", но пока это только слова.

Цитата

Agile это скорее общий подход к процессу, чем набор инструментов


Так топик и процессы затрагивает вроде как smile


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
ivashkanet
Дата 6.11.2009, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(PashaPash @  6.11.2009,  00:48 Найти цитируемый пост)
Его бесполезно включать на существующих проектах. Единственный вариант - в следующем проекте прикрутить заранее.

Ну почему же. Специально для этого сделана утилитка ExcludeStyleCop, которая вырубает проверку в уже существующих файлах, а проверяет только новые (скажем так). Скчать ее сорцы можно на странице проекта.
Что она делает -- добавляет атрибуты ко всем сорцам в файле проекта. Новые файлы создаются без этого атрибута и поэтому участвуют в анализе. Позднее, как команда присмотриться к копу, эти атрибуты можно постепенно убирать.

Цитата(PashaPash @  6.11.2009,  00:48 Найти цитируемый пост)
А если пишете тесты после кода, то это точно не Agile. Agile это скорее общий подход к процессу, чем набор инструментов. Типа веселые офигенно мотивированные профессионалы очень круто и бодро пишут тру-софтину, без всякой там документации, ведь рабочий продукт круче, и кастомер с ними на той же волне. И, кстати, по Agile - если есть рабочий продукт - то тесты и документация не нужны, ведь все уже работает

Вот начал с ерунды, а потом себя же опроверг.
Agile к тестам никакого отношения не имеет. Вообще-то ведется очень много спрорв что такое Agile и что можно им считать, а что нет. 
ИМО, самые главные принципы Agile прописаны в его манифесте
Цитата
для нас важнее:
    * Люди и их взаимодействие, чем процессы и средства
    * Работающее ПО, чем исчерпывающая документация
    * Сотрудничество с заказчиком, чем обсуждение условий контракта
    * Реагирование на изменения, чем следование плану 
То есть, мы не ставим под сомнение важность пунктов справа, в то же время для нас гораздо важнее записанное слева

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


Цитата(Partizan @  6.11.2009,  01:48 Найти цитируемый пост)
есть ненулевая вероятность, что все соблюдали гайдлайны по максимуму

Наоборот, есть ненулевая вероятность того, что разработчики устанут и не будут обращать на них внимание.

Цитата(Partizan @  6.11.2009,  01:48 Найти цитируемый пост)
всё чаще слышу от коллег фразы типа "неплохо бы попробовать TDD", но пока это только слова.

Как человек, который применял его около полугода скажу: в большинстве случаев бесполезная трата времени и сил.
ИМО, TTD есть смысл применять только для функциональности, которую ты не совсем представляешь как реализовывать. Т.е. как метод проектирования.
Сами же тесты нужны либо для критической функциональности (высокая цена ошибки -- очень редко бывает) либо для функциональности в которой ты не совсем уверен.


СУВ, ivashkanet

Это сообщение отредактировал(а) ivashkanet - 6.11.2009, 10:20
PM MAIL WWW ICQ   Вверх
PashaPash
Дата 6.11.2009, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(Partizan @  6.11.2009,  01:48 Найти цитируемый пост)

Так топик и процессы затрагивает вроде как smile

Так давай, делись деталями процесса smile Или делись полным списком инструментов. Т.к. TDD, CI и прочее - это инструменты, которые почти никакого отношения к процессу не имеют.

Цитата(ivashkanet @  6.11.2009,  10:17 Найти цитируемый пост)

Вот начал с ерунды, а потом себя же опроверг.

Там же была фраза про шутку, нет?
Сам по себе манифест Agile, IMHO, это манифест здравого смысла. А про мотивированных девелоперов и проч - это обычное поверхностное понимание Agile. Опять же IMHO. Потому что когда начинающий мененджер видит "Работающее ПО, чем исчерпывающая документация", он читает его как "все ресурсы на написание кода и новых фич, 0 ресурсов на документацию". И дальше у него в мозгу возникает цепочка:
- ресурсы всегда заранее ограничены
- всегда есть запросы на новые фичи (если проектом кто-то пользуется)
- всегда есть выбор - сделать новую фичу, или задокументировать существующий кусок.
- лучше работающее ПО, чем исчерпывающая документация + реагирование на изменения, чем следование плану
И он решает что надо делать yet another feature, а документация подождет.

Проблема в том, что манифест в чистом виде говорит "лучше", но не говорит насколько. Что бы ты, как мененджер, выбрал
1. Проект с 100 реализованными фичами, без документации
2. Проект с 99 реализованными фичами, с полноценной документацией и ровной архитектурой

Цитата(ivashkanet @  6.11.2009,  10:17 Найти цитируемый пост)
Как человек, который применял его около полугода скажу: в большинстве случаев бесполезная трата времени и сил.

Может ты просто не умеешь его готовить? smile Например, почти все начинают при TDD писать Unit-тесты, что действительно бесполезная трата времени.
IMHO (надо наверное в подпись вынести), TDD бесполезно применять одному, и не очень приятно применять в чистом виде вообще. 

Тесты окупают себя при:
- Хоть немного нетрививальном функционале
- Команде из более чем 2-х человек, с хоть какой-то текучкой
- Выделении времени на рефакторинг
- Наличии test-friendly фреймворка
- При потециальном росте проекта в будущем.

Писать тесты под мелкое win-приложение для одного юзера - бесполезное дело. Не писать тесты для средних размеров web-приложения - очень серьезная ошибка.

Еще одна неочевидная (IMHO) вещь - тест начинает окупать себя не в момент написания. PROFIT приходит когда он вдруг падает при сборке билда, и кривой билд не попадает к QA.

Цитата(ivashkanet @  6.11.2009,  10:17 Найти цитируемый пост)
Сами же тесты нужны либо для критической функциональности (высокая цена ошибки -- очень редко бывает) либо для функциональности в которой ты не совсем уверен.

Разработчик не может охватить стоимость ошибки полностью. Стоимоть функционального бага, попавшего в билд это стоимость
- ручной проверки и обнаружения
- прогонки бага через bugtracker, поиска виновника
- время фикса
- повторной сборки билда

Цена ошибки в функционале высока вообще всегда, и обычно превышает дневную ЗП разработчика. 

Я вообще никогда не уверен полностью в функциональности, потому что видел как тривиальные баги заворачивались по 3-4 раза. Разработчики склонны переоценивать свой скилл по написанию безбажного кода, и вообще склонны переоценивать свою роль в создании софта (IMHO smile

Добавлено @ 21:22
PS Спасибо за ExcludeStyleCop smile

Это сообщение отредактировал(а) PashaPash - 6.11.2009, 21:23


--------------------
PM MAIL WWW   Вверх
Partizan
Дата 6.11.2009, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Цитата

Так давай, делись деталями процесса smile Или делись полным списком инструментов. 


И то и другое подпадает под условия подписанного NDA smile


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Любитель
Дата 6.11.2009, 23:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Цитата(PashaPash @  6.11.2009,  00:48 Найти цитируемый пост)
А если пишете тесты после кода, то это точно не Agile

Абсолютно не согласен. Как уже было сказано - используемый подход к написанию тестов и аджайл не особо связаны.

Цитата(PashaPash @  6.11.2009,  00:48 Найти цитируемый пост)
И, кстати, по Agile - если есть рабочий продукт - то тесты и документация не нужны, ведь все уже работает.

Ну.. вообщем, да, но, если речь не идёт о большом рефакторинге продукта или изменении корневых фич. Аджайл - это принцип облегчённого процесса разработки, но всё-таки не принцип "давай-давай быстрей писать!" smile

Цитата(Partizan @  6.11.2009,  01:48 Найти цитируемый пост)
В последнее время, я всё чаще слышу от коллег фразы типа "неплохо бы попробовать TDD", но пока это только слова.

ИМХО, TDD - это зло. В чистом виде, по крайней мере. Впрочем, как и любая крайность...

Цитата(ivashkanet @  6.11.2009,  10:17 Найти цитируемый пост)
Как человек, который применял его около полугода скажу: в большинстве случаев бесполезная трата времени и сил.
ИМО, TTD есть смысл применять только для функциональности, которую ты не совсем представляешь как реализовывать. Т.е. как метод проектирования.
Сами же тесты нужны либо для критической функциональности (высокая цена ошибки -- очень редко бывает) либо для функциональности в которой ты не совсем уверен.

 smile 

Цитата(PashaPash @  6.11.2009,  21:21 Найти цитируемый пост)
Может ты просто не умеешь его готовить? smile Например, почти все начинают при TDD писать Unit-тесты, что действительно бесполезная трата времени.
IMHO (надо наверное в подпись вынести), TDD бесполезно применять одному, и не очень приятно применять в чистом виде вообще. 

Ээ.. Что-то я не понял. Во-первых, я не мыслю TDD без юнит-тестов. А, во-вторых, я не считаю, что юнит-тесты - это бесполезная трата времени.

Цитата(PashaPash @  6.11.2009,  21:21 Найти цитируемый пост)
Тесты окупают себя при:
- Хоть немного нетрививальном функционале
- Команде из более чем 2-х человек, с хоть какой-то текучкой
- Выделении времени на рефакторинг
- Наличии test-friendly фреймворка
- При потециальном росте проекта в будущем.

Если речь про юнит-тесты - то:
1. Само собой проект должен быть не маленьким.
2. Само собой должен быть тест-фреймворк (а как вообщше иначе?!).
Но, самое главное, когда ИМХО полезны тесты:
1. На начальном этапе проекта, когда толком нельзя "нормально" отлаживать внутренние вещи. Хотя такой ситуации ИМХО просто не должно быть - надо писать в обратном порядке smile
2. Если планируется разработка или (особенно) переработка, затраная в архитектурном плане.


--------------------
PM MAIL ICQ Skype   Вверх
PashaPash
Дата 7.11.2009, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(Любитель @  6.11.2009,  23:12 Найти цитируемый пост)
Абсолютно не согласен. Как уже было сказано - используемый подход к написанию тестов и аджайл не особо связаны.

Цитата(Любитель @  6.11.2009,  23:12 Найти цитируемый пост)
Ну.. вообщем, да, но, если речь не идёт о большом рефакторинге продукта или изменении корневых фич. Аджайл - это принцип облегчённого процесса разработки, но всё-таки не принцип "давай-давай быстрей писать!" 

см выше про шутку smile И заодно про понятие "лучше" в принципах Agile. Agile тоже зло в чистом виде, как и любой подход при применении без оглядки на реальную ситуацию.
Цитата(Любитель @  6.11.2009,  23:12 Найти цитируемый пост)
ИМХО, TDD - это зло. В чистом виде, по крайней мере. Впрочем, как и любая крайность...

+1, потому TDD в чистом виде мы тоже не используем.

Цитата(Любитель @  6.11.2009,  23:12 Найти цитируемый пост)
Ээ.. Что-то я не понял. Во-первых, я не мыслю TDD без юнит-тестов. А, во-вторых, я не считаю, что юнит-тесты - это бесполезная трата времени.

Один Unit Test тестирует модуль - наименьшую часть приложения, которую можно отдельно протестировать. Функцию, класс, взаимодействие двух классов, но не больше. Т.е. если ты пытаешься протестировать сайт, то пишутся
- тесты на UI
- тесты на каждый метод BL
- тесты на DataAccess
При этом тесты "плывут" при смене архитектуры, и очень дороги в поддержке. На этом внедрение TDD на Unit-тестах обычно и умирает, оставляя в разработчиках жгучую ненавить к TDD в целом smile

В TDD тесты - это автоматические regression-тесты. Один тест покрывает тест-кейс, одно или несколько действий на UI, и заодно задейстованные при этом куски BL/DataAccess. TDD тесты не затрагиваются внутренностями архитектуры, и спокойно переживают рефакторинг, расширение архитектуры и прочие внутренние вещи. Основная цель автоматической регрессии - проверить что не поломался функционал в целом, а не какие-то "модули".

Цитата(Любитель @  6.11.2009,  23:12 Найти цитируемый пост)
Если речь про юнит-тесты - то:
1. Само собой проект должен быть не маленьким.
2. Само собой должен быть тест-фреймворк (а как вообщше иначе?!).
Но, самое главное, когда ИМХО полезны тесты:
1. На начальном этапе проекта, когда толком нельзя "нормально" отлаживать внутренние вещи. Хотя такой ситуации ИМХО просто не должно быть - надо писать в обратном порядке 
2. Если планируется разработка или (особенно) переработка, затраная в архитектурном плане. 

1. А если маленький, но вырастет в будущем? У меня софтина из списка с 3 кнопками вырасла в 4 сервиса + тонкий client + штук 5 сервисов внешних. При этом добавлялись только мелкие фичи smile
2. Есть ес-но

насчет когда полезны
1. На протяжении всей жизни проекта, и чем больше раз тест падал, тем полезнее. читай - чем раньше тест написан, тем полезнее.
2. Если планируется рефакторинг - сомневаюсь что тесты "вдруг" появяться в момент, когда решат порефакторить. А писать тесты на старый код - дорого и неприятно. 

Общий смысл списка когда полезны - если бы могли видеть будущее, заранее знали что через год надо будет рефакторить, то сегодня написали бы тест. 
Тесты - это как ремни безопасности. Они полезны только когда попадаешь в аварию. Так зачем их пристегивать все остальное время?

Я, кстати, поговорил с местными QA сегодня. По статистике они чаще всего заворачивают билды из-за ошибок типа "страница не открывается" и "падает по кнопке Save". Т.е. на абсолютно тривиальном функционале, который написан уже года 2 назад, где и логики как таковой нет. Но который девелоперы все еще умудряются случайно ломать. Девелоперы вменяемые, архитектура ровная. Полный прогон билда, кстати, 6 человеко-дней. Название проекта не скажу, ибо NDA ;) Это к вопросу о стоимости ошибки. Бесполезно мне доказывать что тесты не нужны smile Потому что все аргументы выше доказывают что тесты не нужны лично вам, потому что лично вы - тот самый несуществующий девелопер, который НИКОГА не лажал (а на самом деле просто лень и нежелание увидеть полную картину)

Хотя, мелкие проекты (до 200 часов), мы типа под Agile вполне колбасим без тестов smile


--------------------
PM MAIL WWW   Вверх
Любитель
Дата 7.11.2009, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Цитата(PashaPash @  7.11.2009,  00:30 Найти цитируемый пост)
Agile тоже зло в чистом виде, как и любой подход при применении без оглядки на реальную ситуацию.

Ну.. Аджайл проповедует чаще смотреть на реальную ситуацию. Аджайл проповедуте нетяжеловесный менеджмент, лёгкость смены тасков и ориентиров. Моё ИМХО smile

Цитата(PashaPash @  7.11.2009,  00:30 Найти цитируемый пост)
На этом внедрение TDD на Unit-тестах обычно и умирает, оставляя в разработчиках жгучую ненавить к TDD в целом smile

Абсолютно верно smile

Цитата(PashaPash @  7.11.2009,  00:30 Найти цитируемый пост)
В TDD тесты - это автоматические regression-тесты. Один тест покрывает тест-кейс, одно или несколько действий на UI, и заодно задейстованные при этом куски BL/DataAccess. TDD тесты не затрагиваются внутренностями архитектуры, и спокойно переживают рефакторинг, расширение архитектуры и прочие внутренние вещи. Основная цель автоматической регрессии - проверить что не поломался функционал в целом, а не какие-то "модули".

Я не считаю, что это есть TDD. Вообще - регрессион-тестирование не может относится к разработке (именно к разработке в плане девелоперов, а не организации проекта). ИМХО, это задача QA-команды. Я не говорю, что это обязательно мануальное тестирование - но в любом случае это не связано с написанием основного кода (что не скажешь о юнит-тестах). А на начальном этапе ни о каком регрессион - речи по определению нет.

Цитата(PashaPash @  7.11.2009,  00:30 Найти цитируемый пост)
1. А если маленький, но вырастет в будущем? У меня софтина из списка с 3 кнопками вырасла в 4 сервиса + тонкий client + штук 5 сервисов внешних. При этом добавлялись только мелкие фичи

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

Цитата(PashaPash @  7.11.2009,  00:30 Найти цитируемый пост)
Если планируется рефакторинг - сомневаюсь что тесты "вдруг" появяться в момент, когда решат порефакторить. А писать тесты на старый код - дорого и неприятно. 

Мм.. Я не согласен. Я считаю, что писать тесты на "старый код" - это нормально. Если планируются изменения, затрагивающие этот код. Более того, при наличии времени это даже preferred way.

Цитата(PashaPash @  7.11.2009,  00:30 Найти цитируемый пост)
Общий смысл списка когда полезны - если бы могли видеть будущее, заранее знали что через год надо будет рефакторить, то сегодня написали бы тест. 

Да, если бы знал. А если не знал - лучше не напишу, чем напишу..

Цитата(PashaPash @  7.11.2009,  00:30 Найти цитируемый пост)
Я, кстати, поговорил с местными QA сегодня. По статистике они чаще всего заворачивают билды из-за ошибок типа "страница не открывается" и "падает по кнопке Save". Т.е. на абсолютно тривиальном функционале, который написан уже года 2 назад, где и логики как таковой нет. Но который девелоперы все еще умудряются случайно ломать. Девелоперы вменяемые, архитектура ровная. Полный прогон билда, кстати, 6 человеко-дней. Название проекта не скажу, ибо NDA ;) Это к вопросу о стоимости ошибки. Бесполезно мне доказывать что тесты не нужны smile Потому что все аргументы выше доказывают что тесты не нужны лично вам, потому что лично вы - тот самый несуществующий девелопер, который НИКОГА не лажал (а на самом деле просто лень и нежелание увидеть полную картину)

Ну.. Ошибки бывают у всех - и.. это нормально. Обычный рабочий момент. Но, если страница не открывается на разрабатываемой (или затрагиваемой) функциональности и девелопер этого не замечает, то.. это странно. Но для "рядовых" билдов - это вполне нормально. ИМХО, конечно..

Цитата(PashaPash @  7.11.2009,  00:30 Найти цитируемый пост)
Хотя, мелкие проекты (до 200 часов), мы типа под Agile вполне колбасим без тестов smile 

Хм.. Ну, в нашей компании большинство проектов укладываются (без учёта размера команды) в это время. А тот ограниченный список, что не укладывается - либо обречён на "сложную" судьбу, либо разрабатывается "линейно" (т. е. существующая архитектура "идеальна" и достаточно "наслаивания" независимых фич).


--------------------
PM MAIL ICQ Skype   Вверх
neutrino
Дата 7.11.2009, 02:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



ИМХО> Тесты до кода писать просто интереснее, Тесты после кода писать нудно. Если проводится рефакторинг старого кода, то тесты на старый код писать необходимо.

А что такое ТДД в чистом виде?  smile Когда все и вся пишется через тесты? Если да, то это конечно крайность.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
PashaPash
Дата 7.11.2009, 02:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(Любитель @  7.11.2009,  01:53 Найти цитируемый пост)
Ну.. это уже вопрос менеджмента  Ничего нельзя предсказать, но.. надо уметь правильно рассчитывать...

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

Цитата(Любитель @  7.11.2009,  01:53 Найти цитируемый пост)
Я не считаю, что это есть TDD. Вообще - регрессион-тестирование не может относится к разработке (именно к разработке в плане девелоперов, а не организации проекта). ИМХО, это задача QA-команды. Я не говорю, что это обязательно мануальное тестирование - но в любом случае это не связано с написанием основного кода (что не скажешь о юнит-тестах). А на начальном этапе ни о каком регрессион - речи по определению нет.

Полноценные regression-тесты - ес-но задача для QA. Я просто хотел показать что TDD-тесты по смыслу и по подходу ближе к регрессии, чем к unit-тестам. Автоматическая регрессия вообще применима начиная со второго билда. Если билды при коммите кода - то фактически при втором коммите.
Цитата(Любитель @  7.11.2009,  01:53 Найти цитируемый пост)
Мм.. Я не согласен. Я считаю, что писать тесты на "старый код" - это нормально. Если планируются изменения, затрагивающие этот код. Более того, при наличии времени это даже preferred way.

"Тесты до/во время кода" тупо дешевле "тестов после" примерно в N раз, N > 10. Т.е написать код, а потом покрыть 10% существующего кода == написать тот же код, сразу покрытый тестами. Опять же, возвращаясь к agile-подходу - ценится возможность внести незапланированные изменения, а не планировать их заранее. И опять же, ценится рабочий продукт, в полном смысле этого слова, а не когда работает только новый функционал.
Цитата(Любитель @  7.11.2009,  01:53 Найти цитируемый пост)
Ну.. Ошибки бывают у всех - и.. это нормально. Обычный рабочий момент. Но, если страница не открывается на разрабатываемой (или затрагиваемой) функциональности и девелопер этого не замечает, то.. это странно. Но для "рядовых" билдов - это вполне нормально. ИМХО, конечно..

Ага, а потом появляется шеф, и говорит: что-то ваш тим, Любитель, валит уже 4 билда подряд на каких-то мелочах? доколе? ... лишить компота...снизить зп...все уволены. Потому что 4 билда - это 3-4k$ (условно), и это уже не первый раз.

Цитата(Любитель @  7.11.2009,  01:53 Найти цитируемый пост)
Хм.. Ну, в нашей компании большинство проектов укладываются (без учёта размера команды) в это время. А тот ограниченный список, что не укладывается - либо обречён на "сложную" судьбу, либо разрабатывается "линейно" (т. е. существующая архитектура "идеальна" и достаточно "наслаивания" независимых фич). 

У нас пока примерно такой подход:
 - Долго пишется один толстый проект (скажем, 20к часов) , под ним обкатывается архитектура, с тестами, dsl, полноценными доками и проч. Где-то между CMMI и Agile.
 - Параллельно в разработке висят 1-2 проекта на той же архитектуре, без тестов и проч. Сплошной Agile, хоть никто и не догадывается.

Я, кстати, работаю совестью первого проекта и манагером группы вторых smile

Немного в сторону от темы, но хорошо пересекается с "когда полезны тесты".Технические долги. Очень трезвый взгляд на тесты, рефакторинг, архитектуру и прочие тудушки.

Добавлено через 4 минуты и 32 секунды
Цитата(neutrino @  7.11.2009,  02:28 Найти цитируемый пост)
А что такое ТДД в чистом виде?   Когда все и вся пишется через тесты? Если да, то это конечно крайность. 

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


--------------------
PM MAIL WWW   Вверх
Любитель
Дата 7.11.2009, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Цитата(neutrino @  7.11.2009,  02:28 Найти цитируемый пост)
А что такое ТДД в чистом виде?  smile Когда все и вся пишется через тесты?

Ну.. по крайней мере, я всегда ТДД именно так понимал smile Вроде как, само понятие TDD наталкивает на такое определение.

Цитата(PashaPash @  7.11.2009,  02:35 Найти цитируемый пост)

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

Обрастать может и будет - но всё-таки в большинстве случаев это именно "обрастание", а не "разрастание". То есть "коренная" архитектура не затрагивается. Хотя, конечно, это исключительно из моего (оч скромного) опыта.

Цитата(PashaPash @  7.11.2009,  02:35 Найти цитируемый пост)
Автоматическая регрессия вообще применима начиная со второго билда. Если билды при коммите кода - то фактически при втором коммите.

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

Цитата(PashaPash @  7.11.2009,  02:35 Найти цитируемый пост)
Я просто хотел показать что TDD-тесты по смыслу и по подходу ближе к регрессии, чем к unit-тестам. 

Хм.. Всё-таки тогда хотелось услышать твоё понимание ТДД. В первую очередь - какие тесты? И кто их пишет? Как? И насчёт покрытия функционала/кода тестами - тоже интересно (грубо говоря, достаточно доли).

Цитата(PashaPash @  7.11.2009,  02:35 Найти цитируемый пост)
"Тесты до/во время кода" тупо дешевле "тестов после" примерно в N раз, N > 10. Т.е написать код, а потом покрыть 10% существующего кода == написать тот же код, сразу покрытый тестами.

Да, конечно, дешевле. Но, я думаю, явно не настолько. И плюс, самое главное, опять-таки - всё зависит от ситуации..

Цитата(PashaPash @  7.11.2009,  02:35 Найти цитируемый пост)
Опять же, возвращаясь к agile-подходу - ценится возможность внести незапланированные изменения, а не планировать их заранее.

Вот именно! Т. е. понадобились тесты - давай добавим. И архитектура, тест-фреймворк и пр. должны позволять это сделать с минимальными затратами. А писать тесты ради того, что они могут понадобиться - я это не поддерживаю.

Цитата(PashaPash @  7.11.2009,  02:35 Найти цитируемый пост)
Ага, а потом появляется шеф, и говорит: что-то ваш тим, Любитель, валит уже 4 билда подряд на каких-то мелочах? доколе

Ну.. всё хорошо в меру. Когда я говорил, что это нормальнач рабочая ситуация - я ж не имел ввиду, что билд валится после каждого комита smile  Ну, бывает кривой комит.. вечером в пятницу... smile Т. е. это нормально - но, конечно, в меру.

Цитата(PashaPash @  7.11.2009,  02:35 Найти цитируемый пост)
Параллельно в разработке висят 1-2 проекта на той же архитектуре, без тестов и проч. Сплошной Agile, хоть никто и не догадывается.

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

А вообще, что-то мы с тулзов совсем перешли на менеджмент. smile 


--------------------
PM MAIL ICQ Skype   Вверх
PashaPash
Дата 7.11.2009, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(Любитель @  7.11.2009,  11:39 Найти цитируемый пост)
Хм.. Всё-таки тогда хотелось услышать твоё понимание ТДД. В первую очередь - какие тесты? И кто их пишет? Как? И насчёт покрытия функционала/кода тестами - тоже интересно (грубо говоря, достаточно доли).

Это довольно подробно в вики расписано, но можно тут продублировать.
0. Появляется новыйз use-case (user story). Пользователь зашел на страницу XXX, нажал YYY, увидел ZZZ, при этом в базе был набор AAA, после стал AAAB.
1. Пишется один (!) тест, который все это проделывает. Ес-но все управление на себя наборами данных и прочим стаффом берет фреймворк. В тесте непосредственно два вызова XXX и YYY и последующие ассерты. Формально - это не unit-тест, т.к. покрывает кучу всего.
2. Девелопер убеждается что тест падает smile
3. Пишется минимальный код, позволяющий тесту не упасть.
4. Девелопер проверяет что все тесты заработали
5. Рефакторит то, то написал
6. Повторяет.

Если срываться в крайности - то в 0 появляется куча левых стори, типа перебора всех возможных комбинаций входных значений.

На выходе получается софт, в котором (теоретически) все существующие юзкейсы покрыты тестами, т.е. после (5) tdd-ный тест нахаляву превращается в регрессионнный.
Цитата(Любитель @  7.11.2009,  11:39 Найти цитируемый пост)
Ну.. теоретически - само собой. Но называть это регрессион-тестирование - язык не поворачивается. Когда в проекте ещё ничего толком нету, регрессион-тестирование заключается в запуске приложения девелопером при разработке новой функциональности. Хотя, конечно, опять-таки - универсального ответа нет, надо смотреть по ситуации.

А когда есть хотя бы одна старая страница - то регрессия - это заход на нее. Каждая кнопка добавляет в регрессию минимум один юзкейс, и на него тратят время QA.

Цитата(Любитель @  7.11.2009,  11:39 Найти цитируемый пост)
Да, конечно, дешевле. Но, я думаю, явно не настолько. И плюс, самое главное, опять-таки - всё зависит от ситуации..

Цитата(Любитель @  7.11.2009,  11:39 Найти цитируемый пост)
Вот именно! Т. е. понадобились тесты - давай добавим. И архитектура, тест-фреймворк и пр. должны позволять это сделать с минимальными затратами. А писать тесты ради того, что они могут понадобиться - я это не поддерживаю

Именно настолько, и разрыв может быть и побольше. Проблема в том, что написанию тестов обычно мешает не архитектура (что там, заюзать IoC/DI), а именно сам код, который захочется протестировать. А говорить девелоперам "пишите весь код так, чтобы его можно было потом протестировать" - это взывать к их способнастям телепатов smile И опять же, тест понадобится тогда, когда он в первый раз упадет. Как ты предлагаешь предугадывать этот момент? 
Проблема как раз в том, что девелопер почти всегда уверен, что он пишет код идеально, и что тесты - бесполезны. Тесты лично девелоперу не нужны, и он искренне удивляется каждому багу. А еще он может сделать любую задачу за 3 дня. ;)
Цитата(Любитель @  7.11.2009,  11:39 Найти цитируемый пост)
Ну.. Если проекты подобны - я бы просто считал бы это ветками того же проекта.

У них абсолютно другая предметная область smile Просто тест-oriented архитектура оказалась очень удобна для наколбашивания проектов без тестов.
Цитата(Любитель @  7.11.2009,  11:39 Найти цитируемый пост)
А вообще, что-то мы с тулзов совсем перешли на менеджмент.   

Дык, делись списком тулзов.



--------------------
PM MAIL WWW   Вверх
Любитель
Дата 7.11.2009, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Цитата(PashaPash @  7.11.2009,  13:14 Найти цитируемый пост)
1. Пишется один (!) тест, который все это проделывает. Ес-но все управление на себя наборами данных и прочим стаффом берет фреймворк. В тесте непосредственно два вызова XXX и YYY и последующие ассерты. Формально - это не unit-тест, т.к. покрывает кучу всего.

Т. е. тест должен покрывать именно юзкейс? Тогда AFAIK это функциональный тест. Но (!) тогда он (вообще говоря) никак не сможет быстро отработать. Я всё время мыслил о ТДД именно в контексте "быстрых" юнит-тестов и, как следствие, часто запускаемых.

Цитата(PashaPash @  7.11.2009,  13:14 Найти цитируемый пост)
в котором (теоретически) все существующие юзкейсы покрыты тестами

Вот имено, что юзкейсы. Т. е. это исключительно high level тесты. Грубо говоря - код ими не покрывается. Т. е., я не могу гарантировать что этот класс работает правильно. Он работает правильно при том, как он сейчас используется. Нет, это не есть плохо - но это никак не юнит-тесты.

ИМХО, конечно, но функциональными тестами тоже должны заниматься QA. Ибо они не привязаны к внутреннему коду. Если они это автоматизируют, интегрируют в билд-систему и т. д. Отлично. Но девелоперы, я думаю, если и должны писать тесты - то только юнит-тесты.

Цитата(PashaPash @  7.11.2009,  13:14 Найти цитируемый пост)
Именно настолько, и разрыв может быть и побольше. Проблема в том, что написанию тестов обычно мешает не архитектура (что там, заюзать IoC/DI), а именно сам код, который захочется протестировать. А говорить девелоперам "пишите весь код так, чтобы его можно было потом протестировать" - это взывать к их способнастям телепатов smile И опять же, тест понадобится тогда, когда он в первый раз упадет. Как ты предлагаешь предугадывать этот момент? 
Проблема как раз в том, что девелопер почти всегда уверен, что он пишет код идеально, и что тесты - бесполезны. Тесты лично девелоперу не нужны, и он искренне удивляется каждому багу. А еще он может сделать любую задачу за 3 дня. ;)

Я не очень понял. Что значит "мешает код, а не архитектура"?

Цитата(PashaPash @  7.11.2009,  13:14 Найти цитируемый пост)
У них абсолютно другая предметная область smile Просто тест-oriented архитектура оказалась очень удобна для наколбашивания проектов без тестов.

Ну.. мне тяжело сдуить столь абстрактно, но, если архитектура та же - это тот же проект smile Если с бизнес точки зрения проекты абсолютно разные - значит просто очень крутая архитектура smile И очень большой проект.

Цитата(PashaPash @  7.11.2009,  13:14 Найти цитируемый пост)
Дык, делись списком тулзов.

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


--------------------
PM MAIL ICQ Skype   Вверх
PashaPash
Дата 7.11.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(Любитель @  7.11.2009,  13:30 Найти цитируемый пост)
Т. е. тест должен покрывать именно юзкейс? Тогда AFAIK это функциональный тест. Но (!) тогда он (вообще говоря) никак не сможет быстро отработать. Я всё время мыслил о ТДД именно в контексте "быстрых" юнит-тестов и, как следствие, часто запускаемых.

Что у вас за юзкейсы такие? O_o? У нас пока в среднем 0.1-0.2с на юзкейс. Вся фишка как раз в том, чтобы заполучить фреймворк, который по настоящему test-friendly, а не "позволяет использовать тесты".
Кстати, в 2010-й студии есть test impact view, который позволяет запускать только затронутые изменениями тесты, если уж дествительно по времени прижимает. 
Цитата(Любитель @  7.11.2009,  13:30 Найти цитируемый пост)
Вот имено, что юзкейсы. Т. е. это исключительно high level тесты. Грубо говоря - код ими не покрывается. Т. е., я не могу гарантировать что этот класс работает правильно. Он работает правильно при том, как он сейчас используется. Нет, это не есть плохо - но это никак не юнит-тесты.

ИМХО, конечно, но функциональными тестами тоже должны заниматься QA. Ибо они не привязаны к внутреннему коду. Если они это автоматизируют, интегрируют в билд-систему и т. д. Отлично. Но девелоперы, я думаю, если и должны писать тесты - то только юнит-тесты.

Вот это и фишка TDD - когда функциональные тесты пишут девелоперы. Так же особенность TDD-тестов - они не привязаны к внутреннему коду, они вообще не гарантируют что там этот класс есть. Зато они гарантируют что архитектура отвечает реальным требованиям, а не какому-то абстрактному мега-плану (см Agile ;). А еще TDD тесты отлично переживают вообще любой рефакторинг - потому что они тестируют не юниты, которые при рефакторинге колбасит, а общее поведение, которое при рефакторинге не должно измениться.
А код этими тестами отлично покрывается в том смысле, что они его хотя бы исполняют, и проверяют окончательный результат. А если кусок не покрыт - то он, по определению, не нужен. Кроме очевидных исключений.

А написание именно unit-тестов вообще на все - действительно бессмысленное занятие. Они слишком дороги в поддержке, повышают стоимость рефакторинга, мешают новому функционалу, и вообще ведут себя не по agile-овски smile

Тру-TDD наоборот, поощеряет рефакторинг и добавление нового функционала. и не ломание старого при этом. а рабочее приложение и реагирование на изменения есть хорошо. TDD - это не подход к тестированию существующего/отдельно созданного дизайна - каких-то классов, методов и прочих юнитов. Это подход к дизайну - задание функциональных требований через тесты.

Проблемы у TDD такие же, как и у Agile:
- его неправильно понимают
- выбирают неверные инструменты
- ударяются в крайности

Цитата(Любитель @  7.11.2009,  13:30 Найти цитируемый пост)
Я не очень понял. Что значит "мешает код, а не архитектура"?

В том смысле что архитектура - это общее описание того, как работает приложение. А код - непосредственная реализация задумок архитектора. Простой пример - вызов HttpContext.Current сделает кусок кода практически нетестируемым, как бы не продумывал testeability архитектор.

Цитата(Любитель @  7.11.2009,  13:30 Найти цитируемый пост)
Ну.. мне тяжело сдуить столь абстрактно, но, если архитектура та же - это тот же проект  Если с бизнес точки зрения проекты абсолютно разные - значит просто очень крутая архитектура  И очень большой проект.

Скажем, не вся архитектура, а скорее набор паттернов разного уровня + их стандартная реализация. Шаблон приложения, если так удобнее. Полученный из большого приложения выбрасиванем предметной области.


--------------------
PM MAIL WWW   Вверх
Любитель
Дата 7.11.2009, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Цитата(PashaPash @  7.11.2009,  13:14 Найти цитируемый пост)
Пользователь зашел на страницу XXX, нажал YYY, увидел ZZZ, при этом в базе был набор AAA, после стал AAAB.

Цитата(PashaPash @  7.11.2009,  15:18 Найти цитируемый пост)
У нас пока в среднем 0.1-0.2с на юзкейс.

При достаточно количестве данных - я не представляю, как это может быть 01.-0.2 секунды :(

Цитата(PashaPash @  7.11.2009,  15:18 Найти цитируемый пост)
В том смысле что архитектура - это общее описание того, как работает приложение. А код - непосредственная реализация задумок архитектора. Простой пример - вызов HttpContext.Current сделает кусок кода практически нетестируемым, как бы не продумывал testeability архитектор.

Я понял. Просто я это отнёс к архитектурным проблемам. В данном случае под проблемой понимается не кривая архитектура, а код, не следующий этой архитектуре (грубо говоря, обращеник лейеру, к оторому не надо бы здесь обращаться).


--------------------
PM MAIL ICQ Skype   Вверх
PashaPash
Дата 7.11.2009, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(Любитель @  7.11.2009,  16:13 Найти цитируемый пост)
При достаточно количестве данных - я не представляю, как это может быть 01.-0.2 секунды :(

Магия ;) на самом деле не нужно вбивать огромное количество данных, для отработки юзкейса достаточно небольшого набора. Это ж не нагрузочные тесты. Время ответа страницы до секунды - вполне типичное требование к веб-приложению. Неправильно ожидать что тест будет работать медленее живого приложения.

Это сообщение отредактировал(а) PashaPash - 7.11.2009, 16:37


--------------------
PM MAIL WWW   Вверх
Любитель
Дата 7.11.2009, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Ну.. не всякой страницы. Есть фичи, которые в любом случае занимают время - и это нормально. Но это один (!) тест. А если тестировать весь проект - это явно приличная задержка.. Что-то я всё-таки не понимаю smile


--------------------
PM MAIL ICQ Skype   Вверх
PashaPash
Дата 7.11.2009, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Любитель, это задержка в пару минут при сборке среднего проекта. Код дольше компилируется, чем тестируется smile Да и прогонка тестов при CI не требует непосредтсвенного участия разработчика.


--------------------
PM MAIL WWW   Вверх
Любитель
Дата 7.11.2009, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Не, с CI всё понятно. Непонятно с TDD. Ибо в моём понимании ТДД предполагает частый запуск тестов девелопером. А тесты после билда - в этом ничего нового нет (всё равно, конечно, далеко не всегда эти тесты автоматизированны, но я не отношу это к ТДД).


--------------------
PM MAIL ICQ Skype   Вверх
PashaPash
Дата 8.11.2009, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(Любитель @  7.11.2009,  23:25 Найти цитируемый пост)
Не, с CI всё понятно. Непонятно с TDD. Ибо в моём понимании ТДД предполагает частый запуск тестов девелопером.

Не слишком частый. Один раз на юзкейс, перед/во время коммита, если все пойдет хорошо. Часто запускать приходится текущий тест, а с ним проблем нет - пара секунд на запуск максимум, с учетом всех задержек. Ну и всякие test impact и просто группировка тестов добавляют удобства и экономят время.

Можно понаблюдать за собой, как типичный разработчик пишет код в среднем таком проекте
1. рисует зародыш ui
2. пишет логику
3. дергает ее из ui
4. правит баги
5. повторяет раз так N
6. коммитает

Минусы: 
- занимается ручным тестированием, что при некотором количестве итераций (то 2-х) просто медленнее, чем один раз написать тест
- он не оставляет артефактов в виде теста, т.е. работа по ручному тестированию не приносит пользы в будущем

Хотя, все зависит от того, в какой пропорции уходит время на ручную проверку логики по отношению к кодированию. Я пока не виде людей, которые пишут рабочий код правильно и с первой попытки. И вообще его никак не проверяют при этом ;)


--------------------
PM MAIL WWW   Вверх
Любитель
Дата 8.11.2009, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Я понял. Автоматизацию тестирования я поддерживаю в большинстве случаев (за исключением уж очень тривиальных только). Но к ТДД это не отношу. Впрочем, это вопрос терминологии.


--------------------
PM MAIL ICQ Skype   Вверх
ivashkanet
Дата 9.11.2009, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Ой нафлудили smile На выходных отдызать нужно  smile 

Цитата(PashaPash @  6.11.2009,  21:21 Найти цитируемый пост)
Там же была фраза про шутку, нет?

Я отнес ее ко второй части абзаца. smile 
Цитата(PashaPash @  6.11.2009,  21:21 Найти цитируемый пост)
Потому что когда начинающий мененджер видит

Это его проблема. А не Agile. 
Цитата(PashaPash @  6.11.2009,  21:21 Найти цитируемый пост)
Может ты просто не умеешь его готовить?

Врядли, скорее всего умею smile И чтобы не было недопониманий: я не против тестов, я против TDD (в чистом виде и на 100%-х функциональности).
Цитата(PashaPash @  6.11.2009,  21:21 Найти цитируемый пост)
TDD бесполезно применять одному

Ты про TDD или про тесты вообще?

Цитата(PashaPash @  6.11.2009,  21:21 Найти цитируемый пост)
TDD [...] не очень приятно применять в чистом виде вообще. 

+1 Кроме того: почти все в нашем мире нужно адаптировать под себя (что хорошо одному -- другому смерть Ж)) )

Цитата(PashaPash @  6.11.2009,  21:21 Найти цитируемый пост)
Разработчик не может охватить стоимость ошибки полностью. Стоимоть функционального бага, попавшего в билд это стоимость

А зачем полностью? Это не точная наука. "Внтуреннего голоса" вполне достаточно. Ведь любую ошибку можно исправить.

Цитата(Partizan @  6.11.2009,  22:17 Найти цитируемый пост)
И то и другое подпадает под условия подписанного NDA

Гнилая отмазка. Уж не обижайся.

Цитата(PashaPash @  7.11.2009,  13:14 Найти цитируемый пост)
Это довольно подробно в вики расписано, но можно тут продублировать.

Ну ты уже понял, Паша, что я с тобой тут не согласен  smile 
Цитата(Любитель @  7.11.2009,  13:30 Найти цитируемый пост)
Т. е. тест должен покрывать именно юзкейс? Тогда AFAIK это функциональный тест. Но (!) тогда он (вообще говоря) никак не сможет быстро отработать. Я всё время мыслил о ТДД именно в контексте "быстрых" юнит-тестов и, как следствие, часто запускаемых.

 smile 

Паш, у тебя неправильное ТДД. Причем я даже не знаю как тебя переубедить. У тебя скорее FTDD (Functional TDD). И я совсем не представляю как твое TDD может помочь в дизайне приложения.

СУВ, Aikin

Это сообщение отредактировал(а) ivashkanet - 9.11.2009, 10:30
PM MAIL WWW ICQ   Вверх
PashaPash
Дата 9.11.2009, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(ivashkanet @  9.11.2009,  10:28 Найти цитируемый пост)
Ты про TDD или про тесты вообще?

И про то и про другое. Вообще любое тестирование должно поддерживаться всей командой.
Цитата(ivashkanet @  9.11.2009,  10:28 Найти цитируемый пост)
Паш, у тебя неправильное ТДД. Причем я даже не знаю как тебя переубедить. У тебя скорее FTDD (Functional TDD). И я совсем не представляю как твое TDD может помочь в дизайне приложения.

В чем именно не согласен? Ты пробовал именно Unit-тесты, перед разработкой? Как unit-тесты могут помочь в дизайне всего приложения, а не отдельных юнитов? Чтобы написать тест на юнит, нужно сначала принять решение о существовании этого юнита, а это решение - и есть построение дизайна. А когда юнит появился - то никакой тест на него не может дизайн изменить.

А FTDD (скорее уж, tests before development) очень классно помогает. Именно тем, что оно определяет дизайн всего приложения, а не тестирует юниты уже в готовом дизайне.
  
Я вообще-то выше написал что у нас не TDD  в чистом виде. Но зато у нас тесты есть, практически на весь функционал, и вся команда понимает их необходимость. А у вас - нет ;)
Цитата(ivashkanet @  9.11.2009,  10:28 Найти цитируемый пост)
Ну ты уже понял, Паша, что я с тобой тут не согласен   

Переубеждай ;)
Цитата(ivashkanet @  9.11.2009,  10:28 Найти цитируемый пост)
А зачем полностью? Это не точная наука. "Внтуреннего голоса" вполне достаточно. Ведь любую ошибку можно исправить.

Это с точки зрения разработчика - программирование - это исскуство, с неточными числами и загадками.
Внутренний голос разработчика говорит "да подумаешь, это можно исправить, не проблема, работы то тут на 5 минут".
Внутренний голос QA - "опять исправять что-то внутрях, мне из-за этих 5-ти минут все перетещивать. В прошлый раз поверил что функционал YYY не затронет - а там все поломалось. Когда эти криворукие девелоперы научатся код без багов писать"

А вот у манагера все просто. С его точки зрения стоимость ошибки - вполне точная сумма в $. Можно даже прайс нарисовать.
- баг повалил тесты при билде - 5$
- из-за бага билд у QA не запустился вообще - 50$
- баг нашли QA во время smoke - 500$ за все баги
- баг найденный QA во время регресии - 1000$ за все баги
Прайс нашептан моим внутренним голосом, но легко вычисляется из количества людей, через которых проходит билд, их зп, и среднего времени обнаружения первых багов.


--------------------
PM MAIL WWW   Вверх
ivashkanet
Дата 9.11.2009, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(PashaPash @  9.11.2009,  12:43 Найти цитируемый пост)
И про то и про другое. Вообще любое тестирование должно поддерживаться всей командой.

Если учесть что TDD -- подмножество тестов, то про тесты вообще. Так вот. Все что я говорил выше к тестам вообще не относится. Только к TDD.

Цитата(PashaPash @  9.11.2009,  12:43 Найти цитируемый пост)
Переубеждай ;)

Мы уже как-то нафлудили несколько страниц. Неохото повторяться.

Цитата(PashaPash @  9.11.2009,  12:43 Найти цитируемый пост)
А вот у манагера все просто. С его точки зрения стоимость ошибки - вполне точная сумма в $. Можно даже прайс нарисовать.

А потом, через несколько лет успешных и не очень проектов, манагеру открывается ДАО: для проекта дешевле поощрять инициативу программистов и дать им возможность совершать ошибки. Вот только прайс под это дао уже не подведешь.

Добавлено через 3 минуты и 35 секунд
Цитата(PashaPash @  9.11.2009,  12:43 Найти цитируемый пост)
Но зато у нас тесты есть, практически на весь функционал, и вся команда понимает их необходимость. 

Ну кто сказал, что у нас нет тестов практически на весь важный функционал (60-70% покрытия)? Я такое не говорил.
PM MAIL WWW ICQ   Вверх
PashaPash
Дата 9.11.2009, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(ivashkanet @  9.11.2009,  13:01 Найти цитируемый пост)

А потом, через несколько лет успешных и не очень проектов, манагеру открывается ДАО: для проекта дешевле поощрять инициативу программистов и дать им возможность совершать ошибки. Вот только прайс под это дао уже не подведешь.

Какое отношение возможность совершить ошибку имеет к инициативе? Повышать инициативу (мотивировать) можно кучей разный способов, но "разрешить не писать тесты" среди них точно нет.
По личному опыту - на долгоиграющем проекте ДАО открывается как раз в обратную сторону :(
 А еще чуть позже приходит просветление что нужны именно функциональные тесты, т.к. за пару лет архитектуру переколбашивает, и unit-тесты становяться все дороже в поддержке.

ivashkanet, ты манагер или девелопер? судя по подходу - девелопер smile

Цитата(ivashkanet @  9.11.2009,  13:01 Найти цитируемый пост)

Ну кто сказал, что у нас нет тестов практически на весь важный функционал (60-70% покрытия)? Я такое не говорил. 

Цитата(ivashkanet @  6.11.2009,  10:17 Найти цитируемый пост)
Сами же тесты нужны либо для критической функциональности (высокая цена ошибки -- очень редко бывает) либо для функциональности в которой ты не совсем уверен.

Т.е. вы не уверены в 60-70% своего кода? smile


--------------------
PM MAIL WWW   Вверх
Partizan
Дата 9.11.2009, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Цитата

Гнилая отмазка. Уж не обижайся.


В чём проблема? smile  Не вижу гнили smile
Осталось только скан NDA предоставить smile


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
PashaPash
Дата 9.11.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(Partizan @  9.11.2009,  16:43 Найти цитируемый пост)

Осталось только скан NDA предоставить smile 

А это разве разрешено по NDA?


--------------------
PM MAIL WWW   Вверх
Partizan
Дата 9.11.2009, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



PashaPash, это в NDA, насколько я помню, не оговаривается...хотя, надо перечитать smile


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
ivashkanet
Дата 9.11.2009, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(PashaPash @  9.11.2009,  16:19 Найти цитируемый пост)
Какое отношение возможность совершить ошибку имеет к инициативе?

Самое прямое. Если за проявленную инициативу в случае ошибки будут по рукам бить, то инициатива уйдет на нет.
Цитата(PashaPash @  9.11.2009,  16:19 Найти цитируемый пост)
"разрешить не писать тесты" среди них точно нет.

Разрешить девелоперу самому решать писать или не писать тест. Чуешь разницу? Об этом я и говорил.
Цитата(PashaPash @  9.11.2009,  16:19 Найти цитируемый пост)
ivashkanet, ты манагер или девелопер? судя по подходу - девелопер

Да, вывод верный. Ну и что?

Цитата(PashaPash @  9.11.2009,  16:19 Найти цитируемый пост)
А еще чуть позже приходит просветление что нужны именно функциональные тесты, т.к. за пару лет архитектуру переколбашивает, и unit-тесты становяться все дороже в поддержке.

Это ДАО пришло. Вот только иногда все же нужны именно юнит тесты.
Цитата(PashaPash @  9.11.2009,  16:19 Найти цитируемый пост)
Т.е. вы не уверены в 60-70% своего кода?

Отличный прием, сэр. Ниже пояса.
Подход такой: есть функциональность, ты в ней не совсем уверен (напиши банальную сортировку); пишешь тесты; стразу появляется уверренность.
Если коротко: не уверенности + тест = есть уверенность.

Остальные 40-30% кода настолько тривиальны (отображение данных) либо настолько легко проверяются (открыл страниуц, а тебе прямо в лицо баг), что тесты им не нужны.

Цитата(Partizan @  9.11.2009,  16:43 Найти цитируемый пост)
В чём проблема? smile  Не вижу гнили smile

Хмм, настолько жесткой НДА я никогда не видел. Т.е. вообще ничего никому нельзя рассказывать? Такой жести я не встречал.  Звиняй. 
Если можно выложить НДА или в личку, то я бы хотел ее глянуть.

PM MAIL WWW ICQ   Вверх
Partizan
Дата 9.11.2009, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Собственно, пока перечитывал NDA, сделал вывод, что списком инструментов таки поделиться можно smile
Только вряд ли в этом списке кто-то что-то новое увидит...Думаю многие тут юзают что-то из Jirа/TargetProcess/CruiseControl/etc..., или всё вместе...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
PashaPash
Дата 9.11.2009, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(ivashkanet @  9.11.2009,  19:22 Найти цитируемый пост)

Разрешить девелоперу самому решать писать или не писать тест. Чуешь разницу? Об этом я и говорил.

Лучше для проекта будет, если девелопер будет уверен что "нужно писать", а не чувствовать что его заставляют. Это скорее вопрос мотивации и правильного промывания мозгов, чем инициативы. 
Идеальная ситуация - когда решает девелопер, и когда он почти всегда осмысленно решает "писать тест" потому что это лучше для проекта, а не потому что "так сказал манагер". А хороший манагер - это тот, который не дает девелоперам заметить что тесты введены принудительно. На том как это сделать не один консультант на хлеб зарабатывает smile
Цитата(ivashkanet @  9.11.2009,  19:22 Найти цитируемый пост)

Да, вывод верный. Ну и что?

Просто с точки зрения манагера (или тимлида) отсутствие теста - технический долг, который обязательно придется отдать в будущем. С точки зрения девелопера - просто допущение что функционал тривиальный и будет работать.
Цитата(ivashkanet @  9.11.2009,  19:22 Найти цитируемый пост)
Отличный прием, сэр. Ниже пояса.
Подход такой: есть функциональность, ты в ней не совсем уверен (напиши банальную сортировку); пишешь тесты; стразу появляется уверренность.
Если коротко: не уверенности + тест = есть уверенность.

Остальные 40-30% кода настолько тривиальны (отображение данных) либо настолько легко проверяются (открыл страниуц, а тебе прямо в лицо баг), что тесты им не нужны.

;)
Для существующего кода сделать "+тест" дороже, чем писать тесты вообще на все с самого начала.
Писать тесты до кода дешевле, чем писать их после.
Вывод - писать тесты сразу и на все подряд.

Ручная прогонка smoke нашего текущего проекта - открыть все страницы, сделать crud операции со всеми сущностями, проверить что хотя бы не упало нигда - 2 часа работы QC. Да, QC - низкооплачиваемые негры, но при 3-4 билдах в неделю набегает довольно ощутимая сумма. Кстати, билд чаще всего заворачивают по проваленному smoke. И манагеру при этом лезут в голову глупые мысли, типа "да что у этих девелоперов с руками". :( Легко проверяется != дешево. Хотя, все зависит от долгосрочности и масштабов проекта. 
Цитата(ivashkanet @  9.11.2009,  19:22 Найти цитируемый пост)

Это ДАО пришло. Вот только иногда все же нужны именно юнит тесты.

А вот это уже действительно иногда, редко и только на сложные куски.

Добавлено @ 20:19
Предлагаю с обсуждением TDD завязать, т.к. чистый тру-TDD тут все ненавидят (я в том числе).

Это сообщение отредактировал(а) PashaPash - 9.11.2009, 20:19


--------------------
PM MAIL WWW   Вверх
ivashkanet
Дата 10.11.2009, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(PashaPash @  9.11.2009,  20:18 Найти цитируемый пост)
Просто с точки зрения манагера (или тимлида) отсутствие теста - технический долг, который обязательно придется отдать в будущем. С точки зрения девелопера - просто допущение что функционал тривиальный и будет работать.

Не все так однозначно (нет чисто черног и чисто белого). Любой тест требует затрат времени и сил на создание и поддержку.

У меня на проекте, есть части системы цена некритической ошибки в которой низка. Это, навскидку, админка сайта. Пользуется ей 3-4 человека. Которые емею прямой контакт с нами. Простой баг фиксится в течении часа. Деплоиться либо сразу же (3-4 минуты недоступности сайта) либо ночью.

Цитата(PashaPash @  9.11.2009,  20:18 Найти цитируемый пост)
Для существующего кода сделать "+тест" дороже, чем писать тесты вообще на все с самого начала.

Опять переворачиваешь мои слова в нужную тебе сторону. Это НЕ то что мы обсуждаем. Мы обсуждаем то, как я могу быть неуверен в 60% своей функциональности.

Цитата(PashaPash @  9.11.2009,  20:18 Найти цитируемый пост)
Кстати, билд чаще всего заворачивают по проваленному smoke.

Я меняю код конкретной страницы именно ее я и запускаю на smoke. Если меняемый мною код затрагивает множество страниц, то скорее всего на него есть тест. Либо функциональность некритическая.

Цитата(PashaPash @  9.11.2009,  20:18 Найти цитируемый пост)
А вот это уже действительно иногда, редко и только на сложные куски.

Ну почему же, любой класс модели требует модульных тестов. Не считая тупых контейнеров, ессно.

Цитата(PashaPash @  9.11.2009,  20:18 Найти цитируемый пост)
Предлагаю с обсуждением TDD завязать, т.к. чистый тру-TDD тут все ненавидят (я в том числе).

 smile 
PM MAIL WWW ICQ   Вверх
PashaPash
Дата 10.11.2009, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(ivashkanet @  10.11.2009,  10:45 Найти цитируемый пост)
Не все так однозначно (нет чисто черног и чисто белого). Любой тест требует затрат времени и сил на создание и поддержку.

У меня на проекте, есть части системы цена некритической ошибки в которой низка. Это, навскидку, админка сайта. Пользуется ей 3-4 человека. Которые емею прямой контакт с нами. Простой баг фиксится в течении часа. Деплоиться либо сразу же (3-4 минуты недоступности сайта) либо ночью.

Ну, опять же, зависит от проекта. У нас на основном проекте админки нет, а изменение в любой сущности ведет (потенциально) к пересчету кучи данных (предметная область такая :*( ).  Т.е. некритических мест практически нет.

Цитата(ivashkanet @  10.11.2009,  10:45 Найти цитируемый пост)

Опять переворачиваешь мои слова в нужную тебе сторону. Это НЕ то что мы обсуждаем. Мы обсуждаем то, как я могу быть неуверен в 60% своей функциональности.

Если точнее - как ты можешь быть уверен в оставшихся 40% smile

Цитата(ivashkanet @  10.11.2009,  10:45 Найти цитируемый пост)

Ну почему же, любой класс модели требует модульных тестов. Не считая тупых контейнеров, ессно.

У нас есть фунциональные тесты, которые все равно это класс покрывают. А если не покрывают - значит класс сам по себе существует, и вообще в приложении не нужен. Т.е. у нас на основе тестов и покрытия делается дизайн всего приложения, или по крайней мере крупных кусков, а не отдельных юнитов.
Пытаться ввести TDD на уровне юнитов - это вообще гибельная затея, т.к. рефакторинг чего-то крупнее класса потребует написания новых тестов и переписывания старых. В TDD тесты не меняются во время рефакторинга, по определению. Есть строгие фазы, red-green-refactor, и сама фишка стадии refactor - получить красивый код того, что наколбашено на стадии green, и при этом не трогать тесты. Т.е. при "TDD" через unit, а не функциональные тесты, всегда есть два плохих выхода
- переписывать тесты на стадии refactor - что нехорошо и очень дорого, и на самом деле не TDD
- отказаться от рефакторинга кусков крупнее класса/метода (юнита) - что тоже неприятно, и не TDD, т.к. тесты не задают дизайн приложения.
Обычно выбирают первое, что ведет к непрятным расходам (манагер слышыт "я рефакторил, пришлось переписать туеву хучу тестов ради нормального кода") и довольно тупой работе. А еще при этом девелопер выбрасывает код, который он писал. Даже хуже, на стадии red он знает что код тестов придется выбросить на стадии refactor. А это снижает мотивацию до нуля. --> вырабатывает строгую ненависть к слову TDD.
Ты скорее всего пол года шел именно этим путем, судя по уровню внутренней ненависти ;)


--------------------
PM MAIL WWW   Вверх
ivashkanet
Дата 10.11.2009, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(PashaPash @  10.11.2009,  15:53 Найти цитируемый пост)
Ну, опять же, зависит от проекта.

А я о чем???  smile 

Цитата(PashaPash @  10.11.2009,  15:53 Найти цитируемый пост)
Если точнее - как ты можешь быть уверен в оставшихся 40%

Странно. Я вот специально перечитал ветку. И не нашел этого вопроса. Нашел в точности противоположный, на который отвечал.

Цитата(PashaPash @  10.11.2009,  15:53 Найти цитируемый пост)
У нас есть фунциональные тесты, которые все равно это класс покрывают

Если мы вернемся к деньгам, и стоимости рабочего времени, то окажется, что такой подход невыгоден. 
Так как функциональный тест не показывает что конкретно сломалось в модели. То придется дебажить чтобы понять что поломалось.
Кроме того, с большой долей вероятности повалится не один тест, а целая пачка.
PM MAIL WWW ICQ   Вверх
PashaPash
Дата 10.11.2009, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(ivashkanet @  10.11.2009,  17:39 Найти цитируемый пост)

Странно. Я вот специально перечитал ветку. И не нашел этого вопроса. Нашел в точности противоположный, на который отвечал.

Однажды на встрече с синоптиками товарищ Сталин спросил: "Какова вероятность того, что прогнозы погоды верны?". "40%" - отвечали ему синоптики. "А вы предсказывайте наоборот" - посоветовал им тов. Сталин.
У меня просто другое понятие "уверенности", которое не совпадает с уверенностью с точки зрения разработчика. Точнее, совпадает, но с понижающим коэффициентом smile
Цитата(ivashkanet @  10.11.2009,  17:39 Найти цитируемый пост)
Если мы вернемся к деньгам, и стоимости рабочего времени, то окажется, что такой подход невыгоден. 
Так как функциональный тест не показывает что конкретно сломалось в модели. То придется дебажить чтобы понять что поломалось.
Кроме того, с большой долей вероятности повалится не один тест, а целая пачка. 

TDD предполагает короткие циклы. Если что-то поломалось - виноваты те изменения, которые ты только что сделал. Что значительно экономит время на отладке и поиске виноватых smile
Ну и основные вопросы так и остались без ответа. Если использовать unit-тесты, а не функциональные, то
- Как юнит-тесты могут задавать дизайн приложения, если они ничего крупнее юнита не тестируют?
- Как рефакторить, не переписывая при этом юнит-тесты.


--------------------
PM MAIL WWW   Вверх
ivashkanet
Дата 11.11.2009, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(PashaPash @  10.11.2009,  19:48 Найти цитируемый пост)
У меня просто другое понятие "уверенности", которое не совпадает с уверенностью с точки зрения разработчика. Точнее, совпадает, но с понижающим коэффициентом

Гадание на кофейной гуще. С чего ты взял что ЗНАЕШЬ как я мыслю?
Цитата(PashaPash @  10.11.2009,  15:53 Найти цитируемый пост)
Если точнее - как ты можешь быть уверен в оставшихся 40%

Если включить думалку, то из моих ответов будет ясно, что 40% это не код в котором я УВЕРЕН, а код на который нецелесообразно (по мнению программиста) писать тесты. В эти 40% входит некритичная функциональность, функциональность с низкой ценой ошибки и, только сейчас, код в котором я уверен.

Цитата(PashaPash @  10.11.2009,  15:53 Найти цитируемый пост)
Ты скорее всего пол года шел именно этим путем, судя по уровню внутренней ненависти ;) 

У меня НЕТ ненависти к ТДД. Я считаю его ОТЛИЧНЫМ инструментом дизайна публичного интерфейса класса. И считаю, что в других случаях ТДД излишне. Что я и сказал пару страниц назад.

Цитата(PashaPash @  10.11.2009,  19:48 Найти цитируемый пост)
TDD предполагает короткие циклы.

Мы НЕ обсуждаем TDD.

Цитата(PashaPash @  10.11.2009,  19:48 Найти цитируемый пост)
Если что-то поломалось - виноваты те изменения, которые ты только что сделал. Что значительно экономит время на отладке и поиске виноватых

С твоих слов (лень искать цитату): ты запускаешь только те юзкейсы которые (по твоему мнению) затрагивают проводимые изменения. Допустим ты 2 часа кодил. Собрался комитить. Запустил ВСЕ тесты. Десяток повалилось. Какое конкретно изменение сломало систему?

Цитата(PashaPash @  10.11.2009,  19:48 Найти цитируемый пост)
Ну и основные вопросы так и остались без ответа. Если использовать unit-тесты, а не функциональные, то

Нивопрос.
Цитата(PashaPash @  10.11.2009,  19:48 Найти цитируемый пост)
- Как юнит-тесты могут задавать дизайн приложения, если они ничего крупнее юнита не тестируют?

А кто говорил про дизайн всего приложения? ТДД дизайнит публичный интерфейс класса (юнита). Больше ничего (ИМО). Для дизайна приложения в целом есть еще целый вагон техник.

Цитата(PashaPash @  10.11.2009,  19:48 Найти цитируемый пост)
- Как рефакторить, не переписывая при этом юнит-тесты. 

Тут какая-то ошибка закралась. 
Рефакторинг -- изменение кода БЕЗ именения функциональности. Тесты -- фиксируют некую функциональность. Изменяешь тесты -- изменяешь функциональность. Т.е. не рефакторишь, а кодишь.

Поэтому тесты изменяются не на этапе рефакторинга, а на этапе Red (этап фиксирования новых требований в тестах). На этом закончу. Если хочешь подробнее -- нужен конкретный пример.

СУВ, ivashkanet
PM MAIL WWW ICQ   Вверх
PashaPash
Дата 11.11.2009, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(ivashkanet @  11.11.2009,  10:39 Найти цитируемый пост)
адание на кофейной гуще. С чего ты взял что ЗНАЕШЬ как я мыслю?

Я знаю как мыслят девелоперы, работа у меня такая :(
Цитата(ivashkanet @  11.11.2009,  10:39 Найти цитируемый пост)
У меня НЕТ ненависти к ТДД. Я считаю его ОТЛИЧНЫМ инструментом дизайна публичного интерфейса класса. И считаю, что в других случаях ТДД излишне. Что я и сказал пару страниц назад.

А я вот считаю TDD отличным инструментом для дизайна всего приложения, что тоже пару страниц пытаюсь дозаказать.
Цитата(ivashkanet @  11.11.2009,  10:39 Найти цитируемый пост)
С твоих слов (лень искать цитату): ты запускаешь только те юзкейсы которые (по твоему мнению) затрагивают проводимые изменения. Допустим ты 2 часа кодил. Собрался комитить. Запустил ВСЕ тесты. Десяток повалилось. Какое конкретно изменение сломало систему?

"не по моему мнению" а по мнению студии, что немного более обоснованно. или вообще все тесты. Тесты валяться не просто так, "не работает". Они при этом вполне нормальные следы оставляют, в виде stack trace, или конкретных ошибок, "получили 4 вместо 5". Ну и при 2-х часах кодинга не оценить возможный impact на существующий функционал - это как-то из области фантастики.

А какая альтернатива? Получить работающие юнит-тесты, но при этом неработающий фунционал? 
Неделю кодишь, коммитаешь, собираешь билд, все покрыто тестами. Потом приходят QA и говорят "вот такая-то фича не работает, а раньше работала". Какое конкретно изменение за неделю сломало систему (если предположить, что влияние даже 2-х часового кодинга оценить невозможно).
Цитата(ivashkanet @  11.11.2009,  10:39 Найти цитируемый пост)
А кто говорил про дизайн всего приложения? ТДД дизайнит публичный интерфейс класса (юнита). Больше ничего (ИМО). Для дизайна приложения в целом есть еще целый вагон техник.

TDD дизайнит публичный интерфейс чего угодно. Есть понятие Acceptance Test Driven Development, собственно, его мы и используем. Есть Unit Test-Driven Development, тот самый с тру-юнит-тестами, его мы ненавидим всей конторой smile Вагон техник - это хорошо, но их можно вполне успешно совмещать.

Цитата(ivashkanet @  11.11.2009,  10:39 Найти цитируемый пост)
Тут какая-то ошибка закралась. 
Рефакторинг -- изменение кода БЕЗ именения функциональности. Тесты -- фиксируют некую функциональность. Изменяешь тесты -- изменяешь функциональность. Т.е. не рефакторишь, а кодишь.

Поэтому тесты изменяются не на этапе рефакторинга, а на этапе Red (этап фиксирования новых требований в тестах). На этом закончу. Если хочешь подробнее -- нужен конкретный пример.

Может я как-то не так объясняю...
1. Рефакторинг -- изменение кода БЕЗ именения функциональности.
2. Тесты -- фиксируют некую функциональность.
3. Юнит-тесты -- фиксируют некую функциональность одного юнита (класса или его метода)
4. Тесты не изменяются на этапе рефакторинга
5. Функциональность одного юнита (класса или его метода) не изменяется на этапе рефакторинга
6. Функциональность и публичный интерфейс класса не изменяется на этапе рефекторинга

7a. Невозможен рефакторинг, который меняет набор юнитов, или связи межну ними, или
7b. Работоспособность приложения при таком рефакторинге не проверяется тестами, и это плохой рефакторинг.

Если в цепочке есть ошибка, ткни пальцем, потому что я ее не вижу.

Конкретный пример. 
- Есть класс A, c методом SetLight(bool isOn, double brightness). 
А не виден конечным пользователям приложения (вполне типично для web, там видны только контроллеры и presentation model). Но он тем не менее A.SetLight - вполне так юнит (наименьшая единица, которую можно протестировать).
 - Есть тесты на A.SetLight
 - Есть вызывающие его классы B и C. Возможно, через интерфейс Ia.SetLight(bool).
 - Есть тесты на B и C, мокающие Ia.SetLight(bool) (тру-юнит тесты, тестирующие один юнит)

Как провести рефакторинг, в процессе которого SetLight начент принимать один параметр LightSettings (Introduce Parameter Object), и при этом не переписать тесты для B и С?
Как провести рефакторинг, который выделит из A какой-то кусок в подкласс (Extract Subclass) и при этом не переписать тесты на A.

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


--------------------
PM MAIL WWW   Вверх
ivashkanet
Дата 12.11.2009, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(PashaPash @  11.11.2009,  17:53 Найти цитируемый пост)
Я знаю как мыслят девелоперы, работа у меня такая :(

Ок, идем по другому: C чего ты знаешь как Я мыслю?
Цитата(PashaPash @  11.11.2009,  17:53 Найти цитируемый пост)
А я вот считаю TDD отличным инструментом для дизайна всего приложения, что тоже пару страниц пытаюсь дозаказать.

У нас разные понятия TDD. C моей точки зрения твой подход -- не ТДД. А несколько постов назад мы договорились не трогать ТДД.


Что-то у меня отпало желание продолжать. Наш камень преткновения -- разные определения ТДД. На этом и закончим.
PM MAIL WWW ICQ   Вверх
PashaPash
Дата 12.11.2009, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(ivashkanet @  12.11.2009,  10:13 Найти цитируемый пост)

Ок, идем по другому: C чего ты знаешь как Я мыслю?

Ты ведь девелопер, а все девелоперы с точки зрения PM-а мыслят примерно одинаково :(

Кстати, грустный анекдот про Agile. Статья http://en.wikipedia.org/wiki/TargetProcess была убита из википедии за "незначимость, незаметность софта (в качестве значимости приведены только ссылки на выигрыш minor industry award (Jolt)), и употребление жаргонизма 'Agile project management'".
Как-то обидно даже, вроде местный (минский) продукт :(

Это сообщение отредактировал(а) PashaPash - 12.11.2009, 15:26


--------------------
PM MAIL WWW   Вверх
tol05
Дата 14.11.2009, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



привет всем.

Согласен с Любителем, почти во всем... Даже не по себе как-то ))

От себя: несколько раз видел упоминание о тестах UI... Я не понял, честно говоря, что именно вкладывается в смысл этой фразы.. UI не должен подлежать тестированию в принципе.


Это сообщение отредактировал(а) tol05 - 14.11.2009, 01:09


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
PashaPash
Дата 14.11.2009, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



В чем именно согласен? ;)

Цитата(tol05 @  14.11.2009,  01:06 Найти цитируемый пост)
От себя: несколько раз видел упоминание о тестах UI... Я не понял, честно говоря, что именно вкладывается в смысл этой фразы.. UI не должен подлежать тестированию в принципе.

В паттерне MVC все, кроме модели, - это UI (Presentation Layer). Контроллеры, и даже часть View (клиентский javascript, например) вполне так подлежат тестированию.


--------------------
PM MAIL WWW   Вверх
tol05
Дата 14.11.2009, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



Цитата(PashaPash @  14.11.2009,  11:01 Найти цитируемый пост)
В паттерне MVC все, кроме модели, - это UI (Presentation Layer). Контроллеры, и даже часть View (клиентский javascript, например) вполне так подлежат тестированию.

А в паттерне MVVM UI - презентейшен - это модель, а UI - это даже не View, а композиция мз стандартных контролов, предоставляемых фреймворком.. 
Давайте оставим паттерны в покое, поскольку мы говорим о инструментах.. 

Все время говорится о разделении UI от представления. Зачем? Не только обеспечить разделяемость разработки, но и обеспечить максимальную тестируемость продукта. При этом подразумевается, что все, что должно подлежать тестированию, должно уйти из UI. Точно так же, как и "(клиентский javascript)". Вычислительные скрипты должны быть вынесены из UI вообще. Ну а тестировать скрипты типа getElementById('btn1').style.visibility='hidden' ... ну уж увольте.. Если кнопка есть, она будет hidden... Я этому верю как аксиоме )) Каждые два часа проверять, не удалил ли кто-нибудь эту кнопку случайно?! Давайте не называть этот маразм методологией ))

В таком случае, что же тогда тестирование UI? Тестирование купленного фрейморка (стандартные контролы - часть фрейморка)? Разработчик не несет ответственность за фрейморк и заказчик всегда это знает. Он или согласен, чтобы этот фрейморк использовался в его продукте. Или нет... UI - это средство отображения состояния приложения. Мы же не тестируем такое средство отображения информации, как дисплей машины, когда пытаемся доказать клиенту, что мы сделали его продукт качественно? UI - средство взаимодействия с пользователем. Мы не тестируем клавиатуру и мышь...

Ну а если мы не можем обеспечить композитному глупому UI возможность работать только с элементарными типами данных, генерить только стандартные события... и ни о чем ни в коем случае не думать. То в этом случае нужно нанять нормального архитектора в компанию. Вот такое мое мнение о тестировании UI ))

В чем я согласен с Любителем
1. В его высказываниях об аджайле и тестировании
2. TDD - это зло. Я бы даже сказал - это фикция, убивание проектного времени и особенно - денег клиента
3. цитата " Хотя такой ситуации ИМХО просто не должно быть - надо писать в обратном порядке smile"  (сначала иногда делается прототипирование)
4. "Если планируется разработка или (особенно) переработка, затраная в архитектурном плане." - при этом тестировать нужно только интерфейсы взаимодействия модулей и слоев. Также, если слой достаточно сложен - тестировать нужно интерфейсы взаимодействия классов внутри слоя.
5. о QA и функциональных тестах.


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
PashaPash
Дата 15.11.2009, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



tol05, К сожалению, в современных приложениях, в частности веб, тот самый клиентский скрипт (он же presentation logic), который ты считаешь тривиальным и незначительным, по объему значительно превышает BL. Если знаешь как "вынести их из UI вообще" - переселить на сервер - скажи, а то мужики то не знают smile Возможно, в гугл или в твиттер надо позвать архитектора - а то они понаписывали сложного кода на javascript, ламеры. ;)
Composit UI с элементарными типами и стандартными CRUD событиями - это инструмент для data-driven intranet приложений. А в интернете сейчас в моде user-driven design, где поведение каждой кнопки приходится обдумывать.

Ну и вообще похоже что ты по UI подразумеаешь именно сами кнопочки и контролы, их действительно бессмысленно тестить. Я под UI подразумевал presentation layer, IMHO, это было достаточно очевидно из контекста. Сходи например, на MSDN, Designing the Components of an Application or Service, там Presentaion Layer состоит из UI Components и UI Process Components, как бы в подтверждение того что не только я так UI понимаю. В посленем App Arch Guide тоже. Может быть тебе стоит переосмыслить понятие UI?

В паттерне MVVM все три куска - это Presentation, т.е. UI в общепринятом смысле. 
 
О ТДД и прочем - да, согласие с тем, что ТДД надо строить не на функциональных тестах, вполне логично ведет к остальным пунктам. Там выше были мои аргументы по кажому из них, если не согласен - отпишись. Потому что пока (IMHO) твоя позиция - тесты вообще практически не нужны, что как бы противоречит здравому смыслу (опять же IMHO). Утверждение что тесты не нужны, или нужны, но только если "планируется" - просто следствие слишком большой самоуверенности разаработчика. Хотя, для интранет приложений, которые сдаются вникуда, без саппотра и развития - да, тесты не нужны.

Открой блог targetprocess (явно уважаемой тру-agile конторы), запись о процессе: http://www.targetprocess.com/blog/2009/10/...nt-process.html
Посмотри какое у них покрытие функциональными тестами, какое у них отношение к "ненужным" тестам UI.

Ну и опять же, убедить меня что тесты на UI не нужны, а TDD вредно - без шансов, потому что я могу сравнить результаты на схожих проектах с TDD и тестами на UI и без.

Ну и раз уж начали флудить, ты - разработчик? или РМ, архитектор, тимлид?

Это сообщение отредактировал(а) PashaPash - 15.11.2009, 01:57


--------------------
PM MAIL WWW   Вверх
tol05
Дата 15.11.2009, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



PashaPash,
По поводу всего того, что Вы написали... Кроме web-based applications в мире существует большое колличество других типов ПО. 
Я всегда считал, считаю и буду считать, что самый главный минус в разработке приложений данного типа - это перегрузка граничного UI слоя всякого рода скриптами, желание угодить всем платформам и браузерам, а также нарастить usability данных приложений точечными включениями многочисленных платформ, чужеродных друг другу. Отсюда и чудовищный объем javascript-та. 

Однако, в последние годы, становится заметным (даже далекому от сферы разработки человеку) что даже для такого "трудного ребенка" как web-based applications делается все, чтобы облегчить UI слой, избавиться от скриптов. Уменьшить их, автоматизировать их создание и т.д. и т.п. Это и AJAX с его внутренними (не нуждающимися в своем тестировании) скриптами. И средства скриптогенерации. И Silverlight.. Кстати, последний вообще подразумевает отказ от всего того, что Вы называете современным и модным...

user-driven design - он не подразумевает скриптогенерацию? Кто будет писать те многочисленные скрипты, в тестировании которых Вы нуждаетесь каждый день?
Про паттерн MVVM - будем считать что Вы этого не писали... 

Цитата(PashaPash @  15.11.2009,  00:53 Найти цитируемый пост)
Ну и раз уж начали флудить, ты - разработчик? или РМ, архитектор, тимлид?
я в своих постах флуда не вижу. Ну а кто я... А разве это важно?!! Какое это может иметь значение для интернет community?
Цитата(PashaPash @  15.11.2009,  00:53 Найти цитируемый пост)
убедить меня что тесты на UI не нужны, а TDD вредно - без шансов
и в мыслях такого не было. Я все больше посты Любителя и Ивашки читал...

О том, что тесты не нужны, я не писал. Вниметельнее перечитайте текст.
Ок, объясню свою мысль яснее. Тесты  нужны только для проверки выполнения пунктов требований. Пока требования не написаны (на этапе прототипа например) - тесты не нужны. Когда требования написаны - тесты нужны. Когда требования меняются - тесты меняются. Дописываются, модифицируются и т.п.

Это сообщение отредактировал(а) tol05 - 15.11.2009, 12:03


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
PashaPash
Дата 15.11.2009, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



tol05, да, мне тоже не нравится javascript и современный web. Но я не настолько верю в светлое будущее кодогенерации.
И, кстати, что будет служить источником для генерации? Просто интересно, почему так же нельзя сгенерировать бизнес-логику, и BL?

Мне вот, как не слишком далекому то сферы человеку, становится заметным что в последнее время все пытаются написать как можно больше логики UI именно на javasript. Ajax вообще подразумевает достаточно активную ручную работу с html  и dom. И в последние годы (гм) появляется много фреймворков, направленных на облегчение написания скрипта (а не выноса его и кодогенерации). Тот же jquery.

И как, интересно, эту проблему решит Silvelight? Да, Silverlight позволяет не писать скриптов, но Presentation Layer на SL - это все еще Presentation Layer (который UI). И если SL решает проблему, то почему до сих пор Flash не захатил web, ведь он так же способен ее решить?

Цитата(tol05 @  15.11.2009,  11:25 Найти цитируемый пост)
user-driven design - он не подразумевает скриптогенерацию? Кто будет писать те многочисленные скрипты, в тестировании которых Вы нуждаетесь каждый день?

Вообще-то не подразумевает, он подразумевает что логика UI не генерируется по данным. Ну и опять же скриптогенерацию из чего? Из описания логики UI, но на другом языке?
 
Цитата(tol05 @  15.11.2009,  11:25 Найти цитируемый пост)
Про паттерн MVVM - будем считать что Вы этого не писали... 

Ну зачем же. Я вот все еще уверен что MVVM, MVC, MVP - это паттерны организации Presentation Layer, и что все, кроме M в них - это presentation layer.

И, кстати, чтобы уж совсем не спорить - там выше на пару страницы упоминались не тесты UI. Там упоминались тесты из (посредством) UI. И, кстати, неавтомтизированные.
Цитата(tol05 @  15.11.2009,  11:25 Найти цитируемый пост)
Ну а кто я... А разве это важно?!! Какое это может иметь значение для интернет community?

Не имеет, но цель топика - собрать инфу о процессах и инструментах, а не спорить и TDD и возможности кодогенерации UI. А для описания процесса (и для спора о TDD ;) важен контекст - роль спорящего, типы приложений, ориентация (custom/outsource/freelance), длительность (2-3 месяца, 2-3 года). А иначе - это как спорить с php-том о транзакциях.

Цитата(tol05 @  15.11.2009,  11:25 Найти цитируемый пост)
О том, что тесты не нужны, я не писал. Вниметельнее перечитайте текст.
Ок, объясню свою мысль яснее. Тесты  нужны только для проверки выполнения пунктов требований. Пока требования не написаны (на этапе прототипа например) - тесты не нужны. Когда требования написаны - тесты нужны. Когда требования меняются - тесты меняются. Дописываются, модифицируются и т.п.

И чем же тогда вредно TDD (при нефанатичном применении)? TDD вообще никак не противоречит написанному, IMHO. Даже наоборот, позволяет контролировать покрытие требований тестами. 
TDD - это когда тесты меняются чтобы соответствовать требованиям. А потом уже меняется код. Что в этом плохого?

Кстати, поделись процессом с тулзами. Интересно, насколько активно у вас используется кодогенерация ;)



--------------------
PM MAIL WWW   Вверх
ivashkanet
Дата 16.11.2009, 10:22 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Новый виток? Прикольно. Отвяжитесь вы от жаваскрипта. Он может представлять как UI так BL логику. Первую тестировать нет смысла, а вот вторую стоит. Для этого и фреймворки есть. Например в FireBug-е. Есть и масса других, но я этой темой не интересовался за ненадобностью.

Цитата(PashaPash @  15.11.2009,  01:53 Найти цитируемый пост)
под UI подразумевал presentation layer

Вот так бы и сказал. Обычно под этим понимают разные вещи.

PM MAIL WWW ICQ   Вверх
PashaPash
Дата 16.11.2009, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(ivashkanet @  16.11.2009,  10:22 Найти цитируемый пост)

Вот так бы и сказал. Обычно под этим понимают разные вещи.

Так я ж и сказал, чтобы прояснить ситуацию. Или ты не мое сообщение процитировал smile Даже нашел исходное сообщение, там UI упоминается в контексте UI/BL/DAL, что, IMHO, позволяет однозначно понять что я подразумевал под UI. Там даже есть ссылки, почему именно я посмел обозвать Presentation - UI smile
Осталось узнать что именно tol05 подразумевает под UI, т.к. мои сообщения он тупо не читает smile

Цитата(ivashkanet @  16.11.2009,  10:22 Найти цитируемый пост)
Новый виток? Прикольно. Отвяжитесь вы от жаваскрипта. Он может представлять как UI так BL логику. Первую тестировать нет смысла, а вот вторую стоит. Для этого и фреймворки есть. Например в FireBug-е. Есть и масса других, но я этой темой не интересовался за ненадобностью.

BL на JavaScript - вообще сомнительная вещь, вряд ли есть смысл переносить бизнес-логику в браузер, хотя бы из соображений безопасности. То, что ты подразумеваешь под BL на JavaScript, скорее всего называется UI process components, и он является частью UI. Это вполне однозначно сказано в Web Architecture Pocket Guide от производителя.

Отвязаться от JavaScript очень хочется, но, IMHO, невозможно вообще во всех случаях. Потому что в некоторых случаях отвязка от JS, кодогенерация, и перенос логики на сервер ведут к банальным тормозам в приложении. 

Весь спор как раз о том, стоит ли тестировать UI-логику. UI-логика может быть весьма нетривиальной. Я бы просто не был настолько категоричен, на уровне "нельзя в принципе". Все зависит от конкретного приложения, и от конкретной предметной области. Может быть тяжело представить сложную логику UI? Конктретный пример, из текущего проекта:
- в приложении есть диаграммы Ганта (типа как у Горбунова, улучшенные). 
- с drag'n'drop и прочими плюшками
- с относительно нетривиальной логикой именно на уровне Presentation (даже точнее, UI, если под ним весь Presentation не понимать)
- в требованиях явно прописано - они должны быть написаны полностью на стороне браузера
- в тех же требованиях - никакого silverlight.
- объемы данных - до 400 проектов, до 5000 тасков, + завязка еще на 5-6 сущностей, типа таймлогов 
- в требованиях - диаграммы должны работать быстро

Я пока не вижу других вариантов реализации, кроме как написать это все вручную (относительно, с использованием фреймворков), и написать код UI именно на JS. С компонетной моделью, шаблонизаторами и проч, но все равно на JS. И его придется тестировать, причем хотя бы часть - автоматически.

Требования довольно странные, но сводяться к одному - у конкурентов есть такой гант, а у нас - нет. И кроме такого вот принудительно-скриптового ганта есть еще более веселые куски.

Если гуру tol05 подскажет как "автосгенерировать" этот кусок, и при этом не получить тормоза и chatty-интерфейс на сервере, то я с радостью откажусь от тестирования UI в принципе.

На случай подхода "а вы напишите на silverlight" - в текущей версии гант как раз на silverlight, и именно его хотят переписать на JavaScript. Потому что бизнесу абсолютно пофиг на внутреннюю чистоту архитектуры, им продажи важны. Да, я полностью согласен вот с этим утверждением:
Цитата(tol05 @  15.11.2009,  11:25 Найти цитируемый пост)
Я всегда считал, считаю и буду считать, что самый главный минус в разработке приложений данного типа - это перегрузка граничного UI слоя всякого рода скриптами, желание угодить всем платформам и браузерам, а также нарастить usability данных приложений точечными включениями многочисленных платформ, чужеродных друг другу. Отсюда и чудовищный объем javascript-та. 


Но смысл его - главный минус в разработке веб приложений - то, что они веб. Или только я так его понимаю?

Пока чистые, не rich-client, веб-приложения востребованы - мы вынуждены их писать. 
Вообще обсуждение пошло по цепочке:
- UI не подлежит тестированию в принципе
- а вот в asp.net mvc/HTML/javascript подлежит
- а вы юзайте MVVM и вообще не пишите веб, пишите под сильверлайт

Хотя, судя по обсуждению, один я web-ом занимаюсь, а все остальные спокойно пишут под win. Тогда еще можно понять почему UI считают легким налетом поверх BL.

Это сообщение отредактировал(а) PashaPash - 16.11.2009, 18:00


--------------------
PM MAIL WWW   Вверх
tol05
Дата 16.11.2009, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



какая-то непонятная и болезненная реакция на точку зрения, отличную от Вашей, PashaPash
Я высказал свои мысли, как и все остальные. Жаль что не они пришлись Вам по душе...

Цитата(PashaPash @  16.11.2009,  16:32 Найти цитируемый пост)
а вы юзайте MVVM и вообще не пишите веб, пишите под сильверлайт

сильверлайт - это web-ориентированная технология, к сведению...

Цитата(PashaPash @  16.11.2009,  16:32 Найти цитируемый пост)
Или только я так его понимаю?

Надеюсь что да.

Цитата(PashaPash @  16.11.2009,  16:32 Найти цитируемый пост)
Хотя, судя по обсуждению, один я web-ом занимаюсь, а все остальные спокойно пишут под win. Тогда еще можно понять почему UI считают легким налетом поверх BL.
Вы глубоко заблуждаетесь

Цитата(PashaPash @  16.11.2009,  16:32 Найти цитируемый пост)
Осталось узнать что именно tol05 подразумевает под UI, т.к. мои сообщения он тупо не читает
Цитата(PashaPash @  16.11.2009,  16:32 Найти цитируемый пост)
Если гуру tol05 подскажет как "автосгенерировать" этот кусок, и при этом не получить тормоза и chatty-интерфейс на сервере, то я с радостью откажусь от тестирования UI в принципе.

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

В остальном - я умолкаю. 
Все что я хотел сказать - я сказал. Как сумел.




--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
PashaPash
Дата 16.11.2009, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



tol05, я просто очень болезненно реагирую на фразу "UI тестированию не подлежит". Весь день перед этим убит на прикручивание Selenium к cc.net, исключительно ради тестов на UI.

Возможно, у нас действительно проблемы с архитектурой, и стоит перейти на silverlight, генерацию скриптов и прочее. Ваш совет нанять архитектора - очень полезен, но сначала хотелось бы видеть хоть какую-то надежду. Сейчас у нас генерируемое по метаданным UI, с Silverlight, вполне ровное в архитектурном плане. Но неприемлимое с точки зрения пользователя, по вышеперечисленным причинам. Боюсь, что нанятый архитектор посоветует бороть проблемы со скоростью и временем отклика ... переписыванием логики UI на javascript. Точнее, уже минимум два "архитектора по вызову" так посоветовали. У вас есть контакт "правильного" архитектора, желательно в Минске?

Цитата(tol05 @  16.11.2009,  18:23 Найти цитируемый пост)

Надеюсь что да.

Вы глубоко заблуждаетесь (с) Приведите хоть один агрумент, ссылку на источник. Почему вы промолчали раньше, когда я явно попросил прояснить термин UI в Вашем понимании? Ну или ответьте на вопрос - UI Processing Component - это часть UI?

Цитата(tol05 @  16.11.2009,  18:23 Найти цитируемый пост)

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

Гуру употреблен не ради насмешки. Человек с 145 репутации вполне заслуживает звания гуру smile Я действительно надеюсь что вы приведете советы по генерации нетривиального UI. Жаль что вы так отреагировали на просьбу помочь в вполне конкретной ситуации. Я не ожидал, что после бодрого начала о "генерации скриптов" и "выноса логики из UI" вы вдруг так странно воспримите вопрос о применении Вашего подхода к вполне реальной и актуальной для меня проблеме. Просьба о применении Ваших знаний (в которых вы меня вполне убедили) - это выход из рамок?

Это сообщение отредактировал(а) PashaPash - 16.11.2009, 21:30


--------------------
PM MAIL WWW   Вверх
PashaPash
Дата 16.11.2009, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



ЗЫ. Если бы я действительно пытался отрицать чужую точку зрения и наезжать на остальных, я бы не писал длинных развернутых ответов. Я бы сделал так:
Цитата(ivashkanet @  16.11.2009,  10:22 Найти цитируемый пост)
Новый виток? Прикольно. Отвяжитесь вы от жаваскрипта. Он может представлять как UI так BL логику. Первую тестировать нет смысла, а вот вторую стоит. Для этого и фреймворки есть. Например в FireBug-е. Есть и масса других, но я этой темой не интересовался за ненадобностью.

Бизнес-логика (!) на javascript (!!) в client tier (!!!) в web (!!!!). И этот феерический бред 2 раза плюсанули???
Но ведь не делаю, пытаюсь вежливо отвечать. Сорри, не удержался. No offence к ivashkanet, я прекрасно понял смысл сообщения. Строчка выше - шутка. Но в любом случае - глубокое презрение к плюсовавшим.

Это сообщение отредактировал(а) PashaPash - 16.11.2009, 23:43


--------------------
PM MAIL WWW   Вверх
Любитель
Дата 17.11.2009, 00:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Насколько я понял, просто Паша под UI понимает презентейшен-лейер (в том или ином виде), а BL - лейер бизнес-логики. Остальные же: UI - код, ответственный непосредсвенно за UI, BL - код, отвечающий за некоторую внутреннюю (в различных смыслах) логику.

Добавлено через 4 минуты и 32 секунды
Ах да, насчёт яваскрипта:
1. Это оффтопик smile 
2. Я за ручное написание. Яваскрипт - отличный язык со своими паттернами. Проблема производительности? Ну.. она везде есть smile Вопрос времени, ситуации и компромиссов (к каждому со своей стороны)..


--------------------
PM MAIL ICQ Skype   Вверх
PashaPash
Дата 17.11.2009, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Любитель, ну хоть кто-то читает мои мессаги. 
JavaScript - не оффтопик, по крайней мере после анонса coded user interface test в 2010-й студии.
http://blogs.msdn.com/paulcornell/archive/...ui-testing.aspx
Там встречаются слова ui testing и ui layer, но с этим ничего поделать - они не читают винград.


--------------------
PM MAIL WWW   Вверх
Любитель
Дата 17.11.2009, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Ну.. на всякий случай - я тоже привык под UI-кодом понимать код, ответственный именно за UI. BL правда противопоставлением не является.. Даже не знаю, обычно просто юай и логика smile Уж простите за банальность.

Что касается оффтопик или нет: конкретные метод разработки на JS, конкретные паттерны и пр. - ИМХО оффтопик, тулзы для генерации, тестирования, поддержки и пр., а также организация процесса JS-девелопмента (хотя я бы не стал это так особо выделять) - нет, конечно.


--------------------
PM MAIL ICQ Skype   Вверх
PashaPash
Дата 17.11.2009, 03:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(Любитель @  17.11.2009,  01:37 Найти цитируемый пост)
Ну.. на всякий случай - я тоже привык под UI-кодом понимать код, ответственный именно за UI. BL правда противопоставлением не является.. Даже не знаю, обычно просто юай и логика  Уж простите за банальность.

UI код - код ответственный за UI - это нефункциональное определение.
Бизнес-логика — совокупность правил, принципов, зависимостей поведения объектов предметной области системы. Если логика описывает поведение UI - то она не бизнес. 

Неважно, кто и как понимает. Есть вполне строгая терминология, и если ее не придерживаться - то будет бесполезный спор. Когда на любые попытки уточнить терминологию получаешь "вы глубоко заблуждаетесь". 

Есть официальный гайд от MS по архитектуре. Давайте его придерживаться. По гайду - UI - это area of concern - группировка функционала. За нее отвечает Presentation Layer. Все остальные толкования терина UI в пределах топика ничем не подтверждены. а толкователи - глубоко заблуждаются, или намеренно запутывают терминологию, IMHO.

Ну в и целом спор довольно странный 
- MS включило в VS2010 поддержку coded user interface tests
- Телерики выпустили WebUI Test Studio, с поддержкой Silverlight
- TargetProcess пытается покрыть UI тестами (это для фанатов agile аргумент)
- Местные QA пищат от Selenium-а
- На винграде меня убеждают что UI тестированию не подлежит в принципе. И что я глубоко заблуждаюсь. 

Только мне кажется что с последним пунктом что-то не то?

Это сообщение отредактировал(а) PashaPash - 17.11.2009, 03:15


--------------------
PM MAIL WWW   Вверх
Любитель
Дата 17.11.2009, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



В классическом разделении по лейерам слово UI не фигурирует.
Что касается тестирования UI.. Тестировать UI необходимо. Всё надо тестировать. Тут вопрос в том, мануальное это тестирование или нет. Так вот, сам UI - мануально и никак иначе. Ну как мы нормально увидим, что там блоки разъехались не так?! Взаимодействие UI с остальными частями - вполне себе автоматизируется.


--------------------
PM MAIL ICQ Skype   Вверх
PashaPash
Дата 17.11.2009, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Любитель, блоки разъехались - это не баг в UI, это баг в Page Layout. smile

UI - это не layer, если по классике. Это "проблемная область". Его нельзя тестировать, и он не может ни с чем взаимодействовать. И его нельзя "автосгенерить" и "вынести из него скрипты". 
Presentation Layer - это код, полностью посвященный проблемной области "пользовательский итерфейс" в классическом разделении. И в нем внутри бывает много логики.

Мне проще написать "тесты на UI", чем "тесты на код, отвечающий за функционал в пределах UI area of concern". И судя по гуглу, не только мне.


--------------------
PM MAIL WWW   Вверх
ivashkanet
Дата 18.11.2009, 11:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(PashaPash @  16.11.2009,  23:36 Найти цитируемый пост)
ЗЫ. Если бы я действительно пытался отрицать чужую точку зрения и наезжать на остальных, я бы не писал длинных развернутых ответов. Я бы сделал так:

Паша, я не пытаюсь отрицать твою точку зрения. Я ее понимаю и уважаю. Я банально устал с тобой спорить.
Вся беда в том, ИМО, что своими "длинными развернутыми ответоами" ты уводишь от темы. Просмотри нашу дискуссию еще раз. Ты увидишь, что я старался сконцентрироваться на чем-то конкретном, а ты все добавлял и добавлял новые аспекты (или вспоминал старые)

Цитата(PashaPash @  16.11.2009,  23:36 Найти цитируемый пост)
Бизнес-логика (!) на javascript (!!) в client tier (!!!) в web (!!!!). И этот феерический бред 2 раза плюсанули???

Нда, вот этого я от тебя не ожидал. Дальше я буду писать прописные истины.
Браузерные приложения -- приложения клиент серверные. С сервером все понятно, а вот клиента часто недооценивают. А между прочим на HTML&CSS + JavaScript можно писать не менее Rich приложения, чем на тех же формах. 
Проблема толко в том, что это делать не так удобно как на том же WinForms. Но это проблема не JavaScript, а отсутствия готовых инструментов. Хорошо, что в последнее время это направление стало усиленно развиваться. JQuery, Prototype, Dojo, ExtJS,...
Даже браузерных Осей уже вагон написали. Не говоря о болле простых приложениях.

Но разговор не об этом, а об BL на JavaScript в Client Tier в вэб приложениях.
В моем понимании BL -- это логика, важная для бизнеса, т.е. людей, которые пользуются нашим приложениям.


Сразу скажу, я еще не настоящий сварщик JavaScript програмист и ни разу не писал JavaScript который можно тестировать. Так, стандартные макаронины smile Так что дальше будет не про тестируемость BL на скрипте, а про саму BL.

Самый простой и очевидный пример BL в жаваскрипте -- валидация. Но не банальная проверка на непустоту или на число в поле, а более сложная, затрагивающая бизнесс заказчика. Например дата начала должна быть раньше даты конца, при установлении приоритета high обязательно нужно указать планируемую дату окончания и назначить ответственного (это из моей области).
Интернет магазин: при добавлении твоара в корзину либо при удалении, пометке "птичками" нужно пересчитать общую стоимость товаров.
Опять моя область: есть список задач, их можно отметить птичками -- после отметки нужно пересчитать % выполнения.
И т.д. и т.п.

Главный момент: JavaScript -- мощный и функционалный язык, вот только язык силен не сам по себе, а всевозможным middleware для этого языка. Чего у JS не густо.


PM MAIL WWW ICQ   Вверх
Любитель
Дата 18.11.2009, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Цитата(PashaPash @  17.11.2009,  22:18 Найти цитируемый пост)
это не баг в UI, это баг в Page Layout.

Ээ.. А это не UI?! А если этот лейаут строится так или иначе динамически? Баг вполне может быть в скрипте там каком-нибудь...


--------------------
PM MAIL ICQ Skype   Вверх
ivashkanet
Дата 18.11.2009, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(PashaPash @  17.11.2009,  03:10 Найти цитируемый пост)
MS включило в VS2010 поддержку coded user interface tests

Майкрософт всегда ориентировалась на посредственных пользователей (программеры -- пользователи VS). Кроме того это модно.
Следовательно -- это бабки.

Цитата(PashaPash @  17.11.2009,  03:10 Найти цитируемый пост)
- Телерики выпустили WebUI Test Studio, с поддержкой Silverlight

См выше.

Цитата(PashaPash @  17.11.2009,  03:10 Найти цитируемый пост)
- TargetProcess пытается покрыть UI тестами (это для фанатов agile аргумент)

Опять выше. Если ты производишь Agile инструмент -- не факт что ты сам agile. Agile сейчас такой же бизнес, чем макдональдс и кока кола.

Цитата(PashaPash @  17.11.2009,  03:10 Найти цитируемый пост)
Местные QA пищат от Selenium-а

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

Мне не нравится UI тесты для разработчика, потому что они хрупкие (скажем так) и  медленные.
Я предпочитаю изолировать тестируемый класс, набор классов и полностью в тесте контролировать воздействие на них.
С UI так не получиться. Для UI, как минимум, нужна база. Заполенная данными. Для QA это хорошо, для девелопера -- нет.

Тесты должны часто запускаться. Медленные тесты запускаются только на CI сервере. 

Цитата(PashaPash @  17.11.2009,  03:10 Найти цитируемый пост)
- На винграде меня убеждают что UI тестированию не подлежит в принципе. И что я глубоко заблуждаюсь. 

Заблуждаешься. Тестировать UI можно и нужно. Этим занимается QA. Вот пусть и дальше этим занимается.

Это сообщение отредактировал(а) ivashkanet - 18.11.2009, 11:33
PM MAIL WWW ICQ   Вверх
PashaPash
Дата 18.11.2009, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



ivashkanet, ну вот, понеслось smile Ты не с тем человеком споришь. Сейчас покажу фокус:

Цитата(tol05 @  14.11.2009,  01:06 Найти цитируемый пост)
От себя: несколько раз видел упоминание о тестах UI... Я не понял, честно говоря, что именно вкладывается в смысл этой фразы.. UI не должен подлежать тестированию в принципе.

Цитата(ivashkanet @  18.11.2009,  11:32 Найти цитируемый пост)

Заблуждаешься. Тестировать UI можно и нужно.

Красиво, да? Я могу идти за попкорном?

Я вообще не утверждал что UI должны тестировать разработчики. У нас тесты на UI пишут QA. По крайней мере, пытаются. И крутятся эти тесты на CI сервере. С двумя твоими постами я почти полностью согласен. Упоминание UI тестов как "сначала пишем UI тесты" выше было в контексте "неправильного TDD".

Топик посвящен процессу. Если CI - часть процесса, то тесты на UI - тоже.

Цитата(ivashkanet @  18.11.2009,  11:07 Найти цитируемый пост)

В моем понимании BL -- это логика, важная для бизнеса, т.е. людей, которые пользуются нашим приложениям.

Т.е. вообще вся логика приложения... В моем понимании, есть BL - логика доменной области. И UI логика - логика взаимодействия с пользователем. Почти все модные паттерны, типа MVC, это разделение вводят. Ну и опять же, есть гайд со строгим определением, а не моим или твоим пониманием. http://apparch.codeplex.com/. Там куча ссылок на источники, чтобы показать что это не ламерская дока от MS. smile
Могу даже процитировать, Presentation Layer ... common issues ... UI Process Components ... Mixing business logic with UI process logic.

EDIT: у нас когда-то один препод в универе любил спрашивать - а что такое бизнес-логика. И в ответ на "важная для бизнеса и для людей" уточнял - "а в приложении есть еще и другая, не важная для бизнеса и для людей, логика"? No joking.

Цитата(Любитель @  18.11.2009,  11:20 Найти цитируемый пост)

Ээ.. А это не UI?! А если этот лейаут строится так или иначе динамически? Баг вполне может быть в скрипте там каком-нибудь... 

Это часть UI. Ну, "разъехались" очень трудно протестировать. А вот "кнопка не включилась", что чаще случается - очень просто.

Это сообщение отредактировал(а) PashaPash - 18.11.2009, 18:35


--------------------
PM MAIL WWW   Вверх
Любитель
Дата 18.11.2009, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Что чаще случается - это спорно smile 


--------------------
PM MAIL ICQ Skype   Вверх
PashaPash
Дата 18.11.2009, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(Любитель @  18.11.2009,  16:41 Найти цитируемый пост)
Что чаще случается - это спорно smile  

Не спорно, просто it depends smile У нас второе чаще. Даже слишком часто. 


--------------------
PM MAIL WWW   Вверх
PashaPash
Дата 19.11.2009, 09:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Надо было топик назвать "не ищи определение, придумай свое понимание UI/BL/whatever и убеди PashaPash что он в корне не прав". И брать деньги за вход. Я уже вижу следующий виток. Код DataAccess полезен людям и бизнесу, поэтому он - бизнес-логика.

Предлагаю вернуться к теме обсуждения. Где списки инструментов, где процесс от участников?


--------------------
PM MAIL WWW   Вверх
ivashkanet
Дата 19.11.2009, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(PashaPash @  18.11.2009,  13:44 Найти цитируемый пост)
Красиво, да? Я могу идти за попкорном?

О, и мне немножко! Если чессно, то я по диагонали читаю этот поток мыслей smile Сорри.

Цитата(PashaPash @  18.11.2009,  13:44 Найти цитируемый пост)
С двумя твоими постами я почти полностью согласен.

Ураааа, взаимопонимание  smile  smile 

Цитата(PashaPash @  18.11.2009,  13:44 Найти цитируемый пост)
Топик посвящен процессу. Если CI - часть процесса, то тесты на UI - тоже.

Мы ведь говорим про процесс разработки (программерами), а не весь процесс разработки начиная от анализа требований до приемо  сдаточных испытаний и ввода в эксплуатацию. Так?

Тогда спорно.  UI тесты пишутся QA. Ночной билд сломался. Полетели UI тесты. 
Кто по Процессу должен разбираться в причине? Если разработчики, то что делать если UI тест криво написан и не учитывает новых  изменений? Если QA, то почему сломался билд, почему отвлекли разработчиков от этого?
Получается, у QA должен быть свой билд сервер. Во как smile 

Цитата(PashaPash @  18.11.2009,  13:44 Найти цитируемый пост)
"а в приложении есть еще и другая, не важная для бизнеса и для людей, логика"

О, вагон. Рюшечки, бантики, фенечки; низкоуровневые детали реализации. Т.е. все то, без чего приложение все еще будет приносить пользу, либо то, что можно кардинально изменить.

В любом случае, какое бы ты (правильное) определение ни привел. Все что я написал выше останется примерами бизнесс логики.
Цитата(PashaPash @  18.11.2009,  13:44 Найти цитируемый пост)
BL - логика доменной области

Тоже масло масленное ;-)

Цитата(PashaPash @  18.11.2009,  13:44 Найти цитируемый пост)

Ну и опять же, есть гайд со строгим определением, а не моим или твоим пониманием. http://apparch.codeplex.com/. Там куча ссылок на источники, чтобы показать что это не ламерская дока от MS. smile
Могу даже процитировать, Presentation Layer ... common issues ... UI Process Components ... Mixing business logic with UI process logic.

Люди много чего написали в мире. Было время я все это читал перечитывал. Сейчас стараюсь стремиться к простоте и руководствоваться здравым смыслом. Ну и держать руку на пульсе. 

Цитата(PashaPash @  19.11.2009,  09:09 Найти цитируемый пост)
Предлагаю вернуться к теме обсуждения. Где списки инструментов, где процесс от участников? 

Заметь, тему называл ты smile 

СУВ, ivashkanet

Добавлено через 11 минут и 26 секунд
Цитата(PashaPash @  19.11.2009,  09:09 Найти цитируемый пост)
Предлагаю вернуться к теме обсуждения. Где списки инструментов, где процесс от участников?

У Скрама есть отличная практика. Называется Ретроспектива. Это когда в конце спринта люди собираются и обсуждают что хорошего было внесено в Процесс, что не работает, что мы, возможно, не так поняли. В конце выносится решение нужно ли продолжать использовать "это" или нет. Попробовали TDD -- оказалось, что стало есть много времени, кодить некогда. Отказались. Попробовали Специальную тулзу -- отлично работает ...
Вот это грамотно. В общем нужно не стоять на месте, а двигаться. Не важно куда, вперед, назад, влево, вправо. То что работает для одних, не факт будет работать для вас.  Голова на плечах подскажет когда вы движетесь не туда. Зато вы можете найти звою "бронзовоую пульку" smile

Но для этого, как и вообще для Agile нужны высокий уровень команды и некоторая степень свободы со стороны менеджера. 
И вообще: Agile -- это сложно!
Цитата
Agile, особенно SCRUM – отличный способ организовывать разработку. Agile прост и элегантен, быстр и дешев. Он позволяет делать продукты, максимально близкие к ожиданиям Заказчика. Но это сложно. Да, это сложно!

PM MAIL WWW ICQ   Вверх
PashaPash
Дата 19.11.2009, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(ivashkanet @  19.11.2009,  10:35 Найти цитируемый пост)

О, и мне немножко! Если чессно, то я по диагонали читаю этот поток мыслей smile Сорри.

Это нечестно! Почему меня за тестирование UI послали нанимать архитектора, а тебя - нет :(

Цитата(ivashkanet @  19.11.2009,  10:35 Найти цитируемый пост)
Мы ведь говорим про процесс разработки (программерами), а не весь процесс разработки начиная от анализа требований до приемо  сдаточных испытаний и ввода в эксплуатацию. Так?

Процесса разработки (программерами) IMHO не бывает.
Цитата(ivashkanet @  19.11.2009,  10:35 Найти цитируемый пост)

Тоже масло масленное ;-)

Ну, не совсем. доменная (предметная область) - вполне самостоятельное понятие. Скажем, проекты, задачи, баги, ассайны у нас. Логика которая человека на проект ассайнит - бизнес. А которая галочки на странице снимает и поля отключает - не бизнес. Навигация - тоже не бизнес. 
Ну хоть чуть более точное определение, чем "полезная людям" smile

Цитата(ivashkanet @  19.11.2009,  10:35 Найти цитируемый пост)

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

Ну, не совсем smile
На практике - валидация - практически единственная бизнес-логика, которая должна вылазить в Presentation в не-rich клиенте. И при том дублироваться на сервере. Даже не логика, а business rules. счас даже цитату воткну:
Avoid business rules, with the exception of input and data validation, in UI processing components.
Layers should represent a logical grouping of components. For example, use separate layers for user interface, business logic, and data access components.
Components within a layer should be cohesive. In other words, the business layer components should provide only operations related to application business logic.

В rich все сложнее, но надо учитывать что rich client - это отдельное приложение, которое почти целиком на client tier работает. Rich client на javascript встречается в вебе очень редко. И все эти UI Test Framework-и - больше для тестирования UI Processing, чем BL.

Цитата(ivashkanet @  19.11.2009,  10:35 Найти цитируемый пост)
Люди много чего написали в мире. Было время я все это читал перечитывал. Сейчас стараюсь стремиться к простоте и руководствоваться здравым смыслом. Ну и держать руку на пульсе. 

Да, но надо хоть раз в пару лет перечитывать. Долгими зимними ночами smile Тем более что дока там без воды почти.

Кстати, у вас SCRUM? Какой размер команды, что пишете, на чем? smile

Добавлено через 13 минут и 32 секунды
Цитата(ivashkanet @  19.11.2009,  10:35 Найти цитируемый пост)

Заметь, тему называл ты smile 

Я минут 20 над названием думал. smile Даже хотел на темы поделить. Надо дописать - не гербалайф TDD.


--------------------
PM MAIL WWW   Вверх
ivashkanet
Дата 19.11.2009, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(PashaPash @  19.11.2009,  14:33 Найти цитируемый пост)
Процесса разработки (программерами) IMHO не бывает.

ААААА, ну я не знаю как это называется. smile Программеры -- программируют. У них собственный процесс. Свои задачи, сферы ответственности и проч. У QA свое. Я где-то как-то про нечто в этом смысле сказать хотел smile 

Цитата(PashaPash @  19.11.2009,  14:33 Найти цитируемый пост)
На практике - валидация - практически единственная бизнес-логика, которая должна вылазить в Presentation в не-rich клиенте

Ключевое слово "должна". Вот только зачастую лазить на сервер за небольшими изменениями затратно. Вот и приходим к жаваскрипту.
Цитата(PashaPash @  19.11.2009,  14:33 Найти цитируемый пост)
И при том дублироваться на сервере

Не обязательно. Есть подходы которые позволяют использовать общий набор правил. Там правда колбаса с кодогенерацией и посетителем, так что для прикручивание этого нужны хорошие скилы. Но, однажды настроенная, система работает как часы. 

Цитата(PashaPash @  19.11.2009,  14:33 Найти цитируемый пост)
Да, но надо хоть раз в пару лет перечитывать. Долгими зимними ночами smile Тем более что дока там без воды почти.

Тупо негде применять. Мои проекты не требуют такой уровень знаний. У меня и так overskill раза в два: то что я предлагаю либо никто не понимает и полностью сваливают реализацию на меня, либо говорят нинуно это нам, бум клобасить по старинке (город небольшой, всего 3 программерских конторы и все быдлокодят в аутсорсе).

Я сейчас Ruby и ее рельсы осваиваю. Суперский язык. Стремает немного динамическая типизация. Но сколько возможностей дает этот подход  smile 

Цитата(PashaPash @  19.11.2009,  14:33 Найти цитируемый пост)
Кстати, у вас SCRUM? Какой размер команды, что пишете, на чем?

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


PM MAIL WWW ICQ   Вверх
PashaPash
Дата 19.11.2009, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(ivashkanet @  19.11.2009,  16:37 Найти цитируемый пост)
Не обязательно. Есть подходы которые позволяют использовать общий набор правил. Там правда колбаса с кодогенерацией и посетителем, так что для прикручивание этого нужны хорошие скилы. Но, однажды настроенная, система работает как часы. 

Ес-но, я имел ввиду что код будет дублироваться (точнее, должен). Ради этого в 3.5 SP1 (или бете 4-ки, не помню) во фреймворк затянули кучу аттрибутов. Кстати, насчет глобальной кодогенерации - http://thedailywtf.com/Articles/The_Custom...dly_System.aspx

Цитата(ivashkanet @  19.11.2009,  16:37 Найти цитируемый пост)

Я сейчас Ruby и ее рельсы осваиваю. Суперский язык. Стремает немного динамическая типизация. Но сколько возможностей дает этот подход  smile 

И ты, Брут...


--------------------
PM MAIL WWW   Вверх
ivashkanet
Дата 20.11.2009, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(PashaPash @  19.11.2009,  18:11 Найти цитируемый пост)
И ты, Брут... 

Угу! 
Нужно расти вширь. Вглубь без практики понту нет smile 

Цитата(PashaPash @  19.11.2009,  18:11 Найти цитируемый пост)
Ради этого в 3.5 SP1 (или бете 4-ки, не помню) во фреймворк затянули кучу аттрибутов. 

Ты о кодконтрактах? Их цель в другом.. Хотя они отлично расширяютя для генерации скриптов валидации.

Цитата(PashaPash @  19.11.2009,  18:11 Найти цитируемый пост)
Кстати, насчет глобальной кодогенерации - http://thedailywtf.com/Articles/The_Custom...dly_System.aspx

Любая крайность плоха.
PM MAIL WWW ICQ   Вверх
PashaPash
Дата 20.11.2009, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(ivashkanet @  20.11.2009,  10:18 Найти цитируемый пост)

Ты о кодконтрактах? Их цель в другом.. Хотя они отлично расширяютя для генерации скриптов валидации.

Есть еще System.ComponentModel.DataAnnotations. Они для DynamicData введены, но вполне можно и в других целях использовать. Для asp.net mvc, например, есть готовый model binder, который их понимает: http://www.asp.net/learn/mvc/tutorial-39-cs.aspx

Это сообщение отредактировал(а) PashaPash - 20.11.2009, 17:57


--------------------
PM MAIL WWW   Вверх
ivashkanet
Дата 30.11.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Нашел перевод зачетной статьи про ТДД
Очень грамотно написано и очень мне близко так как перекликается с тем, к чему пришел я.
PM MAIL WWW ICQ   Вверх
tol05
Дата 30.11.2009, 13:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



Цитата

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


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
ДобренькийПапаша
Дата 1.1.2010, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



Я не стал создавать отдельную тему. Если надо перенесите, но я подумал, что здесь можно задавать любые вопросы по поводу проектирования.

Начал читать книгу Нильссона "Применение DDD..." вот тут речь идёт о некоей сохраняемости, но толком непонятно, что это? Это принцип какой-то?


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
ivashkanet
Дата 6.1.2010, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



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

Вот что говорит Вики:
Цитата

Persistence in computer science refers to the characteristic of data that outlives the execution of the program that created it. Without this capability, data would only exist in RAM, and would be lost when this RAM loses power, such as on computer shutdown.[citation needed]

This is achieved in practice by storing the data in non-volatile storage such as a hard drive or flash memory.

Image editing programs or word processors, for example, achieve data persistence by saving their documents to files to avoid data loss in the event of power failures.

PM MAIL WWW ICQ   Вверх
ivashkanet
Дата 3.2.2010, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Интеграционные тесты для Веб приложений (MVC).

Именно такими, ИМО, они и должны быть.
Сценарий:
Цитата

1. When a logged-out user visits /Home/SecretAction, they should be redirected to the login screen
2. If the user then enters a valid username and password, they should be redirected back to /Home/SecretAction
3. Since the user is now logged in, they should be shown some secret information

Тест:
Код

[Test]
public void LogInProcess()
{
    string securedActionUrl = "/home/SecretAction";
 
    appHost.SimulateBrowsingSession(browsingSession => {
        // First try to request a secured page without being logged in                
        RequestResult initialRequestResult = browsingSession.ProcessRequest(securedActionUrl);
        string loginRedirectUrl = initialRequestResult.Response.RedirectLocation;
        Assert.IsTrue(loginRedirectUrl.StartsWith("/Account/LogOn"), "Didn't redirect to logon page");
 
        // Now follow redirection to logon page
        string loginFormResponseText = browsingSession.ProcessRequest(loginRedirectUrl).ResponseText;
        string suppliedAntiForgeryToken = MvcUtils.ExtractAntiForgeryToken(loginFormResponseText);
 
        // Now post the login form, including the verification token
        RequestResult loginResult = browsingSession.ProcessRequest(loginRedirectUrl, HttpVerbs.Post, new NameValueCollection
        {
            { "username", "steve" },
            { "password", "secret" },
            { "__RequestVerificationToken", suppliedAntiForgeryToken }
        });
        string afterLoginRedirectUrl = loginResult.Response.RedirectLocation;
        Assert.AreEqual(securedActionUrl, afterLoginRedirectUrl, "Didn't redirect back to SecretAction");
 
        // Check that we can now follow the redirection back to the protected action, and are let in
        RequestResult afterLoginResult = browsingSession.ProcessRequest(securedActionUrl);
        Assert.AreEqual("Hello, you're logged in as steve", afterLoginResult.ResponseText);
    });
}


А всякие WatiN, Sellenium -- в топку.
PM MAIL WWW ICQ   Вверх
Unlocker
Дата 25.3.2010, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 2.11.2007
Где: Москва - Знаменск (Капустин Яр)

Репутация: нет
Всего: 2



Хочу немного освежить тему несколькими вопросами:
  •  Есть ли у кого опыт работы в территориально-распределённых проектах? Какими средствами пользуется такая команда(ы)?
  •  На протяжении всей темы шёл спор о тех или иных методологиях. Мне интересен вопрос постановки процесса разработки. Представьте, что у Вас есть небольшая команда (4-6) разработчиков NET (WinForms, WinServices). С чего бы Вы посоветовали начать повышение качества разрабатываемого ими ПО? Т.е. каковы приоритеты и последовательность внедрения тех или иных методологий и соответствующих инструментов?
Для чистоты эксперимента примем, что у команды нет ничего, кроме системы контроля версий нет.
Прошу высказать свои предложения...

Это сообщение отредактировал(а) Unlocker - 25.3.2010, 14:20
--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b."
PM MAIL ICQ Skype GTalk Jabber   Вверх
PashaPash
Дата 25.3.2010, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



ivashkanet, поздно заметил мессагу. Эти интеграционные тесты не тестят javascript, в котором больше всего проблем и вылазит. А тупо делать тест в виде серии веб-реквестов умеет сама студия, даже с записью. Но пользы в таком тестировании мало.

Unlocker, по процессу - все очень зависит от контекста. Если бы для любой небольшой команды подходил один и тот же процесс, его бы давно задокументировали, и назвали "Процесс 4-6". 
По инструментам - стандартый набор. любая система CI (ccnet/tfs/teamcity), любая гонялка тестов (*unit, mstest), что-то для code review...


--------------------
PM MAIL WWW   Вверх
Unlocker
Дата 26.3.2010, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 2.11.2007
Где: Москва - Знаменск (Капустин Яр)

Репутация: нет
Всего: 2



Цитата(PashaPash @  25.3.2010,  21:25 Найти цитируемый пост)
по процессу - все очень зависит от контекста. Если бы для любой небольшой команды подходил один и тот же процесс, его бы давно задокументировали, и назвали "Процесс 4-6"


PashaPash, не открою ничего нового, если скажу, что у старины Брукса идея про отсутствие "серебряной пули" была высказана довольно давно и чётко.

Цитата(PashaPash @  25.3.2010,  21:25 Найти цитируемый пост)
По инструментам - стандартый набор. любая система CI (ccnet/tfs/teamcity), любая гонялка тестов (*unit, mstest), что-то для code review... 


Именно это мне и хотелось увидеть -- практические примеры уже внедренных и работающих процессов вкупе с инфраструктурой. Я не пытаюсь теоретически вывести оптимальный набор инструментов и методик для нашей небольшой группы. Мне интересно собрать отзывы людей, чтобы очертить круг вариантов для рассмотрения.

PashaPash, внедрялись ли в вашей организации системы учёта дефектов (багтрекеры), создавались ли базы знаний на основе движков Wiki или других средств?

Обсуждение можно продолжать...

Это сообщение отредактировал(а) Unlocker - 26.3.2010, 10:38
--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b."
PM MAIL ICQ Skype GTalk Jabber   Вверх
PashaPash
Дата 26.3.2010, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Unlocker, у нас основная связка cruise control.net + msbuild/mstest + selenium/watin для ui тестов. Test Track Pro как багтрекер (исторически сложилось, QA не хотят с него переходить). На паре проектов - HP Quality Center, но IMHO он монструозен немного smile Ну и всякие wiki и crucible, по необходимости.

Из Continuous Integration утилит еще вроде TeamCity рассматривали. Можно поробовать еще TFS как полностью готовое решение (или полностью не готовоеsmile

Проще поднять конкретный набор на виртуалках и проверить. 

Даже ограничение "нет ничего, кроме системы контроля версий нет" - уже довольно сильное. Вдруг у вас там VSS. Или наоборот, Mercurial.


--------------------
PM MAIL WWW   Вверх
Unlocker
Дата 27.3.2010, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 2.11.2007
Где: Москва - Знаменск (Капустин Яр)

Репутация: нет
Всего: 2



Цитата(PashaPash @  26.3.2010,  15:35 Найти цитируемый пост)
Даже ограничение "нет ничего, кроме системы контроля версий нет" - уже довольно сильное. Вдруг у вас там VSS. Или наоборот, Mercurial. 


PashaPash, насчет VSS ты попал в точку. Он был поднят еще до моего прихода в компанию и сейчас начальство приходит к мнению о необходимости его постепенной замены. Насчет новой системы контроля версий склоняемся в пользу Subversion (центральный репозиторий исходных кодов легче бэкапить), систему отслеживания дефектов Trac. А вот насчет остальной инфраструктуры пока думаем... Build-сервером пока думаем сделать ccnet.
TFS нам при поверхностном знакомстве не понравился своей громоздкой настройкой (надо настроить всё и сразу), чего естественно без дорогих специалистов сделать не получится.
Систему тестирования пока тоже обсуждаем: nunit (этот вариант пока рассматривается основным), mbunit, mstest (с твоей подачи). Это надо отдельно решать, но не к спеху, т.к. это будет после системы учета дефектов.
Build-машина пока тоже не определена: первоначально хотели nAnt, но этот проект уже несколько лет как никто не поддерживает. Тут тоже предстоит собрать инфо и обсудить.
Ну а прочие прелести типа систем инспекции кода, база знаний MediaWiki будут подниматься по мере получения положительных результатов с предыдущих этапов.

Это сообщение отредактировал(а) Unlocker - 27.3.2010, 11:31
--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b."
PM MAIL ICQ Skype GTalk Jabber   Вверх
PashaPash
Дата 27.3.2010, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Unlocker, если у вас распределенная команда - берите mercurial. вместо nant - обычный msbuild.

TFS все-таки попробуйте. Там не все так сложно в настройке, и может оказаться проще чем настройка 5 отдельных утилит. По установке есть подробная, до клика, инструкция.


--------------------
PM MAIL WWW   Вверх
Unlocker
Дата 27.3.2010, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 2.11.2007
Где: Москва - Знаменск (Капустин Яр)

Репутация: нет
Всего: 2



Цитата(PashaPash @  27.3.2010,  13:44 Найти цитируемый пост)
TFS все-таки попробуйте. Там не все так сложно в настройке, и может оказаться проще чем настройка 5 отдельных утилит. По установке есть подробная, до клика, инструкция. 

Видать, эта инструкция мне как-то попадалась к прочтению (500 с лишним страниц не произвели на меня впечатление "быстро и понятно"). Еще в TFS мне не нравится опора на SharePoint (у нас он использовался для внутрикорпоративных нужд). На мой взгляд, Wiki в том или ином виде значительно удобнее для простого сбора, поддержки и обновления информации по проектам (ну, вероятно, у меня такое мнение окончательно сложилось после оформления дипломной работы в TeXe, где в проекте много отдельных документов, связанных определенными ссылками) ;)

Кстати, одна из проблем в нашей инфраструктуре -- это хранение важных данных в системе инженерного документооборота в формате doc/excel. При большом количестве документов, разложенных в разных папках, найти нужную тебе информацию практически нереально. Исходя из информации, полученной от начальства, филиал первоначально будет пользоваться инфраструктурой центрального офиса, т.к. ответственный персонал будет именно в центре.

Mercurial и Git мы рассматривали в качестве возможной системы контроля версий, но сошлись на мнении, что с централизованным хранилищем работа будет удобнее (что впрочем еще подлежит проверке на практике). По крайней мере, в вопросе развертывания соответствующей инфраструктуры наверняка (см. выше).

Насколько мне видится текущая ситуация в нашей компании (для компании разработка ПО -- не основной вид бизнеса. основная сфера деятельности -- системная интеграция, САПР, электронный документооборот). При появлении больших и перспективных проектов, в отличие от прошлых имевших, в основном, локально-прикладной характер, появилась потребность в постановке процесса и современной инфраструктуры разработки. Хотя пока это только наши (я и мой коллега) устремления, им еще предстоит выдержать проверку у начальников на соответствие бизнес-задачам компании в целом и отдела в частности.

PashaPash, спасибо за беседу. Любые интересные мысли с удовольствием выслушаю ;)

Это сообщение отредактировал(а) Unlocker - 27.3.2010, 15:27
--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b."
PM MAIL ICQ Skype GTalk Jabber   Вверх
Unlocker
Дата 27.3.2010, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 2.11.2007
Где: Москва - Знаменск (Капустин Яр)

Репутация: нет
Всего: 2



Немного прочитал про сравнение между собой различных продуктов СУВ (CustIS). Убедился, что всё-таки в условиях компании и довольно больших продуктов выгоднее использовать Subversion: у распределенной системы повышенный расход дискового пространства на рабочих станциях и сложности слияния при достаточно большом количестве работников. SVN хорошо себя зарекомендовал на ресурсах "Sourceforge" и "Google Code", поэтому начнём с него.
--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b."
PM MAIL ICQ Skype GTalk Jabber   Вверх
Unlocker
Дата 30.3.2010, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 2.11.2007
Где: Москва - Знаменск (Капустин Яр)

Репутация: нет
Всего: 2



Такой вопрос по инфраструктуре разработки: 
использовалась ли кем-нибудь для управления проектами разработкой связка Trac+Subversion под .NET? 
Если да, то какие плагины Trac'a вы считаете необходимыми при первоначальном развертывании?
--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b."
PM MAIL ICQ Skype GTalk Jabber   Вверх
Unlocker
Дата 5.4.2010, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 2.11.2007
Где: Москва - Знаменск (Капустин Яр)

Репутация: нет
Всего: 2



Процесс обсуждения параллельно идет на другой площадке по адресу -- Agile Software Development.
Вопросы организации инфраструктуры для .NET-разработки в теме Инфраструктура NET-разработки.
Желающие могут присоединяться к обсуждению... 
--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b."
PM MAIL ICQ Skype GTalk Jabber   Вверх
ДобренькийПапаша
Дата 5.4.2010, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



PashaPash, а если в одно лицо, сам разрабатываешь продукт, что бы Вы применяли в смысле инструментов?

Это сообщение отредактировал(а) ДобренькийПапаша - 5.4.2010, 18:11


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
PashaPash
Дата 5.4.2010, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



ДобренькийПапаша, очевидно, те же самые инструменты smile


--------------------
PM MAIL WWW   Вверх
ДобренькийПапаша
Дата 8.4.2010, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



Цитата(PashaPash @ 5.4.2010,  23:47)
ДобренькийПапаша, очевидно, те же самые инструменты smile

PashaPash, я в этом деле абсолютный нуб (я никогда не работал в команде), не использовал инструментов для контроля версий, и толком не знаю для чего это надо (я не очень понимаю преимущества), тестов за жизнь написал очень мало. Стоит ли сейчас начинать знакомство с инструментами о которых Вы говорили выше, как можно раньше, и с чего мне лучше начать? smile 

Или до того как толком разберусь с теоретической частью TDD или DDD лучше вообще не соваться? 

Это сообщение отредактировал(а) ДобренькийПапаша - 8.4.2010, 10:51


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
Unlocker
Дата 8.4.2010, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 2.11.2007
Где: Москва - Знаменск (Капустин Яр)

Репутация: нет
Всего: 2



ДобренькийПапаша, сначала неплохо было бы определиться, что конкретно ты хочешь разрабатывать. В зависимости от специфики той или иной области требуются различные инструменты. Хотя есть список общих инструментов:
  • Система контроля версий -- необходимо всегда, если ты хочешь отслеживать изменения в своих исходниках (если они происходят, конечно smile ). Реализация нового функционала может привести к нарушению работы уже существующего, поэтому важно иметь возможность откатиться назад (ветки, метки и пр. радости стоит рассматривать позднее).
  • Система учета дефектов (багтрекер) -- атрибут продукта, в разработке, тестировании и использовании которого задействовано несколько людей и им требуется регулярно обмениваться информацией. Для единоличной работы, в принципе, не нужен; но для работы коллектива необходим.
  • Сервер непрерывной интеграции -- машина, на которой происходит сборка дистрибутивов, прогонка автоматических тестов и т.п. Необходима для быстрого получения результатов после очередного этапа разработки. Для единоличной разработки нужен, если проект достаточно большой. Но тут, мне кажется, в пору искать единомышленников smile
  • Планировщик -- система, применяющаяся, в основном, в Agile-командах для эффективного планирования итераций.
  • Инструменты для тестирования -- тут, к сожалению, знаний у меня маловато. Это ипостась тестировщиков и менеджеров по качеству, поэтому оставляю слово за ними...

А насчет <...>DD, то основы модульного тестирования и связанные с этим архитектурные приемы, знать и использовать рекомендуется. Но начинать я считаю надо с GoF. А дальше постепенно уже по надобности читать Фаулера, Нильсена, Бека и т.д. Главное, чтобы не получилось как в анекдоте: "написано 32 строчки кода, использовано 16 шаблонов"...  smile 
--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b."
PM MAIL ICQ Skype GTalk Jabber   Вверх
neutrino
Дата 11.11.2010, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



Цитата(ДобренькийПапаша @  8.4.2010,  09:50 Найти цитируемый пост)
Или до того как толком разберусь с теоретической частью TDD или DDD лучше вообще не соваться? 

Теперь это уже BDD  smile 


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.3630 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.