Интеррапт wrote:
А были бы нормальные юнит тесты в проекте, то "адекватный отдел тестирования" сократился бы с 60 человек, до 30
Не знаю, что тебя заставляет так думать, но
в действительности все не так, как на самом деле
а именно после введения юнит-тестов отдел тестирования увеличился с 30 до 60 человек, т.е. все ровно наоборот. разумеется, юнит-тестами отдел тестирования не занимался. более того, поскольку это был не богопротивный аджайл, а православный CMM Level 4, у меня была вся статистика, а предсказание по количеству багов на проекте я делал еще до того, как кто-то начал кодировать и - чудо какое - угадывал достаточно точно. так вот влияние юнит-тестирования - нулевое. абсолютно. проверено статистикой и чуть ли не тысячей человеко-лет труда. объясняется это очень просто: кодер кодит примерно с одинаковой скоростью. на написание кода с юнит-тестами за фиксированное время нужно больше кодеров, потому что объем кода (основного + тесты) больше. один из главных источников багов - взаимодействие между разными людьми. иллюстрирую: если 10 человек могут написать какую-то систему за год, то 20 таких же точно человек за полгода едва ли уложатся, а если уложатся, то багов будет МИНИМУМ в 2 раза больше
Интеррапт wrote:Юнит тестинг - это де-факто стандарт для разработки проектов, ну кроме таких случаев как:
Это потому что лично ты принял это за аксиому. А я - не принял.
Интеррапт wrote:(а) Программист просто ленится писать юнит-тесты, т.к. это скучно
Как ты понимаешь, в команде, сертифицированной на CMM Level 4 лень программистов не интересует никого. Если сказано сверлить квадратные дырки, то все будут сверлить квадратные или работать в другом месте
Интеррапт wrote:(б) Какую-то програмульку нужно выкатить прямо завтра, вообще не факт, что эта програмулька будет кому-то нужна даже через месяц, поэтому нет смысла париться с написанием тестов. Ну вроде как пришел заказчик, попросил ему сверстать веб страничку или там мелкую аппликуху под Андроид, все-равно никто поддерживать это приложение не будет, так что сгодится и так.
Ты же не думаешь, что разработка телефонов - это типа как "какую-то программульку выкатить завтра", не? Но здравое зерно в твоем предположении есть. Если бы завтра меня поставили руководить разработкой софта к какому-нибудь звездолету, который должен взбороздить просторы космоса через 10 лет, то и юнит тесты бы писались на все, что можно, и блэкбокс тестинг автоматизировался и много чего другого жутко дорогого и долгого.
Интеррапт wrote:Во всех остальных случаях без юнит тестов тоже можно жить, конечно. Просто чем дальше в лес, тем больше будет багов и чесания головы, почему вдруг после крошечного рефакторинга все сломалось.
Еще раз: твои юнит-тесты не дают никакого волшебного ответа
почему все сломалось. Они просто говорят "ой, сломалось" - точно так же, как это делают автоматизированные блэкбокс тесты. а дальше - одно существенное различие. если кодер что-то сделал неправильное, что ему кажется правильным, он тупо правит юнит-тест. если сломался тест нормальный, он заявляет тестерам свою любимую мантру works as designed, на что в ответ получает сырым тапком по морде - требования прочитай, козлина тупая, и не приставай к царю
чуешь разницу? эти практики тоже не на пустом месте сложились.