Тестирование кода
Если код не тестировать, то стоимость разработки сильно возрастает (а не падает!)
Потому что:
- обнаруживают проблему пользователи. Они ее кое-как описывают. (У меня ничего не работает). По их описанию понять как повторить проблему трудно - затраты на службу поддержки и время программиста, пока он разберется по этому описанию. Проблема может быть, но программист ее может не найти по такому описанию и не исправить.
- пока программист видит свежий код, он его помнит. Через некоторое время нужны дополнительные ресурсы, чтобы понять свой же код. Если фиксит баг другой программист, то затраты еще больше.
- При внесении изменений (новые фичи, фиксы других багов) могут поломать существующий рабочий код. Если нет проверки кода, то вместо 1 старого бага получим несколько новых.
*Очень важно быстро перепроверить старый работающий код*.
Термины тестирования
unittest (
тестирование компонент) - тестирование отдельных функций или модулей.
Проблемы:
- Тестового кода часто больше, чем основного кода;
- необходимы объекты-заглушки;
- не отлавливаются проблемы интеграции модулей.
Test-driven Development (TDD)
- Идея - сначала напишем тесты (как должно работать), а потом допишем под них код (и сразу будем убеждаться, что работает).
Библиотеки unit-тестирования для питона
- unittest - встроена в питон
- doctest - встроена в питон
- noise - может запускать написанные unittest и doctest, есть свои методы
- pytest - его будем изучать после изучения декораторов и понимания что нужно для развернутого тестирования
Что читать
--
TatyanaDerbysheva - 12 Nov 2017