Тестирование
Теория
- Место тестирования в жизненном цикле программного продукта
- Виды тестирования
- Тестирование только новых функций или старых тоже (регрессионное тестирование)
- Ручное, автоматизированное, автоматическое
- green test trap: Тестирование может доказать наличие дефектов, но не их отсутствие
- red test trap: Не всякие проваленные тесты означают дефекты. Могут означать пробел в требованиях, в том числе нефункциональных
Полезные термины: ошибка программиста при написании программы может привести к дефекту (багу) в программе, который в свою очередь может проявиться (или не проявиться) в виде программного сбоя
- Стоимость исправления дефекта возрастает пропорционально его «возрасту»
- Модульное и интеграционное тестирование
- Непрерывная интеграция
Python
- Интеграционное тестирование: пример с Selenium / Django
- Модульное тестирование
- doctest
- unittest
- py.test
- Показатель покрытия кода тестами (coverage)
Для семестрового проекта
- Обязательно: набор модульных тестов py.test / unittest
с 100% уровнем покрытия (по мнению pytest-cov или coverage),
или хорошее обоснование того, почему не достигается 100% покрытие,
или интересный рассказ о том, каким тривиально-бесполезным образом оно формально достигается.
- По возможности: интеграционные тесты (end-to-end)