Re[35]: Долгая компиляция на с++ - смерть для больших проект
От: _hum_ Беларусь  
Дата: 06.05.16 15:53
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Здравствуйте, _hum_, Вы писали:


L>>>Например, что если пользователь просил латте, то они получает латте, а не флэт вайт, и что латте — это именно латте, а не каппучино?

__>>проверитьь, что "поведение в принципе соответствует ожидаемому" никак нельзя:

L>Это относится только к black-box тестированию. Юнит-тесты — это white-box тестирование.


нет, это относится ко всему тестированию — см. статью по ссылке
Re[36]: Долгая компиляция на с++ - смерть для больших проект
От: landerhigh Пират  
Дата: 06.05.16 15:57
Оценка:
Здравствуйте, Erop, Вы писали:

E>Я привёл тебе несколько разных задач, где юнит-тесты, в частности, и ТДД, в целом, экономически не целесообразны.

E>Ты не про одну так и не показал, что целесообразны...

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

Мой 10+ опыт внедрения TDD там, где он был "экономически нецелесообразен" подсказывает мне, что если бы означенное предприятие использовало TDD, то вполне может быть, что у них уже летал бы C-5432 и стоил он бы в 10 раз дешевле.

E>В целом я думаю, что уже добился того, чего хотел


ты доказал, что привыкшие копать лопатой не умеют использовать экскаватор.
Re[37]: Долгая компиляция на с++ - смерть для больших проект
От: Erop Россия  
Дата: 06.05.16 15:58
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>В моей книге "523 оправдания, почему мы не пишем автотесты" этот вывод вместе с преамбулой войдет в предисловие.


Что такое автотесты в данном случае?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[31]: Долгая компиляция на с++ - смерть для больших проект
От: _hum_ Беларусь  
Дата: 06.05.16 15:58
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Здравствуйте, _hum_, Вы писали:


L>>>Начнем с главного — тесты прогоняют production код в контролируемых условиях. В принципе, на этом можно было бы и закончить.

__>>очень общее высказывание. я не понял

L>Хмм.. по мне так оно весьма конкретное. Означает — юнит тесты подают на вход тестируемого юнита некие данные и сравнивают отклик с ожидаемым.


а, ну вот теперь более конкретно.

L>Погоди, что запустили? Вот вы начинаете работу над совершенно новым проектом. Твоя задача — реализовать.... ну драйвер сканера (courtesy of Erop). Вот ты пишешь первый класс, уж не знаю, какой. Что ты запускаешь? Ничего запускаемого еще нет и 10 месяцев не будет. Как ты проверишь?


да спокойно. возьму и отдельно повызываю его методы на прогонных значениях (ведь прогон же не считается юнит-тестом?)

__>>не понял что нельзя написать assert(nullptr != data); ?


L>Нет, во многих случаях писать его там бессмысленно.




L>>>Чтобы верифицировать поведение do_smth, код ассерта должен полностью реализовывать алгоритм, который он верифицирует.


__>>ну, то есть, опять же, отличие в невозможности ассерта протестировать именно функциональность (работу функции при всевозможных различных аргументах)? так?


L>Как минимум, для начала.


ок. спасибо.
Re[33]: Долгая компиляция на с++ - смерть для больших проект
От: _hum_ Беларусь  
Дата: 06.05.16 15:59
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Здравствуйте, _hum_, Вы писали:


L>>>При всем уважении, такое работает, только когда что-то очень и очень простое пишут.

__>>так в сложных случаях есть брейк-поинты, когда вместо того, чтобы анализировать весь поток управления, выделяют отдельные его фрагменты, подпадающие под подозрение (с помощью тех же ассертов)

L>Это тоже крайне простые случаи.



а какие сложные? (если не брать во внимание многопроцессные проги)?

L>Но использование отладчика делает их сложными само по себе.


почему?
Re[39]: Долгая компиляция на с++ - смерть для больших проект
От: Erop Россия  
Дата: 06.05.16 15:59
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>До внедрения.


Десятки миллионов инсталляций... Просто, с какого-то момента я ушёл на другой проект, а изделие по сию пору живо и развивается.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[36]: Долгая компиляция на с++ - смерть для больших проект
От: landerhigh Пират  
Дата: 06.05.16 15:59
Оценка:
Здравствуйте, _hum_, Вы писали:

L>>Это относится только к black-box тестированию. Юнит-тесты — это white-box тестирование.

__>нет, это относится ко всему тестированию — см. статью по ссылке

По-твоему получается, что из статьи следует, что все, что я делал последние 10+ лет, сделать было невозможно? Забавно.
Re[32]: Долгая компиляция на с++ - смерть для больших проект
От: Erop Россия  
Дата: 06.05.16 16:01
Оценка:
Здравствуйте, _hum_, Вы писали:

__>так в сложных случаях есть брейк-поинты, когда вместо того, чтобы анализировать весь поток управления, выделяют отдельные его фрагменты, подпадающие под подозрение (с помощью тех же ассертов)


Таки если мы ещё про вычматы, и если откуда-то известно "как надо", то момент расхождения с "как надо" лучше искать заточенным под это тестом, а не отладчиком...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[39]: Долгая компиляция на с++ - смерть для больших проект
От: Erop Россия  
Дата: 06.05.16 16:02
Оценка:
Здравствуйте, _hum_, Вы писали:

E>>Я про то и говорю, что не все задачи хорошо покрываются юнит-тестами и ТДД...


__>ну просто вы это очень завуалированного делаете


Несколько раз писал прямым текстом...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[31]: Долгая компиляция на с++ - смерть для больших проект
От: _hum_ Беларусь  
Дата: 06.05.16 16:02
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, _hum_, Вы писали:


__>>вы о чем?

E>Мы о сохранении инвариантов...
E>Проверяется assert's или юнит-тестами...

они только покажут, что есть проблема. а в чем именно она — нет, если ошибка несодержательная (как неправильны знак в приращении аргумента поиска) .

E>>>А дебагер как поможет?


__>>как обычно — пошагово проходите по потоку управления, сравнивая состояния "как должно быть" с "как есть". в том месте, где происходит расхождение — ошибка.


E>А как узнать, "как должно быть"?

E>На коленке сосчитать?
E>А если задача многомерная?

берете простой пример (наппример, одномерный) и вперед

с тестами будет то же самое — все размерности и комбинации не обсчитать
Re[40]: Долгая компиляция на с++ - смерть для больших проект
От: _hum_ Беларусь  
Дата: 06.05.16 16:03
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, _hum_, Вы писали:


E>>>Я про то и говорю, что не все задачи хорошо покрываются юнит-тестами и ТДД...


__>>ну просто вы это очень завуалированного делаете


E>Несколько раз писал прямым текстом...


да, н без аргументов наподробие "даже если в системе все элементы в отдельности протестированы, это не означает, что система будет работать как надо"
Re[31]: Долгая компиляция на с++ - смерть для больших проект
От: Erop Россия  
Дата: 06.05.16 16:06
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Хмм.. по мне так оно весьма конкретное. Означает — юнит тесты подают на вход тестируемого юнита некие данные и сравнивают отклик с ожидаемым.


Так любые тесты делают, не только юнит...

L>Они их в первую очередь и проверяют.


Бывает ещё и функциональное тестирование и регрессивное и т. д...

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


__>>ассерты тоже — запустили сразу и они повылетали (я так всегда делаю )


L>Погоди, что запустили? Вот вы начинаете работу над совершенно новым проектом. Твоя задача — реализовать.... ну драйвер сканера (courtesy of Erop). Вот ты пишешь первый класс, уж не знаю, какой. Что ты запускаешь? Ничего запускаемого еще нет и 10 месяцев не будет. Как ты проверишь?


Ну, например, часто пишут прототип, который можно запускать, а потом в нём реализуют подсистемы...
Ну и вообще, пусть мы UI пишем, например. Пишем, запускаем, смотрим...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[37]: Долгая компиляция на с++ - смерть для больших проект
От: _hum_ Беларусь  
Дата: 06.05.16 16:08
Оценка: +1
Здравствуйте, landerhigh, Вы писали:

L>Здравствуйте, _hum_, Вы писали:


L>>>Это относится только к black-box тестированию. Юнит-тесты — это white-box тестирование.

__>>нет, это относится ко всему тестированию — см. статью по ссылке

L>По-твоему получается, что из статьи следует, что все, что я делал последние 10+ лет, сделать было невозможно? Забавно.


нет, это означает, что то, что вы делали за последние десять лет, на самом деле не "проверить, что поведение в принципе соответствует ожидаемому", а "establish that it[system function] does not function properly under specific conditions"
Re[33]: Долгая компиляция на с++ - смерть для больших проект
От: _hum_ Беларусь  
Дата: 06.05.16 16:11
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, _hum_, Вы писали:


__>>так в сложных случаях есть брейк-поинты, когда вместо того, чтобы анализировать весь поток управления, выделяют отдельные его фрагменты, подпадающие под подозрение (с помощью тех же ассертов)


E>Таки если мы ещё про вычматы, и если откуда-то известно "как надо", то момент расхождения с "как надо" лучше искать заточенным под это тестом, а не отладчиком...


ну как вы плюс вместо минуса тестом обнаружите в x_{n+1} = x_{n} — f(x_n)/f'(x_n) ?
Re[37]: Долгая компиляция на с++ - смерть для больших проект
От: Erop Россия  
Дата: 06.05.16 16:15
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Мой 10+ опыт внедрения TDD там, где он был "экономически нецелесообразен" подсказывает мне, что если бы означенное предприятие использовало TDD, то вполне может быть, что у них уже летал бы C-5432 и стоил он бы в 10 раз дешевле.


Вроде и сейчас мировой лидер и по цене и по ТТХ...

E>>В целом я думаю, что уже добился того, чего хотел


L>ты доказал, что привыкшие копать лопатой не умеют использовать экскаватор.

Экскаватор не всем подходит. Археологам, например...

Тем не менее, ты, со своим 10+ опытом внедрения дал оценку формализации требований к ловцу писем террористов в "тысячи учёных работающих за большие деньги" или как-то так примерно. Я с ней согласен.
А тестовые базы писем с разметкой, где террористы, а где нет, стоят НАМНОГО дешевле и работают ЛУЧШЕ...
Тока это совсем другой подход, чем ТДД, так как если ты по этим базам будешь ТДД делать, то переобучишься на них и всё...

А юнит-тесты "кирпичиков" полезны, конечно, но если это малая часть задачи, то они не критичны...
Регрессивные тесты по границам подсистем полезны тоже и т. д...
Задача тестирования сложного трудноформализуемого поведения сложна сама по себе, и тут важно выбрать верный компромисс...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[34]: Долгая компиляция на с++ - смерть для больших проект
От: Erop Россия  
Дата: 06.05.16 16:21
Оценка:
Здравствуйте, _hum_, Вы писали:

__>а какие сложные? (если не брать во внимание многопроцессные проги)?


Расчёт обтекания крыла самолёта на адаптивных сетках...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[32]: Долгая компиляция на с++ - смерть для больших проект
От: Erop Россия  
Дата: 06.05.16 16:23
Оценка:
Здравствуйте, _hum_, Вы писали:

__>берете простой пример (наппример, одномерный) и вперед


Что такое "одномерная гидродинамика", например?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[41]: Долгая компиляция на с++ - смерть для больших проект
От: Erop Россия  
Дата: 06.05.16 16:24
Оценка:
Здравствуйте, _hum_, Вы писали:

__>да, н без аргументов наподробие "даже если в системе все элементы в отдельности протестированы, это не означает, что система будет работать как надо"


Конечно не значит, особенно, если система data-driven...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[34]: Долгая компиляция на с++ - смерть для больших проект
От: Erop Россия  
Дата: 06.05.16 16:26
Оценка:
Здравствуйте, _hum_, Вы писали:

__>ну как вы плюс вместо минуса тестом обнаружите в x_{n+1} = x_{n} — f(x_n)/f'(x_n) ?


Увидишь рсхождение, проанализируешь код и найдёшь ошибку...
А отладчик тут чем поможет?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[42]: Долгая компиляция на с++ - смерть для больших проект
От: _hum_ Беларусь  
Дата: 06.05.16 16:29
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, _hum_, Вы писали:


__>>да, н без аргументов наподробие "даже если в системе все элементы в отдельности протестированы, это не означает, что система будет работать как надо"


E>Конечно не значит, особенно, если система data-driven...


токо не "конечно", ибо это не совсем тривиальный факт (даже отдельное название имеет — эмерджентность системы)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.