Преждевременная оптимизация является первопричиной всех бед в программировании. Дональд Кнут

5 требований к тестированию

1. Тестирование должно быть частью процесса разработки

  1. Избегайте фразу “это не мои проблемы”
  2. Тестирование должно быть интегрировано в процесс разработки
  3. Разработчики должны нести ответственность за юнит тестирование и интеграционное тестрирование

2. Тестирование должно быть лёгким

3. Тестирование должно быть быстрым, скорость – это главное

4. Тестирование должно быть автоматизированным

  1. Если тесты не автоматизированы, они не могут быть запущены
  2. Если тесты не автоматизированы, собрать актуальные метрики не возможно

5. Тестирование должно быть тщательным и должно обеспечивать измеримый уровень уверенности

7 постулатов тестирования

1. Тестирование должно быть неотъемлемой частью процесса разработки, которое:

  1. повышает уверенность разработчика в корректной работе кода, который он пишет
  2. повышает качество конечного поставляемого программного продукта

2. Итерационное тестирование дешевле поститерационного:

  1. Если мы пишем сложный для тестирования код, дефекты будущих периодов станут более дорогими для устранения
  2. Тесты предоставляют разработчикам уверенность делать успешные изменения в коде – где угодно и когда угодно

3. Стоимость устранения дефектов характеризуется экспоненциальным ростом по времени

4. Тестируемый код в большинстве случаев является хорошим кодом

5. Тестирование является важным при использовании Agile (гибкая методология разработки)

6. Тестируемый код предоставляет возможность использования большого набора методологий:

  1. Agile и рефакторинг основаны на эффективном тестировании
  2. Все процессы требуют юнит тестирования

7. Тестирование имеет влияние на архитектуру при нетрадиционном решении для интеграционного тестирования без развёртывания на сервере приложений