Обновить
26
ApeCoder@ApeCoder

Разработчик

6
Подписчики
Отправить сообщение
например заслужить репутацию «бессильного жалобщика»

Если кроме жалоб не приходит на ум никаких других способов действия, то да. В таком случае репутация будет заслужена и лучше жаловаться на форумах :) тогда репутация будет только у ника.


Ага, и бросить проект, и бросить людей, которые вместе с тобой тут ночевали, вот это вот все. То есть это конечно бывает необходимо. но от этого не легче.

Проект не вечен. По определению. Возможно эти люди тоже так думают и не уходят и таким образом они друг друга мучают в говноконторе.


И вообще это напоминает манипуляцию чувством вины.

далеко не все изучают, например, механизмы распространения HIV, даже если страшно его боятся.

Ну да боятся, сами болеют и не изучают — таких большинство


Буду говорить за рашен бизнес — другие варианты просто не работают.

Если не пытаться, то точно не работают. Если пытаться, то есть варианты. Кстати рашен бизнес это, в том числе, ABBYY, JetBrains, Касперский, Яндекс. Интересно, как у них.


Насчет деструкции — конечно оно так, «чем хуже — тем лучше», но глобально это не лучший подход.

Деструкция это не хуже, если она на месте. Уволиться из говноконторы эта правильная деструкция. Рак — это сбой деструкции.

Но если создаём продукт, то любое поползновение в сторону agile приравниваем к саботажу и караем по законам военного времени.

Я думаю, для начала надо расстрелять покупателей. А то, ишь, не хотят платить за списки дел, разработанные по нормам для создания автомобилей и по такой же цене!

А если просто не хотят? Вас вот все идиотские процессы на вашем предприятии интересуют, или только некоторые?

Только некоторые. Обычно то, что мне сильно эмоционально не нравится, меня интересует. И, наоборот, если что-то меня не интересует, оно не вызывает потребности жаловаться.


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

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


Я говорю о ситуации в целом, о том, как закон обходится с менее известными фигурами.

Я думаю, известность, можно тоже воспринимать как недостаток. Вполне можно ныть "Ыыыы ну конечно я ничего не мог сделать, потому, что я брат такого человека, они меня будут мучать" и так далее. Просто "жертва" — это такой подход к жизни. Я сам бываю таким, я знаю.


Но это политота, давайте прекратим.

Вы привели сравнения, я ответил на этом же поле.

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

Разумеется есть. А с кем вы спорите? Если вы вменили мне это мнение то по какой причине? Я лишь оспаривал хаотичность движения рынка.


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

не видел, чтобы компании публично в своих планах учитывали: «С 20… по 20… циклический кризис, падение продаж 20%».

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


Нет ли у движений рынков своих закономерностей? У вас в институте макроэкономика была как предмет?

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

А жертвы слишком тупы и безинициативны чтобы сами сделать анализ ситуации и подумать что можно изменить. Они могут только орать "Ыыы больно".


И вопрос «а почему у вас начальник сроки назначает?» вряд ли облегчит их боль

Если они себе зададут этот вопрос себе, дополнив вопросом, "почему в скраме это не так" посмотрев на аргументацию, то они смогут попробовать переубедить начальника либо при поиске работы задать правильный вопрос.


Любая идея хороша тогда, когда исполнима с учетом факторов. Иначе, извините уж, не факторы виноваты, а либо идея, либо сонм ее поклонников, повсюду ее сующих.

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


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


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

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


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


— Но я хотя бы попытался, — говорит он. — Черт побери, я сделал все, что мог, в отличие от вас, разве не так?


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

Экономика в целом работает не на максимальное удовлетворение конкретных потребностей, а на удовлетворение хаотичных движений рынка, и от этого проблемы.

А я вот слышал, что сейчас есть всякое стратегическое видение и создание потребностей. Что именно вы читали об экономике где так написано?

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

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


Для меня идеально было бы что-то вроде "У меня тут внедряют SAFe и тут возникли сложности вот с тем-то (ссылка на сайт с цитатой про какую-то практику) консультант говорит, что надо делать так-то, в сети еще встречаются такие-то советы (ссылка1, ссылка2, ссылка3) но все равно не работает из-за того-то и того-то"


Обычно я вижу вопли типа "Аджайл это соковыжималка потому, что у нас Скрам и штрафуют за то, что мы не успеваем к срокам, которые назначает начальник".


А так, да, аджайл понятие нечеткое и, одновременно, модное. Поэтому много желающих назвать аджайлом все, что угодно.

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

Совершенно верно. Вы как программист для какого-то случая решили а для кого-то нет и непонятно, почему.


Итого, вы из 27 приписанных кому-то тестов сделали 9, но теперь их не 9 а больше, но какие непонятно, но таким же способом полученный 1 тест для pixel_pos недостаточен и даже 2 теста по TDD это мало.


