302 Глава 7
тестирования, и проблемам управления – оценке затрат (стоимости, времени, пер-
сонала) на тестирование;
выбранных: с проблемой адекватности тестирования связана проблема выбо-
ра ограниченного множества тестов. Методы тестирования, в основном, отличают-
ся подходами к выбору множества тестовых данных из входного пространства;
ожидаемое поведение: нужно уметь определять, правильны ли полученные
результаты выполнения программы, соответствует ли наблюдаемое выполнение
ожиданиям пользователя или спецификациям. В литературе по тестированию это
называется проблемой оракула [2] (эталона), для решения которой могут приме-
няться разные подходы (оценка результатов, сравнение с существующим эталоном,
согласование с пользователем трактовок понятий «дефект» и «отказ»).
Хотя основная цель тестирования – обнаружить дефекты в программной сис-
теме и установить ее функциональную пригодность, необходимо рассматривать и
другие его цели - тестирование удобства применения, производительности и про-
чие. Отсюда следует два основных подхода к выполнению тестирования – деструк-
тивный (отрицательное, разрушительное тестирование) и конструктивный (поло-
жительное или демонстрационное).
При деструктивном подходе тесты выбираются с целью обнаружения дефек-
тов, и эффективным считается тест с высокой вероятностью их обнаружения.
При конструктивном подходе тесты выбираются для демонстрации соответ-
ствия характеристик ПС установленным требованиям пользователя или целям ка-
чества.
Тестирование программной системы на протяжении процесса разработки вы-
полняется на нескольких уровнях. Для каждого уровня тестирования определяется
категория объектов тестирования (вся система, программные компоненты, модули)
и набор проверяемых целей (тестируемых характеристик).
Цели и объекты совместно определяют критерий выбора множества тестов,
как относительно его полноты - «какой объем тестирования достаточен для дости-
жения установленной цели?», так и его состава - «какие тесты должны быть выбра-
ны для достижения установленной цели?». Первый вопрос касается выбора крите-
рия покрытия, а второй – критерия выбора типов тестов.
На каждом уровне тестирование повторяется многократно, образуя циклы
тестирование-исправление-повторное тестирование.
В современной программной инженерии все виды действий, связанные с тес-
тированием, начиная с планирования до оценки результатов, должны интегриро-
ваться в четко определенный, документируемый и контролируемый процесс тес-
тирования. Документирование процесса тестирования облегчает взаимодействие
между разработчиками, группой тестирования и руководством проекта, а также по-
зволяет сделать процесс видимым, повторяемым и измеряемым.
К ключевым вопросам тестирования в SWEBOK отнесены следующие:
1. Критерии выбора тестов/Критерии адекватности тестов (или правила
прекращения тестирования). Эти критерии могут применяться как для создания
набора тестов, так и для проверки, насколько выбранные тесты адекватны решае-
мым задачам (тестирования), а также помогают определить, когда можно или необ-
ходимо прекратить тестирование.
2. Эффективность тестирования/Цели тестирования. Тестирование – это
наблюдение за поведением программы, выполняемой в целях тестирования с за-