Семь принципов тестирования

Тестирование уже несколько десятилетий является неотъемлемым процессом жизненного цикла программного обеспечения. За это время практическим путём были выработаны основные принципы тестирования, которые активно применяются в работе и являются общим руководством для тестирования в целом.
Общепринято выделять семь принципов тестирования
Тестирование выявляет наличие дефектов
В процессе тестирования можно показать, что дефекты присутствуют, но нельзя доказать что они полностью отсутствуют. Сколько бы тестов по обнаружению дефектов мы ни провели, нельзя быть уверенным, что нет больше тестов, которые нашли бы ещё дефекты. Но это не означает, что тестирование в таком случае бесполезно, ведь чем больше хороших и полезных тестов создает и запускает специалист по тестированию, тем меньше вероятности дефектов в программном обеспечении и соответственно больше уверенности в качестве продукта.
Невозможно достичь исчерпывающего тестирования
Это значит, что невозможно провести все тесты со всеми возможными комбинациями тестовых данных, за исключением простых случаев. К примеру, необходимо протестировать форму ввода, состоящую из пяти полей и каждое поле принимает пять значений. Соответственно, чтобы проверить только валидные значения необходимо 5 в 5ой степени комбинаций = 3125, а если таких полей десятки?
Тестирование нужно начинать как можно раньше
Чем раньше начнется тестирование программного обеспечения, тем дешевле и эффективнее будет весь процесс (от концепции зарождения продукта до конечного использования). Исправления пользовательских и системных требований, технической архитектуры и дизайна, кода и модульных тестов, проведение отладки, исправлений в тестовых данных и перепроведение тестирования - стоит в n раз больше на поздних стадиях, чем на ранних.
Кластеринг (скопление) дефектов

Большое количество дефектов, как правило, находится в конкретных модулях, что выявляется на предрелизном этапе тестирования либо на этапе пользовательской эксплуатации. Поиск дефектов очень похож на поиск грибов в лесу: если найден один, то следует поискать еще один рядом с ним.
Парадокс пестицида
Определение “парадокс пестицида” было введено в 1983 Борисом Бейзером. Как пример он взял обработку полей пестицидами: при обработке поля в первый раз определенное количество жуков умирает, но остается та часть, которая невосприимчива к ядохимикатам. После повторной обработки с большей вероятностью можно сказать, что все та же часть жуков выживет, соответственно многократная обработка становится бессмысленной. Если при каждом регрессивном тестировании прогонять одни и те же тесты, то в конечном итоге они перестанут находить новые дефекты. Поскольку система постоянно эволюционирует, необходимо периодически пересматривать и модернизировать тестовые сценарии.
Контекстное тестирование
В зависимости от контекста объекта тестирования применяются соответствующие методы, техники, типы тестирования. Например, коммерческий веб-сайт будет тестироваться иначе, чем игровое приложение.
Несоответствие требованиям
После удачного проведения всех тестов продукт должен соответствовать требованиям и ожиданиям пользователя. Если объект тестирования не соответствует ожиданиям пользователя, все труды напрасны.