Я все правильно изложил?


Давайте вы сначала сами примените один и тот же способ рассуждения к этим двум ситуациям и выясните есть разница или нет и почему.


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


Будете ли вы отвечать на вопрос вот тут?

Это уже вопрос сверки контрактов.

При чем тут какая-то "сверка контрактов" — любой тест проверяет, что тестируемая система соблюдает свой контракт. В f1 использовали f2 а не f4 чтобы f1 выполнил свой контракт, а не почему-то еще.


Ноль, если линковка и типизация статические.

Имеется ввиду test case

Давайте примем что это так. Отсюда два вопроса:


  1. Какой именно тест предотвратит замену f2 на f4 (напомню, что f4 ведет себя так же как f2 на всех кейзах, кроме тех которые опущены при тестировании f1 на основании того, что f2 уже протестирован)
  2. Если заменить, f1 на pixel_pos а f2 на round, получаем, что у pixel_pos одна ветка => один класс эквивалентности, а round уже протестирован => нам нужен ровно один кейз для pixel_pos

Примените пожалуйста те же рассуждения для обоих примеров. В чем именно вы видите разницу?

Отдельный вопрос — насколько практично "полное покрытие" в реально существующих проектах. Например, какое покрытие у mol. Я не вижу бейджа хотя бы с code
coverage по запускавшимся строчкам, было бы интересно, если бы вы поделились статистикой.

Отлично! У нас есть определение.


Теперь давайте рассмотрим подробнее корневое сообщение из этой ветки:


У вас может быть 3 приватных последовательно вызывающих друг друга метода. В каждом есть, допустим, 3 ветки логики. Если тестировать через публичный интерфейс, то нужно проверить 3х3х3 = 27 кейсов. Помножьте на число граничных условий и будет совсем ахтунг.

далее


Каждый из этих приватных методов (а точнее их видимость придётся повысить) тестируется в предположении, что вызываемые им методы уже протестированы. Это даст 3+3+3 = 9 кейсов.

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


То есть я так понимаю, что функция f1 вызывает функцию f2, которая вызывает f3. Допустим у f1 есть три ветки логики, 1, 2, 3 соответственно. Обозначим комбинации так 1.1 — кейз когда отрабатывает 1 кейз f1 и 1 кейз f2 и так далее.


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


То есть если мы оставили кейз 1.1 то если мы заменим в вызове функцию f2 на f3, для которой кейз 1.1 проходит, а 1.2 и 1.3 не проходят, то мы получим то же самое.


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


Если вы видите ошибку в моей логике, укажите на нее.

Потому что проблема не вы вызовах функций, а в том, что алгоритмы различны.

Это странно или коряво сформулированно. Алгоритмы различны. Частный случай — вызов не тех функций. Никакого противопоставления нет.


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

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


https://habr.com/post/279535/


• Исчерпывающее тестирование (Exhaustive Testing — ET) — это крайний случай. В пределах этой техники вы должны проверить все возможные комбинации входных значений, и в принципе, это должно найти все проблемы. На практике применение этого метода не представляется возможным, из-за огромного количества входных значений.


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

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


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

Не хотите — не отвечайте.

В вебдеве изобрели паттерн «фасад»?

Я думаю, это должны быть разные категории, так как есть любители BDSM кроме вас. Максимум вы как категория должны входить в BDSM.

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

Это все одна и та же тема. У нас есть вызов функции f1 из функции f2. Если тест функции f2 не содержит все кейзы функции f1 допустимые на тех данных которые может ей предоставить f2 значит мы можем заменить ее на функцию f3, которая отличается от f1 в кейзах, которые не тестируются тестами f2.


Это вы же сами продемонстрировали в случае замены round на trunc.


Теперь у нас есть функция f1 у которой есть три кейза, которая вызывает f2 у которой есть три кейза. Обе функции приватные. Если я тестирую 3+3=6 кейзов то я в каких-то кейзах f1 тестирую не все возможности f2 и там они могут быть заменены на функцию f3 точно таким же образом.


Вы статью-то мою перечитайте, там чёткая классификация.

Перечитал


Модуль или юнит — минимальный кусок кода, который можно протестировать независимо от всего остального кода.

Ок модули определяются через независимое тестирование.


Тестирование модулей так же известно как "юнит-тестирование".

Ok. Это независимое тестирование и есть юнит тестирование.


Также из обсуждения мы знаем что модульных тестов не бывает "модульные тесты — фикция и профанация" => модулей тоже не бывает, так как они определены через тестирование.


Компонент — относительно самостоятельная часть приложения. Может включать в себя другие компоненты и модули.

Как компонент может включать в себя то, чего не бывает?

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность