Re[10]: Нафига нужны юнит-тесты?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 05.10.11 20:23
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>>>Именно, но ведь не любой код одинаково подвержен изменениям? Или ты вообще не можешь сказать насколько подвержена изменениям тот или иной модуль?

N>>Заранее — нет. Требования постоянно уточняются и изменяются. Предсказать необходимое даже на год может быть достаточно тяжело, на большее время — практически невозможно. С каждой новой установкой мы получаем какие-то новые требования, под которые надо адаптироваться.
G>Так не бывает. В такой ситуации просто невозможно что-то спланировать. Если же рассмотреть рельный случай. Делается 3d игра, для нее пишется движок, она станет 2d? Нет. Алгоритм пересечения луча с плоскостью изменится? Тоже нет.

Алгоритм — нет. А вот оптимальная реализация — да, может сильно измениться в зависимости от специфики запросов и обстановки.
Насчёт "невозможно что-то спланировать" ты сильно неправ. Возможно. Но планировать надо иначе — умея уточнять обстановку и адаптироваться под неё на ходу. Такое себе agile, только на следующем вверх уровне. И таки да, быть готовым морально и практически к тому, что что-то придётся отменять ещё не доделанное, с сожалением, и переходить к другому.
В быстро развивающемся софте, как у нас, может устаревать 20-30% кода в год. И это не самый суровый темп.

N>>Ошибка в слове "доказать". Никакими тестами ты не можешь это _доказать_, можешь лишь обещать какую-то вероятность или меру корректности. Она может быть и 99.999%, но не 100%.

G>Почему это? Если покрываются все варианты использования, то чем это не доказательство?

Что ты называешь вариантами использования?

G>Whitebox тестирование может покрыть все варианты использования.


Сунул строку "whitebox тестирование" в яндекс. Получил рассказ о том, как наши космические корабли бороздят просторы Большого театра инструменты вроде PEX берут функцию и находят характерные входные данные для проверки. Ты это имел в виду? Или таки вариант проверить все возможные значения множества входных данных? В последнем случае, сколько триллионов лет потребуется тебе для завершения тестирования, например, функции подсчёта длины utf-8 строки, в кодовых пунктах?
А то же самое, но в символах?

G>Или ты не писал никогда таких тестов?


Каких "таких"? Whitebox? Писал. По крайней мере то, что я знаю под этим термином. Но не думаю, что это само по себе позволит накормить 5 хлебами 5K человек всунуть работу до конца Вселенной в сроки в сутках.

N>>Тем не менее тесты нужны, потому что практически они действуют достаточно хорошо.

G>Конкретизируй понятие "хорошо" что ли.

Я не пытаюсь совершить невозможное.

G>>>Я привел доводы когда можно использовать unit-тесты. Доводы соответствуют опыту. Не согласны — никто же не заставляет вас использовать unit-тест.

G>>>Своих же доводов вы не приводите. Это отчасти и подталкивает к мысли что вы не видите ценности тестов.
N>>Повторюсь, что я их постоянно привожу. Только особенности Вашего восприятия не позволяют это увидеть.
G>Ага, вроде "тесты это хорошо".

И что в этом неправильного? Да, это общее руководство. Да, я мог бы сказать, что для наших условий юнит-тест для нетривиальной функции экономит усилия в 10-20-100 раз (в зависимости от местности) по сравнению с выявлением проблемы уже на функциональном тесте приложения и поиском точки проблемы доступными средствами (только логами, поскольку никакой отладчик наши задачи не вытянет), а комплект функциональных тестов хотя бы на базовые сценарии работы приложения экономит ну просто дофига хотя бы на том, что установленная клиенту система в основном работает, а не падает. Но какое другим дело до нашей весьма тяжёлой специфики? У них своя есть, не менее странная.

N>>А "доводы, когда можно использовать unit-test" мне не нужны. Я их и сам напишу толпами.

N>>Мне были бы полезны доводы, когда их реально _нужно_ использовать. Пока что с этим плохо, в основном есть две позиции — "они нахер не нужны" и "покрывайте тестами всё".

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


То есть ты даже не понял, с чем именно я спорю? Тогда, может, следовало начать с более тщательного анализа моих сообщений, прежде чем возражать на них? ;)
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.