|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
ОзверинАндрей Панфилов, я пишу о том, что не бывает проектов(а если они и есть, я ни разу их не видел), где не было б технического долга вовсе. А раз таких проектов нет, то ценность совета: просто все сделайте правильно и рефакторинг не нужен будет - падает на порядок ниже советов вроде: как писать код, чтобы его потом можно было б отрефакторить в сжатые сроки.Мы говорим о разных вещах, я изначально спрашивал: как определить когда нужно проводить рефакторинг, единственный ответ, который я получил звучал так: ну вот у нас тут члены команды на сходке предлагают что-то отрефакторить, а мы потом думаем нужно это или нет - для меня это звучит несколько дико, по следующими причинам: - складывается впечатление что у продукта нет владельца, потому что предложения о переделке исходит от кого-то "со стороны" - точно также складывается впечатление, что члены команды вместо того чтобы закрывать текущие CR только и занимаются тем, что выискивают чтобы такого отрефакторить по моему мнению: - рефакторинг может потребоваться в случаях: -- мы закрываем баги производительности или внедряем фичу, которую до этого вообще никак не предвидели -- нужно сделать срочно-пресрочно: сразу на ревью заводим задачу на рефакторинг - в остальных случаях, когда мы рефакторим код, который был закоммичен совсем недавно - это дикость ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 11:06 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
maytonАндрей ПанфиловЕдем дальше, вот мое видение на то, как тот же тест должен выглядеть: Код: java 1. 2.
Функциональный стиль который вы предлагаете не имеет никакого значения. Он не добавляет и не уменшает понимания к коду теста. Хотя за использования Хамкрест я делаю плюсик. Я-бы оставил тест как есть в первом варианте. При прочих равных условиях если стоит вопрос менять или не менять тест я выбираю - не менять. Тест - это закон. Закон по которому должен работать код. И надо иметь очень много оснований чтоб менять сам тест.Есть большая разница в поведении теста: в одном случае он просто пишет "ничего не работает", а потом вы идете и начинаете при помощи отладчика выяснять что же на самом деле ему не понравилось, во втором случае он пишет что именно пошло не так - т.е. какие данные ожидались и какие пришли (у нас например тесты на селениуме идут 3 часа, там и видосики записываются, и сетевой трафик, и скриншоты делаются - исправления можно сделать особо не вникая в код). В целом же я с вами согласен в том плане, что переписывать такие тесты - дурная затея, их проще в таком виде не пропускать вообще - опять же, тесты должны писать профессионалы. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 11:13 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, я понимаю, о чем вы говорили изначально, но я отвечал именно на то, что выделил в отдельную вашу цитату. В остальном, да, надо нанимать грамотных специалистов, поднимать культуру кодирования, проводить код ревью, учить людей палкой писать понятные именования переменных и все такое. Но в итоге все проекты приходят все равно к тому, что рефакторить надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 11:29 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
Лет 5 назад один архитектор предложил мне подход к разработке. Вы берете текст user story. И копи-пастите его в код. Исходник у вас - окрашивается в красный цвет. Но не беда. Вы хладнокровно. Потихоньку выделяете в нем verbs, делаете методы. Делаете основное ветвление (99% юзер стори базируется на веточках или кейсах типа если пришел платеж такой-то то делаем тото и т.д). Далее вы рефакторите его по правилам Java, сохраняя максимально семантику английского текста. Здесь в помошь будет шаблон Builder. И далее в какой-то момент - вуаля. У вас - работающий код который имеет очень точное отображение на бизнес-стори. Реально. Здесь - главное не скатиться в технократию и не делать в if (...) цепочку предикатов. Надо сохранить английский текст. В этом есть принципиальная разница например в сравнении с С++ разработкой где принято сокращать переменные до безсмыслиц со знаком подчеркивания или не дай бох венгерских нотаций. Я попробовал эту методику и предлагаю вам всем. Попробуйте когда зайдет новая user story, воплотить этот подход. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 11:41 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
Андрей Панфиловрекомендую вам купить любую такую книжку, потом сжечь, обоссать и выкинуть. Всё же не стоит так категорично подходить к объективным свойствам мироздания. Люди неидеальны. Это факт. Отсюда много следствий. Само по себе переименование переменных поможет лишь в каких-то процентах, а все остальные проценты надо закрывать другими методами. Другие методы во многом упираются во всё тот же миропорядок, когда люди не только неидеальны, но и постоянно меняются, плюс постоянно меняется ветер в голове начальства, а помимо ветра их "технический долг" тоже имеет свойство не рассасываться до момента ухода в глубокий минус. В целом надо искать какой-то компромисс между "как надо" и "что реально есть". Хотя я поддерживаю идею бить по рукам на форумах за неумелые предложения, но, например, так же бить по рукам в коллективе разработчиков - ведёт к текучке кадров и застою оставшихся в привычных для них нишах. И это, естественно, дополняется застоем сверху. Ведь почему надо освоить бюджет инвестора? Да потому, что инвестор верит, что его деньги здесь будут расти. Не кто-то его заставляет всё отдать, а он сам, по глупости или в надежде на чудо или ещё как-то необоснованно, всё отдаёт. И когда вот так отдают, ну как могут с такой неэффективностью сочетаться реально эффективно организующие процесс разработчики? Любой сопляк заявит перед инвестором "да можно в 100 раз круче сделать!!!" и инвестор поверит, потому что хочет верить. А опытные приведут лишь технические аргументы против, чего инвестор понимать не обучен. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 12:25 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
maytonФункциональный стиль который вы предлагаете не имеет никакого значения. Он не добавляет и не уменшает понимания к коду теста. Он сокращает код до двух строчек, что улучшает читаемость, а значит и понимание кода. Хотя можно и без функционального стиля в две строчки уложить. Но вероятно, что строчки будут длиннее. А вообще однозначно лучше напрячь разработчиков на хотя бы понимание функционального стиля, что бы прочитать чужое могли, ну и может иногда своё сократить. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 12:28 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
maytonЛет 5 назад один архитектор предложил мне подход к разработке. Там, где простым является текстовое описание, столь же простой является и программная реализация. Но если за некоторым словом "сделать" скрываются бездны смыслов, то такое описание нельзя назвать простым, оно просто неполное, и тогда никакая программная реализация "в буквальном смысле" не поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 12:35 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
maytonВы берете текст user story. И копи-пастите его в код. Исходник у вас - окрашивается в красный цвет. Но не беда. Вы хладнокровно. Потихоньку выделяете в нем verbs, делаете методы. Делаете основное ветвление (99% юзер стори базируется на веточках или кейсах типа если пришел платеж такой-то то делаем тото и т.д). Далее вы рефакторите его по правилам Java, сохраняя максимально семантику английского текста. Здесь в помошь будет шаблон Builder. И далее в какой-то момент - вуаля. У вас - работающий код который имеет очень точное отображение на бизнес-стори. Реально. Здесь - главное не скатиться в технократию и не делать в if (...) цепочку предикатов. Надо сохранить английский текст.Теперь давайте спустимся с небес на землю... вот то что пишут адепты TDD: Three Laws of TDD1. You must write a failing test before you write any production code. 2. You must not write more of a test than is sufficient to fail, or fail to compile. 3. You must not write more production code than is sufficient to make the currently failing test pass. внимание вопрос: я думаю ни у кого нет сомнений, что тест должен тестировать работу некого API, соответственно без существования предмета тестирования, т.е. API, тест будет не то что падать, он даже компилироваться не будет, как разрешить ситуацию в этом случае? получается что API-таки нужно сделать раньше теста, но как же тогда быть с "You must write a failing test before you write any production code"? или нужно положить болт на все удобства и гонять тесты через рефлексию? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 12:47 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
Андрей Панфиловвнимание вопрос: я думаю ни у кого нет сомнений, что тест должен тестировать работу некого API, соответственно без существования предмета тестирования, т.е. API, тест будет не то что падать, он даже компилироваться не будет, как разрешить ситуацию в этом случае? получается что API-таки нужно сделать раньше теста, но как же тогда быть с "You must write a failing test before you write any production code"? или нужно положить болт на все удобства и гонять тесты через рефлексию? есть третий, промежуточный или вариация на тему. Одна вариация: пишется тест и он не компилируется. Потом добавляется интерфейс и методы(которые не компилируются), а потом все это обрастает логикой(имплементацией). Другая вариация: есть некое ядро разрабов-архитекторов, которые создают "скелет" приложения исключительно из интерфейсов, а имплементацию уже спускают на tdd отдел. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 12:55 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
alex55555maytonФункциональный стиль который вы предлагаете не имеет никакого значения. Он не добавляет и не уменшает понимания к коду теста. Он сокращает код до двух строчек, что улучшает читаемость, а значит и понимание кода. Хотя можно и без функционального стиля в две строчки уложить. Но вероятно, что строчки будут длиннее. А вообще однозначно лучше напрячь разработчиков на хотя бы понимание функционального стиля, что бы прочитать чужое могли, ну и может иногда своё сократить. Здесь - самый лучший кейс - голосование внутри команды. Если команда решит что ФП стиль в данном случае лучше то я не буду спорить. Моё мнение. Хороший тест - неизменяемый тест. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 12:57 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
alex55555maytonЛет 5 назад один архитектор предложил мне подход к разработке. Там, где простым является текстовое описание, столь же простой является и программная реализация. Но если за некоторым словом "сделать" скрываются бездны смыслов, то такое описание нельзя назвать простым, оно просто неполное, и тогда никакая программная реализация "в буквальном смысле" не поможет. Приведите пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 12:58 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
Андрей ПанфиловmaytonВы берете текст user story. И копи-пастите его в код. Исходник у вас - окрашивается в красный цвет. Но не беда. Вы хладнокровно. Потихоньку выделяете в нем verbs, делаете методы. Делаете основное ветвление (99% юзер стори базируется на веточках или кейсах типа если пришел платеж такой-то то делаем тото и т.д). Далее вы рефакторите его по правилам Java, сохраняя максимально семантику английского текста. Здесь в помошь будет шаблон Builder. И далее в какой-то момент - вуаля. У вас - работающий код который имеет очень точное отображение на бизнес-стори. Реально. Здесь - главное не скатиться в технократию и не делать в if (...) цепочку предикатов. Надо сохранить английский текст.Теперь давайте спустимся с небес на землю... вот то что пишут адепты TDD: Three Laws of TDD1. You must write a failing test before you write any production code. 2. You must not write more of a test than is sufficient to fail, or fail to compile. 3. You must not write more production code than is sufficient to make the currently failing test pass. внимание вопрос: я думаю ни у кого нет сомнений, что тест должен тестировать работу некого API, соответственно без существования предмета тестирования, т.е. API, тест будет не то что падать, он даже компилироваться не будет, как разрешить ситуацию в этом случае? получается что API-таки нужно сделать раньше теста, но как же тогда быть с "You must write a failing test before you write any production code"? или нужно положить болт на все удобства и гонять тесты через рефлексию? Я прошу прощения. Я описывал методику не для написания тестов. А для написания основной бизнес-логики. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 13:00 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
ОзверинОдна вариация: пишется тест и он не компилируется. Потом добавляется интерфейс и методы(которые не компилируются), а потом все это обрастает логикой(имплементацией). Другая вариация: есть некое ядро разрабов-архитекторов, которые создают "скелет" приложения исключительно из интерфейсов, а имплементацию уже спускают на tdd отдел.Первый вариант мало к чему приводитбудет означать что мы еще несколько недель будем эту нетленку рефакторить, второй выглядит более разумно (ну если у нас к описанию сценариев, API и пр. есть еще всякие разные ER- и UML-диаграммы), однако получается так, что на нашей галере есть гребцы, которых заставляют писать код используя "несколько неочевидный" подход, а есть белые надсмотрщики, которые работают совсем не по TDD ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 13:19 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
maytonalex55555Он сокращает код до двух строчек, что улучшает читаемость, а значит и понимание кода. Хотя можно и без функционального стиля в две строчки уложить. Но вероятно, что строчки будут длиннее. А вообще однозначно лучше напрячь разработчиков на хотя бы понимание функционального стиля, что бы прочитать чужое могли, ну и может иногда своё сократить. Здесь - самый лучший кейс - голосование внутри команды. Если команда решит что ФП стиль в данном случае лучше то я не буду спорить. голосованием решения принимаете? обычно, на одного синьора всегда несколько падаванов, некомпетентость всегда победит, количеством или вас два с половиной человека в команде? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 13:27 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
казинакmaytonпропущено... Здесь - самый лучший кейс - голосование внутри команды. Если команда решит что ФП стиль в данном случае лучше то я не буду спорить. голосованием решения принимаете? обычно, на одного синьора всегда несколько падаванов, некомпетентость всегда победит, количеством или вас два с половиной человека в команде? А все синьоры? Мне показалось что ты слегонца потралливаешь. Не? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 13:44 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
maytonказинакпропущено... голосованием решения принимаете? обычно, на одного синьора всегда несколько падаванов, некомпетентость всегда победит, количеством или вас два с половиной человека в команде? А все синьоры? Мне показалось что ты слегонца потралливаешь. Не? нет непонятно как можно в технических вопросах голосовать обычно, кто грамотней к тому и прислушаются ну или по принципу: я начальник - ты дурак ... хотя... в каждом домике свои гомики, нравится голосовать, голосуйте ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 13:55 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
казинакmaytonпропущено... А все синьоры? Мне показалось что ты слегонца потралливаешь. Не? нет непонятно как можно в технических вопросах голосовать обычно, кто грамотней к тому и прислушаются ну или по принципу: я начальник - ты дурак ... хотя... в каждом домике свои гомики, нравится голосовать, голосуйте Твой вариант какой? Главный синьор всё решил? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 14:02 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
maytonГлавный синьор всё решил? склонен согласится. можно обсудить, но решение должен принять один, самый самый, какой уж есть. голосование ничего не даст - все кругом со своим мнением, причем чем больше стаж, тем больше гонор. представь, что у тебя в команде 10 вадь и два тебя. представил? вздрогнул? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 14:11 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
chpashamaytonГлавный синьор всё решил? склонен согласится. можно обсудить, но решение должен принять один, самый самый, какой уж есть. голосование ничего не даст - все кругом со своим мнением, причем чем больше стаж, тем больше гонор. представь, что у тебя в команде 10 вадь и два тебя. представил? вздрогнул? неуютно ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 14:14 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
Андрей ПанфиловОзверинОдна вариация: пишется тест и он не компилируется. Потом добавляется интерфейс и методы(которые не компилируются), а потом все это обрастает логикой(имплементацией). Другая вариация: есть некое ядро разрабов-архитекторов, которые создают "скелет" приложения исключительно из интерфейсов, а имплементацию уже спускают на tdd отдел.Первый вариант мало к чему приводитбудет означать что мы еще несколько недель будем эту нетленку рефакторить, второй выглядит более разумно (ну если у нас к описанию сценариев, API и пр. есть еще всякие разные ER- и UML-диаграммы), однако получается так, что на нашей галере есть гребцы, которых заставляют писать код используя "несколько неочевидный" подход, а есть белые надсмотрщики, которые работают совсем не по TDD второй вариант - уже давно стандарт, т.к. к текучке гребцов привыкли все, а белых господ на переправе не меняют. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 14:15 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
maytonказинакпропущено... нет непонятно как можно в технических вопросах голосовать обычно, кто грамотней к тому и прислушаются ну или по принципу: я начальник - ты дурак ... хотя... в каждом домике свои гомики, нравится голосовать, голосуйте Твой вариант какой? Главный синьор всё решил? везде так хз чо у вас за проект такой, что вы там собираетесь и голосуете по всем проблемам ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 14:16 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
Озверинвторой вариант - уже давно стандарт, т.к. к текучке гребцов привыкли все, а белых господ на переправе не меняют.Прекрасно, исходя всего лишь из первого постулата TDD мы смогли определить его целевую аудиторию ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 14:38 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
казинакmaytonпропущено... Твой вариант какой? Главный синьор всё решил? везде так хз чо у вас за проект такой, что вы там собираетесь и голосуете по всем проблемам Рад что у вас есть главный архитектор. Но я надеюсь что вы его не дёргаете по пустякам. В противном случае я ему очень сочувствую. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 14:40 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
maytonказинакпропущено... везде так хз чо у вас за проект такой, что вы там собираетесь и голосуете по всем проблемам Рад что у вас есть главный архитектор. Но я надеюсь что вы его не дёргаете по пустякам. В противном случае я ему очень сочувствую.само слово "архитектор" - это как пук в лужу за ним ничего не стоит только пузырьки и недолгая вонь... архитектором себя может назвать кто угодно програмер - архитектор программного обеспечения сисадмин - технический архитектор, аналитег - функциональный архитектор если для вас ето слово имеет магический смысл, то сочувствую... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 17:35 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
Если смотреть не в вымышленный мир, а реальный. Выделенная роль архитектора, может проекту вообще ничего не дать. Не раз встречал архитекторов, которые разучились код писать. Процессы ревью кода зачастую формальность, которая не дает высокого качества кода. Тут нужно уметь критиковать и нужно уметь воспринимать критику. Мне нравится тезис. Проекты живут до тех пор пока код не деградирует настолько, что проект легче переписать чем поддерживать. Особенно проблемы начинаются, когда технический долг перерастает в техническую ипотеку. Код деградирует всегда, приходят новые люди, которые не разобравшись в моделях созданных прошлыми сотрудниками, начинают рядом строить свои модели. Для себя я стараюсь пользоваться правилом. После моего коммита код должен находиться в лучшем состоянии, чем он был в начале работы. Поэтому рефакторинг это естественная и ежедневная задача, которой я занимаюсь. Попытка отрефакторить код мне помогает восстанавливать модели, которые были созданы другими. Помогает лучше понять почему было сделано именно так, а не иначе. Опять же когда идет фаза сдачи релиза и код заморожен, иногда приходится рукожопить и костылить. Но такова селяви (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 19:36 |
|
|
start [/forum/topic.php?fid=59&msg=39802053&tid=2121354]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
162ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 252ms |
total: | 527ms |
0 / 0 |