Качество продукта зависит, прежде всего, от качества процесса производства данного продукта (в случае программного обеспечения, процесса разработки программного обеспечения) и от знаний, навыков и мотивации разработчиков- производителей (аналитиков, архитекторов, программистов, менеджеров проектов и т.д.) продукта. Таким образом, пути повышения качества программного обеспечения – улучшение процессов, обучение людей и т.д. Программное обеспечение также необходимо проверять, т.е. тестировать.

Тестирование используется во многих областях человеческой деятельности: в науке тестируют гипотезы и теории при помощи наблюдений и экспериментов, в ходе обучения тестируются студенты, в производстве тестируется продукция.

Цели тестирования – продемонстрировать то, что программное обеспечение делает то, что нужно, и обнаружить ошибки до того момента, когда оно будет передано в использование. При тестировании обычно запускают программу, используя при этом тестовые данные. Далее проверяются результаты тестирования на нахождение ошибок и аномалий или также на контроль нефункциональных свойств. С помощью тестирования можно найти ошибки, но не доказать их отсутствие. Тестирование является частью более широкого процесса валидации (проверка достоверности) и верификации.

Типичный процесс тестирования изображен на следующем рисунке:

Рисунок 1-6. Процесс тестирования

В соответствии с тестовыми случаями выбираются тестовые данные (вход) и дополнительно фиксируется, какое в случае этих данных должно быть поведение системы или какой должен быть выход. Систему запускают с выбранными тестовыми данными, и результат сравнивают с ожидаемым результатом / поведением. Если система вела себя, как и ожидалось, тест считают пройденным. Если нет, то ошибка обнаружена. Для регистрирования результатов теста составляется отчет. В чем точно заключается ошибка, должны выяснить разработчики и затем ее исправить.Тестирование программного обеспечения и системы, т.е. продукта, напрямую связано с качеством продукта. Продукт является качественным, если он удовлетворяет потребностям работы, тому, что мотивировало создание данного продукта. Итак, необходимо проведение соответствующих тестов с целью установления, соответствует ли полностью продукт требованиям заказчика. Тем не менее, достижение абсолютной уверенности, что продукт не содержит ошибок, в реальности невозможно.