Роль тестирования в процессе разработки программ

До начала 80-х годов процесс тестирования ПО был разделен с процессом разработки: вначале программисты реализовывали заданную функциональность, а затем тестировщики приступали к проверке качества созданных программ. Однако такой подход создает множество проблем. Например, разработка программ может оказаться достаточно длительной (скажем, несколько месяцев) - чем в это время должны заниматься тестировщики?

Другая, более серьезная проблема заключается в плохой предсказуемости результатов такого процесса разработки. Ключевой вопрос таков: сколько времени потребуется на завершение продукта, в котором существует 500 известных ошибок? На самом деле, предугадать это совершенно невозможно, так как разные ошибки будут требовать разного времени на исправление, а исправление известных ошибок будет неизбежно связано с внесением новых. Steve McConnell приводит в своей книге [29] следующую мрачную статистику: даже однострочное изменение в программе с вероятностью 55% либо не исправляет старую ошибку, либо вносит новую. Если же учитывать изменения любого объема, то в среднем менее 20% изменений корректны с первого раза!

В связи с этим в 90-х годах появилась другая методика разработки, которую мы вслед за Microsoft'ом будем называть zero-defect mindset. Основная идея этой методики заключается в том, что качество программ проверяется не post factum, а постоянно в процессе разработки [27, 28]. Например, программист не может перейти к разработке новой функциональности, если существуют известные ошибки высокого приоритета в частях, разработанных им ранее.

При такой постановке вопроса тестирование становится центральной частью любого процесса разработки программ. С другой стороны, zero-defect mindset предъявляет существенно более высокие требования к квалификации инженера тестирования: теперь в сферу его ответственности попадает не только функциональное тестирование, но и организация процесса разработки (процесс ежедневной сборки, участие в инспекциях, сквозных просмотрах и обычное чтение исходных текстов тестируемых программ). Поэтому идеальной кандидатурой на позицию тестировщика становится наиболее опытный программист.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: