К основному контенту

Тестируем свой код - книги в помощь

Полезные книжки для изучения TDD и unit-тестирования.
Тут только те, что сам читал (примечание: читаю я в основном на английском, не могу ничего сказать насчет русских переводов). Пошерстив чуток интернет, нашел отзывы и мнения и решил ими поделиться.

Классика: "Test Driven Development: By Example" Kent Beck
Отзыв на русское издание: "Экстремальное программирование. Разработка через тестирование",  все по делу написано.

Еще одна отличная книга The Art of Unit Testing Roy Osherove
Во время написания книги Рой работал в команде TypeMock. Он активно проводит тренинги на тему TDD. Сейчас правда перескочил с .Net на Ruby и в основном занят продвижением своей новой книги про лидерство в командах разработки. Но я отвлекся. Вот неплохой отзыв и еще один. Кстати, сам Рой дает свой список книг на тему разработки.

Если мы говорим о рефакторинге уже написанного кода, то тут вам в помощь Working Effectively with Legacy Code от Michael Feathers. Книгой очень удобно пользоваться, вторая ее глава  - это просто FAQ. То есть вы просто ищете свой вопрос и читаете ответ.

Chapter 6.  У меня нет времени, а менять нужно.
Chapter 7.  Изменения делаются постоянно
Chapter 8.  Как мне добавить новую фичу?
Chapter 9.  Я не могу добавить этот класс в тестовую сюиту
Chapter 10. Я не могу запускать этот метод в тестовой сюите
Chapter 11. Мне нужно сделать изменения. Какие методы я должен использовать
Chapter 12. Мне нужно сделать много изменений в одном месте. Должен ли я разорвать все зависимости во всех классах, которые используются там?
Chapter 13. Мне нужно сделать изменение, но я не знаю какие тесты писать
Chapter 14. Зависимости от библиотек меня убивают
Chapter 15. Мое приложение это сплошные API вызовы
Chapter 16. Я не до конца понимаю код для того, чтоб его менять
Chapter 17. Мое приложение не структурировано
Chapter 18. Мой тестовый код не ясен
Chapter 19. Мой проект не объектно-ориентированный. Как мне делать безопасные изменения?
Chapter 20. Этот класс очень большой, и я не хочу чтобы он становился больше
Chapter 21. Я изменяю один и тот же код в разных местах
Chapter 22. Мне нужно поменять метод-монстр, но я не могу написать тесты на него
Chapter 23. Как я узнаю, что я не ломаю ничего?
Chapter 24. Мы чуствуем себя хреново, дела не становятся лучше

В третьей части рассматриваются различные практики разрыва зависимостей. В общем, если вы  пишете уже давно, а сейчас решили жить по-новому - то эта книжка именно для вас.

Комментарии

Популярные сообщения из этого блога

Mock vs Stub

Когда мы начали изучать модульное тестирование, то одними из первых терминов, с которыми пришлось познакомиться, стали Mock и Stub. Ниже попробуем порассуждать в чем их сходство и различие, как и для чего они применяются. Проверять работоспособность тестируемого объекта (system under test - SUT) можно двумя способами: оценивая состояние объекта или его поведение. В первом случае проверка правильности работы метода SUT заключается в оценке состояния самого SUT, а также взаимодействующих объектов, после вызова этого метода. Во-втором, мы проверяем набор и порядок действий (вызовов методов взаимодействующих объектов, других методов SUT), которое должен совершить метод SUT. Собственно, если коротко, то в одном случае используется Stub, а в другом Mock. Это объекты, которые создаются и используются взамен реальных объектов, с которым взаимодействует SUT в процессе своей работы. Теперь подробнее. Gerard Meszaros использует термин Test Double (дублер), как обозначение для объе

Заметки на коленке - 3. Что еще делать, если ваши тесты уже "зеленые"?

"Lately I find I'm working on automated tests that return non-binary results. Tests that neither pass nor fail" by  @noahsussman Отличная мысль, которую я ретвитил еще в 2016. Но давайте вместе подумаем, что за этим может скрываться? ( кстати, не знаю, что при этом думал Noah ) Ваши тесты прошли и прошли "успешно". Все хорошо или все же есть, куда еще посмотреть? Дальше то, что использовал я лично и то, что еще можно прикрутить дополнительно. Естественно все шаги ниже должны быть автоматизированны. 1. Контролируйте время выполнения тестов. Если набор проверок не меняется (а такое часто бывает, к сожалению), то рост времени выполнения может говорить о проблемах в продакшен коде (чаще всего) или проблемах с окружением. 2. Контроль за количеством выполняемых тестов. "Все зеленое" не значит, что сегодня выполняли те же Х тестов, что и вчера. Смешно(нет), но случается такое, что какие-то проверки "исчезают" из запуска из-за того, что у кого-то &qu

Полезные ресурсы для молодых (и не только) тестировщиков

сперто(с) Уже 3 месяца провожу собеседования тестировщиков (март 2016). Поначалу они просто  веселили - после 15-летнего опыта собеседования С++-разработчиков, общение с тестировщиками (чаще были "-цы") было чем-то экзотическим и забавным. Потом становилось все грустнее и грустнее, мимими закончилось. Началась печаль.