[Moscow.pm] юнит тесты

Alexandr Alexeev afiskon на gmail.com
Пт Мар 16 22:22:17 PDT 2012


>> но это параллельная вселенная

Значит, я живу в параллельной вселенной.

>> это хорошо, когда с нуля

Ну вот есть у вас код, которому 6+ лет. Вроде работает, верно? Теперь когда
пишите фичу - покрывайте ее тестами. Правите багу - покрывайте тестами.
Точнее, в соответсвии с TDD - сначала пишите тест, который фейлится, а
затем правите код так, чтобы не фейлился. Самое сложное - это тестировать
взаимодейтсвие с окружающим миром - сетями, БД и тп. Но для таких целей на
CPAN полно готовых модулей, например DBD::Mock и прочих %Mock%

>> потеряное время на написание тестов

Это самое большое заблуждение на счет тестов. Они не отнимают время, а
экономят. Вот представьте, что у вас много больше 1000 строк кода с очень
неявной бизнес-логикой. Когда к вам приходят с таскам где-то эту логику
поменять-добавить, вы правите и надеетесь, что нигде ничего не взорвется.
Временами что-то взрывается и вам приходится тратить многие часы на
исправление бага. Автоматические тесты можно прогонять хоть каждую минуту.
Потому, вы сразу узнаете, что написали что-то не так и быстро исправляете
баг, потому что этот баг явно в только что написанном коде, который вы еще
очень хорошо помните.

Плюс - вы не боитесь делать рефакторинг, ибо если в результате него тесты
проходят, значит все ОК.

Плюс - при деплое вы сразу узнаете обо всех возможных проблемах. У меня так
недавно при деплое проекта под CentOS быстро выявилась проблема с
File::fgets - я за 5 минут переписал код так, чтобы он не использовал этот
модуль и быстро выкатил проект в бой. А между тем этот модуль использовался
при загрузке файлов в одной из многих форм и если бы автоматических тестов
не было, бага выявилась бы в самый неподходящий момент.


17 марта 2012 г. 0:02 пользователь Andrei
<andrei.protasovitski на gmail.com>написал:

> http://shop.oreilly.com/product/9780596100926.do -- замечательная книга.
>
> 16 марта 2012 г. 20:43 пользователь Nick Knutov <mail на knutov.com> написал:
>
> Привествую всех,
>>
>> а расскажите пожалуйста, что лучше почитать про юнит тесты, в контексте
>> "как придумать что тестировать"?
>>
>> Реальный пример - я пишу разные биллинги и около-хостинговые панельки, и
>> вот они уже таких размеров, что я начинаю думать, что юнит тесты уже
>> наверное таки нужны, но из-за этих же размеров я не могу придумать что же
>> именно тестировать, так чтобы был покрыт тестами весь код.
>>
>> --
>> Best Regards,
>> Nick Knutov
>> http://knutov.com
>> ICQ: 272873706
>> Voice: +7-904-84-23-130
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>>
>
>
>
> --
> Andrei Protasovitski
> < andrei[dot]protasovitski[at]gmail[dot]com >
> Diemen, Netherlands
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>


-- 
С уважением, Александр
Личный блог: http://eax.me/
Мой форум: http://it-talk.org/
Мой Twitter: http://twitter.com/afiskon
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20120317/b09b0a72/attachment.html>


Подробная информация о списке рассылки Moscow-pm