Тесты такое гавно, зачастую для тривиального участка писать тесты просто заподло, а для сложного код теста в разы сложнее и больше кода которое он тестирует, а еще тратить время на прогон всего этого добра, малейший дифф и надо править и код и тесты, а как результат всего лишь надежда что никто не ошибился ни в коде ни в тестах, а с тестами шансы на ошибку удваиваются
Поздравляю, у вас проблемы с проектированием архитектуры. Грамотное проектирование избавляет от всех указанных вами проблем.
я использую рельсу, которая идеальная для тестов
Пардон, а каким это боком у вас небольшие изменения в коде влекут за собой изменения в тестах? Если вы тесты под код подгоняете, то нафиг такие тесты и такие программисты =\
Тест: в строке № должет стоять if
Уууу как все запущено... Тест должен работать с кодом как с чёрным ящиком. Твой пример это не тест, а пародия.
Чувак, если ты не дурак и с самого начала продумал, что и в каком виде должна отдавать данная функция\модуль, никакие изменения в коде не потребуют изменений в тестах. Если код изменил, а тест не проходится - значит либо тест кривой, либо код. И тут опять вопросы к тому, кто их писал, к его опыту и дальновидности, а не к тестам в принципе.
А вот если сляпал на ходу, а потом понял, что лучше было бы отдавать данные в другом виде, тогда конечно, тест придется переписывать, ведь он уже не будет подходить.
А вот если сляпал на ходу, а потом понял, что лучше было бы отдавать данные в другом виде, тогда конечно, тест придется переписывать, ведь он уже не будет подходить.
нахуй мне изменять код чтобы он проходил тест? рефакторить только? Речь о том что требования меняются к поведения, а значит и к тестам, это норма
Если придерживаться solid, то можно добиться такого состояния что изменениях требований не повлекут за собой таких больших изменений в коде что придётся сильно переделывать тесты. Но кого это ебет, хуяк-хуяк и в продакшн - вот наш девиз!
детские влажные мечты
Так в том-то и дело, что в середине работы выясняется, что кто-то что-то не продумал как надо, и говорит: "вот тут нам нужно вот такое поведение, переделывайте". Безусловно, совсем без этого не бывает, все мы люди. Но я лично работал в коллективе, в котором такая проблема возникала только в виде исключения. Потому что если архитектуру продумывает опытный человек, для него не составит труда заложить её так, чтобы даже в случае непредвиденного изменения требований не пришлось ничего менять.
Но даже если архитектор дурак и не лечится, то без тестов начинают расти велосипеды, спагетти и прочая хуйня, начинают вылазить необъяснимые баги, выявление которых отнимет куда больше времени, чем если бы ты после изменений переписал тест и увидел проблему сразу.
Так что как ни крути, тесты нужны и полезны. Другое дело, что лень, особенно, когда в целом проект уже выглядит как не пойми что.
Но даже если архитектор дурак и не лечится, то без тестов начинают расти велосипеды, спагетти и прочая хуйня, начинают вылазить необъяснимые баги, выявление которых отнимет куда больше времени, чем если бы ты после изменений переписал тест и увидел проблему сразу.
Так что как ни крути, тесты нужны и полезны. Другое дело, что лень, особенно, когда в целом проект уже выглядит как не пойми что.
Какая еще архитектура? Все давно юзают готовые фреймворки, и я очень сомневаюсь что ты каждый день пишешь новый, чтобы у тебя был архитектор (вообще крайне редкая должность), а во всех остальных случаях у тебя есть фреймворк, который дают необходимую инфраструктуру для тестов и все что надо для комфортной разработки, никакой архитектурой никто не занимается, любой проект уже давно деплоится на N серверов в пару кликов. На веб морде у тебя Angular/bb/jQuery/React/Ember на бекенде ASP.NET/Rails/Symfony на десктопе WPF/Qt на мобилках Xamarin/RubyMonk, для игр Unity/UE/Source, организация кэшей и хайлоуда это пару кликов за тарифный план на N облачных серверов с деплоем в один клик и репликой всего, да даже для верстки есть БЭМ и препроцессоры вроде SASS/LESS/Stylus, да даже те кто сейчас занимается так называемой архитектурой в больших проектах в большинстве случаев лишь организовывает и проверяет хорошо ли тот скопипасченный конфиг балансера раздает нагрузку на мои 200 серверов, а если нет, то надо раскомментировать еще пару строчек. А та архитектура о который ты говоришь это легаси на жабе и крестах из начала 90-ых, когда паттерны были для хипстеров и процедурных стиль нормой, а для деплоя писался свой велик без намека на системы контроля версий, многие так и живут до сих пор, но у них же мега крутой проект для банка под 98 венду, как можно усомниться в скиллах и подходах этих ребят, ведь они делают крутое (не всегда) и безопасное (тоже не факт) ПО, а ты тут какой хипстерской херней занимаешься, нам это не надо.
Ты передергиваешь и уходишь от темы. К слову, Symfony\Rails\ASP - может быть и имеют значительный кусок пирога, но говорить, что они у всех глупо. Да, сегодня все пользуются готовыми фреймворками, но фреймворки не избавляют от необходимости писать грамотный код, не избавляют от необходимости проектировать и кому-то одному думать наперёд за всю команду. Они просто решают кучу рутинных задач за тебя.
нерутинных задач от силы 3% и все эти 3% разбросаны по гуглам, в средней конторке ими и не пахнет, но это не значит что рутинные задачи не надо делать или что в них нельзя ошибиться
Если у тебя фреймворк - это вся архитектура, то ок, тесты тебе не нужны. Зачем писать тесты, если фреймворки и так ими покрыты. Гемы тоже. И разработка сводится к дерганью апишки... Унылая картинка вырисовывается у тебя, сочувствую.
CI в этом плане помогает. Но вот побороть лень их написания...
А хуже всего когда нужны тесты взаимодействия с чужой системой. То ли мок писать по спекам, толи ебаться со сборкой и запуском симулятора.
А хуже всего когда нужны тесты взаимодействия с чужой системой. То ли мок писать по спекам, толи ебаться со сборкой и запуском симулятора.
Лучше поручить тестерам составить список всех возможных ситуаций(в том числе и самых бредовых) и уже по списку делать моки, имхо. Так ты хоть зад свой прикроешь от фейлов стороннего сервиса.
Хороший тестер - это человек, который помогает тебе писать хороший код, но при этом перманентно хочется набить ему ебло.
Ага. А еще ему можно поручать такие задачи как я написал выше. Так сказать, из мести, хех =)
Жизненно.
А вообще конечно все зависит от тестового ландшафта. Если не лениться и заранее готовить ландшафт сразу под несколько доработок, то и тесты будут быстрее идти.
А вообще конечно все зависит от тестового ландшафта. Если не лениться и заранее готовить ландшафт сразу под несколько доработок, то и тесты будут быстрее идти.
Пыхопроблемы
истинные волшебные задроты)) волшебники, волшебники я хотел сказать...
Вообще, следовало бы перевести не "как я запускаю тесты", а "как я тестирую код", во втором случае смысла нет. "Do my tests" - в широком смысле, "выполняю тестирование"
"Послать запрос на доставку" - это что? Пулл-реквест?
Не, там типа "пошли письмо [деплой-инженеру], чтобы выкатывали на прод"
с какие пор пхп-менеджеры программистами стали
Самое забавное, по комментам выше, так это то, что один может говорить "я всегда пишу тесты, тесты рулят". а другой может говорить "тесты это так муторно, они мало помогают".
И при этом у первого в коде несколько громоздких чудовищных тестов, которые ничего не тестируют. А у второго куча мелких независимых нехрупких тестов.
Вот запросто так.
И при этом у первого в коде несколько громоздких чудовищных тестов, которые ничего не тестируют. А у второго куча мелких независимых нехрупких тестов.
Вот запросто так.
да просто больишнство людей к тестам относятся крайне безотвественно, пришел на работу джуном впервые, сказали писать так, а ты по-другому и не знаешь, привык уже писать так, а зачем это надо? А хрен его знает, так сказал тех.дир тимлидам, а зачем ему это надо? А у него в контракте написано, что должны быть тесты и если тесты не спасают от багов, то вину можно скинуть на разрабов. Еще есть фанаты экстремального программирования, кто-то раскручивает бредовую идею, платит фрикам, они под своим крутым мнением раскручивают на конференциях очередной бред, клиенты ведутся, а ты если поставишь в резюме BDD/DDD можешь добавить +15 бачей в час с нихуя, продукту это не поможет, но и тебе похуй на продукт, а клиенту очередной раз впарят гавно. Есть еще компании где тесты это выживание, платят копейки, конторки хуйня, хоть они и могут делать якобы крутой софт, точнее по продажам то он и крутой, а внутри хуйня, текучка и без тестов ничего не переделать. Есть еще куча людей считающих, что если ты неплохо зарабатываешь на мелких проектах и не пишешь тесты из-за прямой ненадобности, то ты пидор, анскил и гавнокодер, ведь небольшой проект это полная хуйня, нормальный разраб таким заниматься не будет. Особенно бесит, когда говоришь, что в тестах тоже может быть ошибка, тебе говоря - "не, такого быть не может, это же тест"
Чтобы написать коммент, необходимо залогиниться