tag:blogger.com,1999:blog-8278700074442979782.post1281013576508319310..comments2023-07-12T12:53:44.630+02:00Comments on "Поток сознания" о тестировании и программировании: Черновик. Атомарные тесты. ВебинарAlex W. Lulinhttp://www.blogger.com/profile/08400475846894229767noreply@blogger.comBlogger12125tag:blogger.com,1999:blog-8278700074442979782.post-51218280990690322702014-02-18T01:39:17.278+03:002014-02-18T01:39:17.278+03:00Я кстати скажу РОВНО ТАК ЖЕ:
"Потому я и не с...Я кстати скажу РОВНО ТАК ЖЕ:<br />"Потому я и не сторонник TDD, хотя у нас и *применяются некоторые* его подходы."<br /><br />:-) Ещё РАЗ :-) Я НЕ СТОРОННИК TDD в его "КЛАССИЧЕСКОМ ВИДЕ", я лишь применяю НЕКОТОРЫЕ его подходы.Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-8278700074442979782.post-32810745602017314922014-02-15T21:24:34.148+03:002014-02-15T21:24:34.148+03:00«Получается, нужна "культура производства код...«Получается, нужна "культура производства кода", да? И какова она?»<br />-- Культура? Я не стал бы употреблять столь сильных слов.<br />Методика. Нужна методика и определённые технические приёмы. Инверсия зависимостей - один из них.<br /><br />«Второй вопрос, вытекающий из первого. С одной стороны - атомарность тестов подразумевает "атомарность" классово/методового построения. Но ведь ТЗ в некотором смысле "интегрально". По крайней мере точно не доходит до атомарно-тестируемых методов изолированных классов.»<br />-- Безусловно, и в этом суть "корпускулярно-волнового дуализма" преследующего TDD.<br />Получается, что тесты предназначены не для гарантий того, что продакшн будет свободен от ошибок, а для того, чтобы от них (точнее, от тех, которые контролируются тестами) были свободные фрагменты приложения: классы, процедуры, словом то, что "покрыто тестами".<br />Искусство состоит в том, чтобы это всё сошлось и совместилось в итоге с ТЗ.<br />Но программирование - не искусство.<br />Потому я и не сторонник TDD, хотя у нас и применяются некоторые его подходы.<br /><br />«С классами/методами/иерархией также? Не пора ли уже поговорить про "слабую связность"? (после ответов на 2 предыдущих вопроса, если захотите :))»<br />-- Да, IoC http://ru.wikipedia.org/wiki/IoC как раз об этом...<br />Но как и многое другое в разработке ПО, это только один из подходов.<br />Он НЕ безальтернативен...NameRechttps://www.blogger.com/profile/00070033877714975718noreply@blogger.comtag:blogger.com,1999:blog-8278700074442979782.post-61609143940588606542014-02-14T17:22:49.479+03:002014-02-14T17:22:49.479+03:00как говорил герой одного романа "Немного найд...как говорил герой одного романа "Немного найдётся людей, с которыми мне приятно общаться. Вы - один из них". <br /><br />Цитата:<br />"Если для использования кода вам надо "продираться" через ДЕБРИ сильносвязанных классов, которые "упрятаны где-то в кишки", то ТЕСТ - вы СКОРЕЕ ВСЕГО - НЕ НАПИШЕТЕ. И - "скорее всего" этот код - ТАК ЖЕ ТРУДНО использовать, как и ПИСАТЬ К НЕМУ ТЕСТ."<br /><br />Т.е. условием тестируемости (факта возможности существования атомарных тестов) является спец-архитектура. Ну ладно, структура. Ииииии? Тесты уже не могут быть лошадь. Лошадью становится структура классов (на подмножестве шаблонов слабосвязного проектирования)? Более того, экспертиза головы Александра Валерьевича бо не написать "неправильный классы", которые не смогут есть "неправильный мёд" в виде тестов?<br /><br />Вопрос без оскорблений (чтобы не вызвать взаимные). Получается, нужна "культура производства кода", да? И какова она?<br /><br />Второй вопрос, вытекающий из первого. С одной стороны - атомарность тестов подразумевает "атомарность" классово/методового построения. Но ведь ТЗ в некотором смысле "интегрально". По крайней мере точно не доходит до атомарно-тестируемых методов изолированных классов.<br /><br />В общем-то получается, что "без Люлина пока никуда"?<br />В инженерной практике я один раз в жизни допустил ошибку (в раннем студенчестве). Нарисовал конструкцию "планетарного редуктора". Чертеж был реальным, но "неразбирабельным". Т.е. шестерни стояли на месте, но вынуть их было нельзя. Соответственно, изготовить и собрать тоже. Пришлось корпус "распиливать" пополам и делать сборную на винтах конструкцию.<br />С классами/методами/иерархией также? Не пора ли уже поговорить про "слабую связность"? (после ответов на 2 предыдущих вопроса, если захотите :))Всеволодhttps://www.blogger.com/profile/12019078643087543460noreply@blogger.comtag:blogger.com,1999:blog-8278700074442979782.post-14236382202140399982014-02-11T02:12:40.113+03:002014-02-11T02:12:40.113+03:00"Я написал "затравку"..."
-- в..."Я написал "затравку"..."<br />-- в общем - если есть желание "обсуждать ПРЕДМЕТНО" - пишите "в личку", раскрывайте "интерфейс границ сред"... Чем могу - с удовольствием помогу... Но пока "абстрактно" - общаться не готов...Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-8278700074442979782.post-16125174260019192982014-02-11T01:52:38.654+03:002014-02-11T01:52:38.654+03:00"Я с английским - "более чем на ВЫ"..."Я с английским - "более чем на ВЫ"."<br />-- fluent-English, особенно "в стиле Ника Ходжеса или скажем А. Бауэра" - совсем "не мой конёк".Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-8278700074442979782.post-14723979471929553422014-02-11T01:46:45.578+03:002014-02-11T01:46:45.578+03:00Вот тут - http://programmingmindstream.blogspot.ru...Вот тут - http://programmingmindstream.blogspot.ru/2014/02/blog-post_1679.html<br /><br />Я написал "затравку"...Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-8278700074442979782.post-37889108460277748492014-02-11T01:32:51.657+03:002014-02-11T01:32:51.657+03:00"Здравствуйте, будете ли вы присутствовать на..."Здравствуйте, будете ли вы присутствовать на вебинаре Ника Ходжеса. "<br /><br />Завтра, да? Я ПОСТАРАЮСЬ. Но ен ждите от меня вопросов/ответов. Я с английским - "более чем на ВЫ".<br /><br />"Подскажите плз. что делать, если есть куча унаследованного кода, где банально форма, на ней Grid, DataSet, Query. Всё это подключается к датамодуля каждой BPL. А на каждой форме всё прописано в тупую в обработчиках событий. Это вообще реально как то тестировать, и стоит ли тестировать, скажем форму которая делает банальный insert, update одной записи таблицы?"<br /><br />Это - ОТДЕЛЬНЫЙ СЛОЖНЫЙ вопрос. Если хотите - мы его потом обсудим ПРЕДМЕТНО.Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-8278700074442979782.post-46048892230931258392014-02-11T01:16:39.999+03:002014-02-11T01:16:39.999+03:00Здравствуйте, будете ли вы присутствовать на вебин...Здравствуйте, будете ли вы присутствовать на вебинаре Ника Ходжеса. <br />http://www.delphifeeds.com/go/s/112773 ?<br />Подскажите плз. что делать, если есть куча унаследованного кода, где банально форма, на ней Grid, DataSet, Query. Всё это подключается к датамодуля каждой BPL. А на каждой форме всё прописано в тупую в обработчиках событий. Это вообще реально как то тестировать, и стоит ли тестировать, скажем форму которая делает банальный insert, update одной записи таблицы?Ingwordhttps://www.blogger.com/profile/10969370701744032583noreply@blogger.comtag:blogger.com,1999:blog-8278700074442979782.post-11146001808065976342014-02-06T00:09:02.720+03:002014-02-06T00:09:02.720+03:00Ещё написали.
"
Вот есть часть:
"Подвед...Ещё написали.<br /><br />"<br />Вот есть часть:<br />"Подведём "прмежуточный итог".<br /><br />Тесты это:<br /><br />1. Способ поверки функциональности программного обеспечения.<br />2. Способ выявления неоднозначностей и противоречивостей ТЗ.<br />3. Способ "выравнивания" АРХИТЕКТУРЫ.<br />4. Способ ДОКУМЕНТИРОВАНИЯ кода.<br />5. Инфраструктура для разработки кода."<br /><br />тут повествование НАДО БЫЛО ПРЕРВАТЬ и всё дальнейшее писать ОТДЕЛЬНЫМ постом."<br /><br />Пожалуй - соглашусь.Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-8278700074442979782.post-53360449865179569252014-02-06T00:06:37.086+03:002014-02-06T00:06:37.086+03:00Ещё пишут о "высокоуровневых тестах":
&...Ещё пишут о "высокоуровневых тестах":<br /><br />"Возможно, ты об этом писал раньше... А вдруг нет..: в общем, когда пишем алгоритм проверки части ТЗ, лучше эту часть комментом тут же и привести. Иногда, из ТЗ легко следует алгоритм, но обратное далеко не всегда справедливо. Можно через месяц прочитать алгоритм и сидеть думать: а что главное в тесте: пункт 5, 7 или 3? Или их конкретная связка, а отдельно проверяются в других местах? И т.д."<br /><br />Хорошее ЗАМЕЧАНИЕ.<br /><br />Конечно из тестов НАДО ДАВАТЬ ссылки на соответствующие части ТЗ.Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-8278700074442979782.post-21799192813296361292014-02-05T23:56:53.387+03:002014-02-05T23:56:53.387+03:00Ещё вот спросили:
Просто, я ведь со своей колокол...Ещё вот спросили:<br /><br />Просто, я ведь со своей колокольни, со своего уровня смотрю :-) и в моём случае, тесты часто обьёмней ТЗ. То, что в ТЗ достаточно описать одной строкой, может потребовать целую группу тестов.<br /><br />Отвечу:<br />ты прав<br /><br />но это во-первых от недостатка проработанности ТЗ.. это "порочная практика", но она - ЕСТЬ. От неё - никуда не деться.<br /><br />а во-вторых тесты всё равно объёмнее.. даже если ТЗ проработано<br />ИМЕННО поэтому тесты ДОПОЛНЯЮТ картину<br /><br />РАСШИФРОВЫВАЮТ ТЗ, его тонкости и аспекты использования. И в итоге - ДОПОЛНЯЮТ ТЗ. Ну если в ИДЕАЛЕ.Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-8278700074442979782.post-16061649539217572102014-02-05T23:39:08.277+03:002014-02-05T23:39:08.277+03:00Спросили тут:
Непонятно почему тесты - способ док...Спросили тут:<br /><br />Непонятно почему тесты - способ документирования кода<br /><br />Отвечу:<br /><br />коротко - потому, что тесты "белого ящика", а не "чёрного" - используют проектный код так как задумывалось его использовать<br />т.е. ЛЮБОЙ тест БЕЛОГО ящика (а о БЕЛОМ - я там только и говорю) - это ПРИМЕР использования кода<br />а стало быть - интерактивная документацияAlex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.com