Вид критерия Что должно обеспечивать множество тестов

А. Функциональные

1. Тестирование классов вх. данных! Содержать представителей всех вх или вых

2. Тестирование классов вых. данных! классов и точки на границах классов

3. Тестирование функций Каждая функция внешнего интерфейса должна быть проверена >= 1раза

Б. Структурные

1. Тестирование команд Каждая команда (оператор) д.б. выполнена

>= 1раза

2. Критерий С1 – тестир. ветвей Каждая ветвь д.б. выполнена >= 1раза

3. Критерий С2 – тестир. путей Каждый путь в графе программы д.б.

выполнен >= 1раза (Вопрос 3)

На рис 10-1 а) видно отличие тестирования команд (достаточен один тест) от С1 (необходимы два теста как минимум). Рис 10-1 б) иллюстрирует отличие С1 (достаточно двух тестов, покрывающих пути 1, 4 или 2, 3) от С2 (необходимо 4 теста для всех четырех путей). С2 в принципе недостижим в реальных программах из-за их цикличности, поэтому ограничиваются тремя путями для каждого цикла: 0, 1 и N повторений цикла.

Идея назначения классов эквивалентности вх/вых данных для функционального тестирования основана на разумном предположении, что программа на всем классе ведет себя так же, как на его одном представителе. Классы назначаются исходя из семантики решаемой задачи. В таблице 1 дан пример тестирования классов выходных данных: минимальный набор тестов для программы нахождения вещественных корней квадратного уравнения ax2 + bx + c = 0 (Грюнбергер, 1968).

Рис.10-1. Траектории вычислений при структурном тестировании

Таблица 1

  a b c Ожидаемый результат Что проверяется
    -5   x1=2, x2=0.5 Случай вещественных корней
        Сообщение Случай комплексных корней
    -12   x1=4, x2=0 Нулевой корень
        Сообщение Неразрешимое уравнение
        Сообщение Неразрешимое уравнение
        Сообщение Не квадратное уравнение (деление на 0)
        x1=x2=0 Корень из 0

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

Пример, где назначаются классы входных данных – на рис. 10-2. Здесь классы- точечные множества; внутри области А они отмечены штриховкой; символом * отмечены представители классов - тестовые значения. На рис. 10-2 предложен минимальный набор из 18 тестов – по одному для каждого класса и границы –

стороны многоугольника, ограничивающего область А. В состав тестового набора следует включать значения, непосредственно примыкающие к граничным. Например, если допустимые входные значения – целые от 1 до 99, то для тестирования допусти-мых данных можно выбрать 1 и 99, а для недопустимых – 0 и 100. Если программа получает 8 входных данных, то нужно предусмотреть 3 теста: ввод 8, 7 и 9 данных.

Запись классов эквивалентности входных данных в текстовой форме является частным случаем плана тестирования, пример которого приведен на рис. 10-3. Заметим, что классы эквивалентности могут пересекаться, как в этом примере (классы 1.2.4.1 и 1.2.4.3) – это приводит к некоторой избыточности, но не страшно. Задание 4.

Рис 10-2. Классы входных данных для тестирования

1. Ввод числа

1.1 Допустимые варианты

1.1.1 Числа от 0 до 99

1.2 Недопустимые варианты

1.2.1 0

1.2.2 > 99

1.2.3 Отрицательные числа

1.2.4 Буквы и другие нечисловые символы

1.2.4.1 Буквы

1.2.4.2 Символы с ASCII-кодами, меньшими кода 0

1.2.4.3 Символы с ASCII-кодами, большими кода 9

2. Ввод первой буквы имени

2.1 Допустимые варианты

2.1.1 Первый символ является заглавной буквой

<и т.д.>

Рис 10-3. Классы входных данных: фрагмент плана тестирования

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

Нагрузочные тесты проверяют работу программы при различных конфигурациях аппаратуры (особенно при минимальных) и при совместном выполнении в мультипро-граммной среде.


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



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