1. Тестирование показывает наличие дефектов, но не их отсутствие.
Ни один тестировщик не может сказать, что «багов нет». Но он может сказать, что багов больше не найдено. Потому что нельзя сказать, что нет того, что мы не нашли =)
2. Исчерпывающее (exhaustive) тестирование невозможно.
На самом деле к исчерпывающему тестированию в большинстве ПО и не стремятся, за исключением разве что жизненно важного ПО - самолеты, медицинское оборудование и тд.
3. Тестирование на ранних этапах может сохранить время и ресурсы.
Начинайте тестировать настолько рано, насколько это только возможно.
4. Дефекты имеют свойство скапливаться (defect clustering)
Если вы нашли дефект - поищите в этом месте еще, покопайтесь рядом. Точно они там есть! Об этом и говорит принцип.
5. Тестируемые системы всегда сталкиваются с “парадоксом пестицидов” (“pesticide paradox”).
Если вы давно тестируете вашу систему, и у вас уже 100500 тестов или даже 10, и они всегда Passed - поменяйте тесты. Трестируемая система как колорадские жуки привыкает к тестам (пестицидам), которые на неё натравливают.
6. Тестирование контекстно зависимо.
В зависимости от контекста и действий, совершенных пользователем до самого теста, могут появляться новые баги в сценариях, которые вроде бы работали.
7. Нахождение и устранение всех ошибок не гарантирует качество.
И да, качество ПО зависит не только от качественного тестирования, но и от таких параметров, как удобство использования, приветливый интерфейс и много другого!