Проблемы тестирования программ

Тестирование как объект изучения может рассматриваться с различ­ных чисто технических точек зрения. Однако наиболее важными при изу­чении тестирования представляются вопросы его экономики и психологии разработчика. Иными словами, достоверность тестирования программы в первую очередь определяется тем, кто будет ее тестировать и каков его об­раз мышления, и уже затем – определенными технологическими аспектами [6]. Поэтому, прежде чем перейти к техническим проблемам, мы остано­вимся на этих вопросах.

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

Тестирование – это процесс исполнения программы на специально подобранных входных данных с целью обнаружения ошибок.

Практикой установлено [6], что именно такой целевой установкой в значительной мере определяется успех тестирования. Дело в том, что вер­ный выбор цели дает важный психологический эффект, поскольку для че­ловеческого сознания характерна целевая направленность. Если поставить целью демонстрацию отсутствия ошибок, то мы подсознательно будем стремиться к этой цели, выбирая тестовые данные, на которых вероятность появления ошибки мала. В то же время если нашей задачей станет обнару­жение ошибок, то создаваемый нами тест будет обладать большей вероят­ностью обнаружения ошибки. Такой подход заметнее повысит качество программы, чем первый.

Определим для результатов тестового прогона исходы «удачный» и «неудачный». Тестовый прогон, приведший к обнаружению ошибки, нельзя назвать неудачным хотя бы потому, что, как отмечалось выше, это целесообразное вложение капитала. Отсюда следует, что в слова «удач­ный» и «неудачный» необходимо вкладывать смысл, обратный общепри­нятому. Поэтому в дальнейшем будем называть тестовый прогон удачным, если в процессе его выполнения обнаружена ошибка, и неудачным, если получен корректный результат.