Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
НПО - ПОИТ (Бахтизин).doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

8.8.3.2. Пример иллюстрации сложности задачи разработки тестов

Для иллюстрации сложности задачи разработки тестов рассмотрим пример тестирования программы, предложенной в 1979 году Гленфордом Майерсом. В программу вводятся 3 целых числа, представляющих собой длины сторон треугольника. Программа анализирует введённые данные и печатает сообщение о том является ли треугольник разносторонним, равнобедренным или равносторонним.

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

Очевидно, что необходимо в первую очередь разработать тесты, которые представляют собой треугольник, у которого всегда сумма двух любых сторон больше третьей стороны:

  • разносторонний треугольник – треугольник, у которого стороны a, b, c соответственно равны, например, 2, 3, 4 и возможные перестановки чисел 2, 3, 4;

  • равнобедренный треугольник со сторонами, например, 2, 3, 2, и возможные перестановки двух равных сторон 2, 2, 3 и 3, 2, 2;

  • равносторонний треугольник, например, 2, 2, 2.

Данные тесты представляют собой, так называемые позитивные тесты, так как берутся только те значения сторон a, b, c, которые представляют собой треугольник.

Очевидно, что также необходимо разработать тесты, которые представляют собой не треугольник. Это, так называемые негативные тесты. Как показывает практика, негативных тестов реально больше, чем позитивных. Негативными тестами могут быть:

  • числа 1, 2, 3, которые не представляют треугольник (сумма длин двух сторон равна третьей);

  • возможные перестановки чисел 1, 2, 3;

  • числа 2, 2, 4, которые не представляют собой треугольник;

  • возможные перестановки чисел 2, 2, 4;

  • тесты, в которых длина одной, двух или трёх сторон равна нулю;

  • тесты, в которых сумма длин двух сторон меньше третьей, например, 1, 2, 4; 1, 4, 2; 4, 1, 2;

  • тесты, в которых одна из сторон или все стороны принимают вещественные значения;

  • тесты, в которых одна из сторон или все стороны принимают символьное значение;

  • тесты, в которых одна из сторон или все стороны превышают максимально допустимое целое число ;

  • тесты, в которых одна из сторон или все стороны принимают значения спецсимволов;

  • тесты, в которых одна из сторон или все стороны принимают отрицательные значения;

  • тесты, в которых одна из сторон отсутствует и т.п.

Можно попытаться разработать тесты путём полного перебора возможных целых значений чисел a, b, c от 1, 1, 1 до MaxInt, MaxInt, MaxInt. Но на практике это нереально. Даже если сделать полный перебор, то нет 100% гарантии того, что будут найдены все ошибки ,так как при этом остаётся неучтённым огромное количество негативных тестов. Таким образом, анализ данного примера показывает, что тестирование даже таких простых программ представляет собой сложную задачу.