Преждевременная оптимизация является первопричиной всех бед в программировании. Дональд Кнут
5 требований к тестированию
1. Тестирование должно быть частью процесса разработки
- Избегайте фразу “это не мои проблемы”
- Тестирование должно быть интегрировано в процесс разработки
- Разработчики должны нести ответственность за юнит тестирование и интеграционное тестрирование
2. Тестирование должно быть лёгким
3. Тестирование должно быть быстрым, скорость – это главное
4. Тестирование должно быть автоматизированным
- Если тесты не автоматизированы, они не могут быть запущены
- Если тесты не автоматизированы, собрать актуальные метрики не возможно
5. Тестирование должно быть тщательным и должно обеспечивать измеримый уровень уверенности
7 постулатов тестирования
1. Тестирование должно быть неотъемлемой частью процесса разработки, которое:
- повышает уверенность разработчика в корректной работе кода, который он пишет
- повышает качество конечного поставляемого программного продукта
2. Итерационное тестирование дешевле поститерационного:
- Если мы пишем сложный для тестирования код, дефекты будущих периодов станут более дорогими для устранения
- Тесты предоставляют разработчикам уверенность делать успешные изменения в коде – где угодно и когда угодно
3. Стоимость устранения дефектов характеризуется экспоненциальным ростом по времени
4. Тестируемый код в большинстве случаев является хорошим кодом
5. Тестирование является важным при использовании Agile (гибкая методология разработки)
6. Тестируемый код предоставляет возможность использования большого набора методологий:
- Agile и рефакторинг основаны на эффективном тестировании
- Все процессы требуют юнит тестирования

