Больше рецензий

9 марта 2025 г. 13:07

118

4.5 О пользе тестирования программного обеспечения

Данный труд стал первым знакомством с Владимиром Хориковым , который является автором, блогером и обладателем сертификата Microsoft MVP. Книгу почитать мне дал коллега по работе, за что ему огромное спасибо.

Книга кратко (но емко) описывает, зачем нужно писать полезные и устойчивые к рефакторингу кода тесты. До читателя доходчиво доносится, что без тестов не может обойтись ни одно более-менее большое приложение. Тесты должны быть интегрированы в жизненный цикл разработки, ведь они на ранних этапах помогают найти и избавиться от коварных багов в рабочем коде.

Но не все тесты приносят пользу. Тесты могут и навредить. Если ваши тесты будут хрупкими, то есть почти не устойчивыми к рефакторингу, то они принесут много головной боли и проблем. Помимо трудозатрат на написание бизнес-логики в рабочем коде, вам каждый раз придется переписывать и ваши тесты, чтобы они не "падали" из-за внесенных изменений.

Рассмотрена также и пирамида тестирования.
картинка long399

В проекте должно быть больше всего юнит-тестов, ведь их проще всего писать и сопровождать. На втором месте по количеству должны идти интеграционные тесты и меньше всего должно быть сквозных (end-to-end) тестов.

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

Большое внимание в книге уделено описанию фиктивных зависимостей в тестах (их разновидности и особенности):
- пустышки (dummy);
- стабы (stub);
- шпионы (spy);
- моки (mock);
- фейки (fake).

Несколько важных слов сказано о часто встречающихся при написании тестов антипаттернах. Читателям даются советы, как избежать подобных ошибок, что облегчит последующее сопровождение тестов и избавит от лишних проблем.

Рекомендую прочитать данную книгу всем людям, имеющим отношение к разработке ПО. Как ни удивительно, практика написания хороших тестов способствует созданию более качественного кода.

Моя оценка 4.5/5.