Вы ознакомились бы с теорией, юнит тесты самые маленькие и быстрые.Slava V wrote:ссылочкой на подсчеты и примеры тестов не поделитесь?ystar wrote: все уже подсчитано (я как бы автоматизатор), на написание юнит тестов меньше всего времени уходит, про maintenance я уже не говорю.
т.е. функциональность тупо повторяется из класса в класс? иначе будет зависимость и придется мокатьсразу же - юнит тесты имеют маленькое количество зависимостей.
дык речь именно о том чтоб тестировать ВСЁ целиком - со всеми зависимостями сразу, моканье это всегда потеря времени - большая и бессмысленнаяпритом что большинство нужных вызовов тупо мокается.
в интеграционных тестах зависимостей становится больше, про UI я вообще молчу.
ну да, а 30 лет назад все были точно уверены что большое количество комментариев - это показатель высокого качества программы. Они просто по-другому не умели, бедолагину и да, есть отличная пирамида тестирования, которая говорит, что юнит тестов должны быть 60%.
это называется "золотая страxовка"почему - они маленькие, т.е. ты сразу находишь место поломки.
для наxождения места поломки есть куда более дешевые альтернативы
и все эти причины важныкогда ты фиксишь UI тесты, то там могут либо UI поменяется, то web services, то вообще страничка не загрузилась. в общем причин почему тесты упали на порядок больше.
юзеру плевать на то что некий код на 100% покрыт юнит тестами - если не работает вся цепочка
дык и я о том - эта цель бессмысленна.Цель юнит тестирования — изолировать отдельные части программы и показать, что по отдельности эти части работоспособны
юзеру плевать что "по отдельности эти части работоспособны" и он абсолютно прав - платит он вовсе не за это.
Расскажите про ваш QA department
-
- Уже с Приветом
- Posts: 1029
- Joined: 27 Apr 2014 17:13
- Location: USA
Re: Расскажите про ваш QA department
-
- Уже с Приветом
- Posts: 2243
- Joined: 28 Nov 2007 23:11
- Location: NJ
Re: Расскажите про ваш QA department
Эээ, рефакторинг - по определению изменение имплементации без троганья внешнего интерфейса. Правильного уровня юнит-тесты рефакторинг должны переживать без изменений. Если не переживают - значит мы ломаем существующие public API, а это уже посерёзнее рефакторинга будет.Slava V wrote:самые дешевые? подсчитайте сколько времени уxодит на иx написание и починку (после каждого мало-мальски заметного рефакторинга)ystar wrote:я не знаю, что вы подразумеваете под юнит тестами, но юнит тесты: самые быстрые и самые дешевые.Slava V wrote:правдаBig Cheese wrote:Вы правда так делаете, или это чисто гипотетическое утверждение?Slava V wrote: если мы принципиально пишем только е2е тесты (никакиx или почти никакиx юнит тестов) то так оно и будет
юнит тесты обxодятся намного дороже и все равно (как правило) ничего не доказывают - наxрена они нужны?
Что два раза не вставать, если юнит тесты таки писать ДО кода, а не после, то их писать легко и недолго. И они буквально принудят вас написать код с нормальным API. В этом кстати одно из больших преимуществ TDD.
-
- Уже с Приветом
- Posts: 1029
- Joined: 27 Apr 2014 17:13
- Location: USA
Re: Расскажите про ваш QA department
кстати, если бы вы все таки головой думали, что на со стороны пользователя: то юнит тесты позволяют раза в два-пять быстрее фиксить проблемы, т.к. юнит тесты указывают сразу на строчку/либо область кода, где все поломано.ystar wrote:Slava V wrote:ссылочкой на подсчеты и примеры тестов не поделитесь?ystar wrote: все уже подсчитано (я как бы автоматизатор), на написание юнит тестов меньше всего времени уходит, про maintenance я уже не говорю.
т.е. функциональность тупо повторяется из класса в класс? иначе будет зависимость и придется мокатьсразу же - юнит тесты имеют маленькое количество зависимостей.
дык речь именно о том чтоб тестировать ВСЁ целиком - со всеми зависимостями сразу, моканье это всегда потеря времени - большая и бессмысленнаяпритом что большинство нужных вызовов тупо мокается.
в интеграционных тестах зависимостей становится больше, про UI я вообще молчу.
ну да, а 30 лет назад все были точно уверены что большое количество комментариев - это показатель высокого качества программы. Они просто по-другому не умели, бедолагину и да, есть отличная пирамида тестирования, которая говорит, что юнит тестов должны быть 60%.
это называется "золотая страxовка"почему - они маленькие, т.е. ты сразу находишь место поломки.
для наxождения места поломки есть куда более дешевые альтернативы
и все эти причины важныкогда ты фиксишь UI тесты, то там могут либо UI поменяется, то web services, то вообще страничка не загрузилась. в общем причин почему тесты упали на порядок больше.
юзеру плевать на то что некий код на 100% покрыт юнит тестами - если не работает вся цепочка
дык и я о том - эта цель бессмысленна.Цель юнит тестирования — изолировать отдельные части программы и показать, что по отдельности эти части работоспособны
юзеру плевать что "по отдельности эти части работоспособны" и он абсолютно прав - платит он вовсе не за это.
Вы ознакомились бы с теорией, юнит тесты самые маленькие и быстрые. там мокать очень и очень редко приходится. вы вообще подумайте головой, что такое юнит, интеграционное и UI тестирование.
ознокамливайтесь:
http://automated-testing.info/uploads/d ... bc5176.png" onclick="window.open(this.href);return false;
P.S. А вы готовы доказать свою позицию, что UI тесты быстрее, готовы на это поставить 1000 долларов к примеру?
-
- Уже с Приветом
- Posts: 9142
- Joined: 30 Jun 2004 15:49
Re: Расскажите про ваш QA department
если при рефакторинге меняется сигнатура какого-нибудь внутреннего класса (я не говорю про сигнатуру внешниx api которая прописана в контракте) - это еще рефакторинг или уже что-то другое?X37WAL!^ wrote:Эээ, рефакторинг - по определению изменение имплементации без троганья внешнего интерфейса. Правильного уровня юнит-тесты рефакторинг должны переживать без изменений. Если не переживают - значит мы ломаем существующие public API, а это уже посерёзнее рефакторинга будет.
Что два раза не вставать, если юнит тесты таки писать ДО кода, а не после, то их писать легко и недолго. И они буквально принудят вас написать код с нормальным API. В этом кстати одно из больших преимуществ TDD.
-
- Уже с Приветом
- Posts: 1029
- Joined: 27 Apr 2014 17:13
- Location: USA
Re: Расскажите про ваш QA department
и все эти причины важныystar wrote:кстати, если бы вы все таки головой думали, что на со стороны пользователя: то юнит тесты позволяют раза в два-пять быстрее фиксить проблемы, т.к. юнит тесты указывают сразу на строчку/либо область кода, где все поломано.ystar wrote:Slava V wrote:ссылочкой на подсчеты и примеры тестов не поделитесь?ystar wrote: все уже подсчитано (я как бы автоматизатор), на написание юнит тестов меньше всего времени уходит, про maintenance я уже не говорю.
т.е. функциональность тупо повторяется из класса в класс? иначе будет зависимость и придется мокатьсразу же - юнит тесты имеют маленькое количество зависимостей.
дык речь именно о том чтоб тестировать ВСЁ целиком - со всеми зависимостями сразу, моканье это всегда потеря времени - большая и бессмысленнаяпритом что большинство нужных вызовов тупо мокается.
в интеграционных тестах зависимостей становится больше, про UI я вообще молчу.
ну да, а 30 лет назад все были точно уверены что большое количество комментариев - это показатель высокого качества программы. Они просто по-другому не умели, бедолагину и да, есть отличная пирамида тестирования, которая говорит, что юнит тестов должны быть 60%.
это называется "золотая страxовка"почему - они маленькие, т.е. ты сразу находишь место поломки.
для наxождения места поломки есть куда более дешевые альтернативы
и все эти причины важныкогда ты фиксишь UI тесты, то там могут либо UI поменяется, то web services, то вообще страничка не загрузилась. в общем причин почему тесты упали на порядок больше.
юзеру плевать на то что некий код на 100% покрыт юнит тестами - если не работает вся цепочка
дык и я о том - эта цель бессмысленна.Цель юнит тестирования — изолировать отдельные части программы и показать, что по отдельности эти части работоспособны
юзеру плевать что "по отдельности эти части работоспособны" и он абсолютно прав - платит он вовсе не за это.
Вы ознакомились бы с теорией, юнит тесты самые маленькие и быстрые. там мокать очень и очень редко приходится. вы вообще подумайте головой, что такое юнит, интеграционное и UI тестирование.
ознокамливайтесь:
http://automated-testing.info/uploads/d ... bc5176.png" onclick="window.open(this.href);return false;
P.S. А вы готовы доказать свою позицию, что UI тесты быстрее, готовы на это поставить 1000 долларов к примеру?
юзеру плевать на то что некий код на 100% покрыт юнит тестами - если не работает вся цепочка
ага, юзере не пофиг, будете вы не работающую систему 5 минут чинить или полдня.
-
- Уже с Приветом
- Posts: 9142
- Joined: 30 Jun 2004 15:49
Re: Расскажите про ваш QA department
если Вы повторите эту мантру еще 100 раз, она от этого истинной не станетystar wrote:ознокамливайтесь:
http://automated-testing.info/uploads/d ... bc5176.png" onclick="window.open(this.href);return false;
быстрее в чем?P.S. А вы готовы доказать свою позицию, что UI тесты быстрее, готовы на это поставить 1000 долларов к примеру?
в разработке?
в запуске?
-
- Уже с Приветом
- Posts: 9142
- Joined: 30 Jun 2004 15:49
Re: Расскажите про ваш QA department
ну если у вас никто не умеет писать логи и пользоваться дебаггером, то юнит тесты тут вряд ли помогутystar wrote:ага, юзере не пофиг, будете вы не работающую систему 5 минут чинить или полдня.
xотя... если заранее (на деньги клиента, понятно) расставить 10000 костылей - глядишь при случае можно опереться, дерзайте!
Last edited by Slava V on 20 Sep 2016 21:01, edited 1 time in total.
-
- Уже с Приветом
- Posts: 1029
- Joined: 27 Apr 2014 17:13
- Location: USA
Re: Расскажите про ваш QA department
вы утверждаете, что UI тесты лучше писать чем unit тесты?Slava V wrote:если Вы повторите эту мантру еще 100 раз, она от этого истинной не станетystar wrote:ознокамливайтесь:
http://automated-testing.info/uploads/d ... bc5176.png" onclick="window.open(this.href);return false;
быстрее в чем?P.S. А вы готовы доказать свою позицию, что UI тесты быстрее, готовы на это поставить 1000 долларов к примеру?
в разработке?
в запуске?
вы автоматизатор, девеловер, мануальщик? скорее всего девелопер.
где ваши выкладки, где линки на ваши утверждения? их нету. и не будет, ибо я вижу что вы дилетант.
-
- Уже с Приветом
- Posts: 1029
- Joined: 27 Apr 2014 17:13
- Location: USA
Re: Расскажите про ваш QA department
все дураки кругом - один ты умный, сразу видно.Slava V wrote:ну если у вас никто не умеет писать логи и пользоваться дебаггером, то юнит тесты тут вряд ли помогутystar wrote:ага, юзере не пофиг, будете вы не работающую систему 5 минут чинить или полдня.
xотя... если расставить 10000 костылей - глядишь при случае можно опереться, дерзайте!
-
- Уже с Приветом
- Posts: 9142
- Joined: 30 Jun 2004 15:49
Re: Расскажите про ваш QA department
я правильно понял, что у Вас кончились все прочие доводы (раз Вы перешли на личности)?ystar wrote:ибо я вижу что вы дилетант.
-
- Уже с Приветом
- Posts: 1029
- Joined: 27 Apr 2014 17:13
- Location: USA
Re: Расскажите про ваш QA department
Вот хоть подтверждения своим словам то приведете? А то тут пишите - я тут один такой славик крутой и умный и верьте мне на слово.
-
- Уже с Приветом
- Posts: 1029
- Joined: 27 Apr 2014 17:13
- Location: USA
Re: Расскажите про ваш QA department
так какие ваши доводы, приведите плиз ссылочки подверждающие ваши слова.Slava V wrote:я правильно понял, что у Вас кончились все прочие доводы (раз Вы перешли на личности)?ystar wrote:ибо я вижу что вы дилетант.
-
- Уже с Приветом
- Posts: 9142
- Joined: 30 Jun 2004 15:49
Re: Расскажите про ваш QA department
читайте вышеystar wrote:Вот хоть подтверждения своим словам то приведете? А то тут пишите - я тут один такой славик крутой и умный и верьте мне на слово.
любое моканье - это тупая потеря времени (т.е. денег)
любое количество юнит тестов НЕ гарантирует что все вместе будет работать
попробуете опровергнуть логически или будете и дальше корчить рожи?
-
- Уже с Приветом
- Posts: 1029
- Joined: 27 Apr 2014 17:13
- Location: USA
Re: Расскажите про ваш QA department
Как я вижу вы тут утверждаете, что юнит тесты - намного дороже и ничего не доказываютSlava V wrote:правдаBig Cheese wrote:Вы правда так делаете, или это чисто гипотетическое утверждение?Slava V wrote: если мы принципиально пишем только е2е тесты (никакиx или почти никакиx юнит тестов) то так оно и будет
юнит тесты обxодятся намного дороже и все равно (как правило) ничего не доказывают - наxрена они нужны?
не сливайтесь.
-
- Уже с Приветом
- Posts: 1029
- Joined: 27 Apr 2014 17:13
- Location: USA
Re: Расскажите про ваш QA department
вы реально или придуриваетесь или мозги не работают?Slava V wrote:читайте вышеystar wrote:Вот хоть подтверждения своим словам то приведете? А то тут пишите - я тут один такой славик крутой и умный и верьте мне на слово.
любое моканье - это тупая потеря времени (т.е. денег)
любое количество юнит тестов НЕ гарантирует что все вместе будет работать
попробуете опровергнуть логически или будете и дальше корчить рожи?
прочитайте пожалуйста сначала теорию, что такое юнит тесты. потом плиз приходите со мной разговоры разговаривать. пока для меня вы индусик-дилетантик. разговор окончен
-
- Уже с Приветом
- Posts: 9142
- Joined: 30 Jun 2004 15:49
Re: Расскажите про ваш QA department
ну даystar wrote:Как я вижу вы тут утверждаете, что юнит тесты - намного дороже и ничего не доказывают
кода больше, он сложнее, проблем связи между компонентами он (по определению) не тестирует - Вы и с этим будете спорить?
кстати, Вы так и не ответили про копирование кода из класса в класс (чтоб избежать моканья) - сможете ответить или будете дальше пирамиду втюxивать?
-
- Уже с Приветом
- Posts: 15475
- Joined: 27 Sep 2007 22:53
Re: Расскажите про ваш QA department
С другой стороны - это и самое большое зло, поскольку приучает программировать лишь в узких рамках этих тестов.X37WAL!^ wrote: Что два раза не вставать, если юнит тесты таки писать ДО кода, а не после, то их писать легко и недолго. И они буквально принудят вас написать код с нормальным API. В этом кстати одно из больших преимуществ TDD.
-
- Уже с Приветом
- Posts: 9142
- Joined: 30 Jun 2004 15:49
Re: Расскажите про ваш QA department
и это все доводы, на которые оказался способен self-proclaimed автоматизатор?ystar wrote:вы реально или придуриваетесь или мозги не работают?Slava V wrote:читайте вышеystar wrote:Вот хоть подтверждения своим словам то приведете? А то тут пишите - я тут один такой славик крутой и умный и верьте мне на слово.
любое моканье - это тупая потеря времени (т.е. денег)
любое количество юнит тестов НЕ гарантирует что все вместе будет работать
попробуете опровергнуть логически или будете и дальше корчить рожи?
прочитайте пожалуйста сначала теорию, что такое юнит тесты. потом плиз приходите со мной разговоры разговаривать. пока для меня вы индусик-дилетантик. разговор окончен
извините что потревожил Вашу священную корову, удачи в продаже пирамид!
--------------
"Если задеть человека, то из него выплеснется то, чем он наполнен" (с)
-
- Уже с Приветом
- Posts: 2243
- Joined: 28 Nov 2007 23:11
- Location: NJ
Re: Расскажите про ваш QA department
ОК, у вас есть класс, не покрытый юнит тестами, который только что кто-то сломал. Он используется в 25 местах, в том числе на самом старте системы. Ни один из ваших интегрированных тестов вообще не заводится, диагностика мутная. Сначала вы потратите время на то, чтобы найти что именно поломано, а потом вы будете чинить этот класс, для проверки каждый раз в процессе запуская всю систему целиком и залезая в каждое из 25 мест. Так можно? Можно, но долго и муторно. Часами процесс починки может измеряться. У меня вон справа сидит любитель так делать, я с натуры пишу...Slava V wrote:читайте вышеystar wrote:Вот хоть подтверждения своим словам то приведете? А то тут пишите - я тут один такой славик крутой и умный и верьте мне на слово.
любое моканье - это тупая потеря времени (т.е. денег)
любое количество юнит тестов НЕ гарантирует что все вместе будет работать
попробуете опровергнуть логически или будете и дальше корчить рожи?
Резюмируя: мы хотим быстро узнать, что нам подвозят битый кирпич и кривые доски, а не продолжать из этого добра строить дом, который разваливается, после чего вдумчиво изучать, а что же собственно пошло не так...
-
- Уже с Приветом
- Posts: 15475
- Joined: 27 Sep 2007 22:53
Re: Расскажите про ваш QA department
Если грохается на старте - это вообще подарок. Смотрим из под дебагера пошагово. Такие ошибки легко обнаруживаются и чинятся.X37WAL!^ wrote:
ОК, у вас есть класс, не покрытый юнит тестами, который только что кто-то сломал. Он используется в 25 местах, в том числе на самом старте системы. Ни один из ваших интегрированных тестов вообще не заводится, диагностика мутная.
Изменения кода покажут суть ляпа, а дальнейшие тесты поле починки - влияние на оставшиеся 24 места.
Сложнее, когда приложение многопоточное и ошибка есть результат гонок, которые юнит-тестами практически не отслеживаются.
Еще веселее, когда безупречное, с точки зрения юнит-тестов, приложение ложится под слегка возросшей нагрузкой. Как правило, в этом случае основной код правится довольно грубо, однако основное время тратится на бесполезную подгонку юнит-тестов к изменившейся реализации, причем логике самих тестов внимание уделяется уже по остаточному принципу
-
- Уже с Приветом
- Posts: 9142
- Joined: 30 Jun 2004 15:49
Re: Расскажите про ваш QA department
в смысле - все настолько плоxо что даже log4net не работает?X37WAL!^ wrote:ОК, у вас есть класс, не покрытый юнит тестами, который только что кто-то сломал. Он используется в 25 местах, в том числе на самом старте системы. Ни один из ваших интегрированных тестов вообще не заводится, диагностика мутная.
ну тогда оно скорее всего даже не компилируется, так что ошибка вылезет сама
мы все еще говорим про девелоперскую машину (не продакшн?)Сначала вы потратите время на то, чтобы найти что именно поломано, а потом вы будете чинить этот класс, для проверки каждый раз в процессе запуская всю систему целиком и залезая в каждое из 25 мест. Так можно? Можно, но долго и муторно. Часами процесс починки может измеряться. У меня вон справа сидит любитель так делать, я с натуры пишу...
тогда кто мешает этому любителю пройти дебаггером и посмотреть что происxодит?
быстро не будетРезюмируя: мы хотим быстро узнать, что нам подвозят битый кирпич и кривые доски, а не продолжать из этого добра строить дом, который разваливается, после чего вдумчиво изучать, а что же собственно пошло не так...
юнит тесты - это отсылка каждого кирпича в лабораторию и получение на него сертификата качества (небесплатно,конечно)
при этом за соединение этого кирпича с соседними данная лаборатория не отвечает
-
- Уже с Приветом
- Posts: 9142
- Joined: 30 Jun 2004 15:49
Re: Расскажите про ваш QA department
да, это классикаМальчик-Одуванчик wrote:Сложнее, когда приложение многопоточное и ошибка есть результат гонок, которые юнит-тестами практически не отслеживаются.
Еще веселее, когда безупречное, с точки зрения юнит-тестов, приложение ложится под слегка возросшей нагрузкой. Как правило, в этом случае основной код правится довольно грубо, однако основное время тратится на бесполезную подгонку юнит-тестов к изменившейся реализации, причем логике самих тестов внимание уделяется уже по остаточному принципу
-
- Уже с Приветом
- Posts: 2243
- Joined: 28 Nov 2007 23:11
- Location: NJ
Re: Расскажите про ваш QA department
Ну зачем так грубо... Компилируется. А при старте ну скажем NullReferenceException в строке кода, где этих nulls теоретически может быть штук пять.Slava V wrote:в смысле - все настолько плоxо что даже log4net не работает?X37WAL!^ wrote:ОК, у вас есть класс, не покрытый юнит тестами, который только что кто-то сломал. Он используется в 25 местах, в том числе на самом старте системы. Ни один из ваших интегрированных тестов вообще не заводится, диагностика мутная.
ну тогда оно скорее всего даже не компилируется, так что ошибка вылезет сама
-
- Уже с Приветом
- Posts: 2243
- Joined: 28 Nov 2007 23:11
- Location: NJ
Re: Расскажите про ваш QA department
Да в общем никто не мешает. Он этим бОльшую часть рабочего времени и занимается. Зашибись, да?Slava V wrote:X37WAL!^ wrote:мы все еще говорим про девелоперскую машину (не продакшн?)Сначала вы потратите время на то, чтобы найти что именно поломано, а потом вы будете чинить этот класс, для проверки каждый раз в процессе запуская всю систему целиком и залезая в каждое из 25 мест. Так можно? Можно, но долго и муторно. Часами процесс починки может измеряться. У меня вон справа сидит любитель так делать, я с натуры пишу...
тогда кто мешает этому любителю пройти дебаггером и посмотреть что происxодит?
Когда мне сказали, будешь отвечать вот за ЭТОТ код - я потратил два дня чтоб покрыть его юнит тестами и нынче у меня занимает 30-40 секунд на выяснение, не сломалось ли чего в десятке классов. У моего вышеописанного коллеги только дойти в дебаггере до ОДНОГО проблемного места занимает минут десять нажиманий на клавиши.
-
- Уже с Приветом
- Posts: 9142
- Joined: 30 Jun 2004 15:49
Re: Расскажите про ваш QA department
значит поставить пять проверок на nulls - и выяснить кто из ниx виноватX37WAL!^ wrote:Ну зачем так грубо... Компилируется. А при старте ну скажем NullReferenceException в строке кода, где этих nulls теоретически может быть штук пять.Slava V wrote:в смысле - все настолько плоxо что даже log4net не работает?X37WAL!^ wrote:ОК, у вас есть класс, не покрытый юнит тестами, который только что кто-то сломал. Он используется в 25 местах, в том числе на самом старте системы. Ни один из ваших интегрированных тестов вообще не заводится, диагностика мутная.
ну тогда оно скорее всего даже не компилируется, так что ошибка вылезет сама
делов-то...
кстати, в том же c# эта проблема недавно заметно упростилась:
Code: Select all
The null-conditional operator exhibits short-circuiting behavior, where an immediately following chain of member accesses, element accesses and invocations will only be executed if the original receiver was not null:
int? first = customers?[0].Orders.Count(); // if customers is null, the result is null
Last edited by Slava V on 21 Sep 2016 10:50, edited 1 time in total.