Методы тестирования программного обеспечения. Степанченко И.В. - 64 стр.

UptoLike

Составители: 

66
вращает управление или выдает сообщение об ошибке без передачи в
класс А определенных осмысленных результатов, класс А работает не-
верно не вследствие ошибок в самом классе, а из-за несоответствия ему
заглушки. Более того, результат может оказаться неудовлетворительным,
если ответ заглушки не меняется в зависимости от условий теста. Напри-
мер
, допустим, что нужно написать заглушку, замещающую программу
вычисления квадратного корня, программу поиска в таблице или про-
грамму чтения соответствующей записи. Если заглушка всегда возвраща-
ет один и тот же фиксированный результат вместо конкретного значения,
предполагаемого вызывающим методом класса именно в этом вызове, то
вызывающий метод сработает как ошибочный (например, зациклится)
или выдаст неверное выходное значение. Следовательно, создание за-
глушекзадача нетривиальная.
При обсуждении метода нисходящего тестирования часто упускают
еще одно положение, а именно форму представления тестов в программе.
В нашем примере вопрос состоит в том, как тесты должны быть переданы
классу А? Ответ на этот вопрос не является совершенно очевидным, по
-
скольку верхний класс в типичной программе сам не получает входных
данных и не выполняет операций ввода-вывода. В верхний класс (в нашем
случае, А) данные передаются через одну или несколько заглушек. Для ил-
люстрации допустим, что классы В, С и D выполняют следующие функции:
Вполучает сводку о вспомогательном файле;
С
определяет, соответствует ли недельное положение дел установлен-
ному уровню;
D – формирует итоговый отчет за неделю.
В таком случае тестом для класса А является сводка о вспомогатель-
ном файле, получаемая от заглушки В. Заглушка D содержит операторы,
выдающие ее входные данные на печатающее устройство или дисплей,
чтобы сделать возможным анализ результатов прохождения каждого
теста.
С этой программой связана еще одна проблема. Поскольку метод
класса А вызывает класс В, вероятно, один раз, нужно решить, каким об-
разом передать в А несколько тестов. Одно из решений состоит в том,
чтобы вместо В сделать несколько версий заглушки, каждая из которых
имеет один фиксированный набор тестовых данных. Тогда
для использо-
вания любого тестового набора нужно несколько раз исполнить про-
грамму, причем всякий раз с новой версией заглушки, замещающей B.
Другой вариант решениязаписать наборы тестов в файл, заглушкой чи-
тать их и передавать в класс A. В общем случае создание заглушки может
быть более сложной задачей, чем в разобранном выше
примере. Кроме
того, часто из-за характеристик программы оказывается необходимым
сообщать тестируемому классу данные от нескольких заглушек, заме-
вращает управление или выдает сообщение об ошибке без передачи в
класс А определенных осмысленных результатов, класс А работает не-
верно не вследствие ошибок в самом классе, а из-за несоответствия ему
заглушки. Более того, результат может оказаться неудовлетворительным,
если ответ заглушки не меняется в зависимости от условий теста. Напри-
мер, допустим, что нужно написать заглушку, замещающую программу
вычисления квадратного корня, программу поиска в таблице или про-
грамму чтения соответствующей записи. Если заглушка всегда возвраща-
ет один и тот же фиксированный результат вместо конкретного значения,
предполагаемого вызывающим методом класса именно в этом вызове, то
вызывающий метод сработает как ошибочный (например, зациклится)
или выдаст неверное выходное значение. Следовательно, создание за-
глушек – задача нетривиальная.
     При обсуждении метода нисходящего тестирования часто упускают
еще одно положение, а именно форму представления тестов в программе.
В нашем примере вопрос состоит в том, как тесты должны быть переданы
классу А? Ответ на этот вопрос не является совершенно очевидным, по-
скольку верхний класс в типичной программе сам не получает входных
данных и не выполняет операций ввода-вывода. В верхний класс (в нашем
случае, А) данные передаются через одну или несколько заглушек. Для ил-
люстрации допустим, что классы В, С и D выполняют следующие функции:
В – получает сводку о вспомогательном файле;
С – определяет, соответствует ли недельное положение дел установлен-
ному уровню;
D – формирует итоговый отчет за неделю.
     В таком случае тестом для класса А является сводка о вспомогатель-
ном файле, получаемая от заглушки В. Заглушка D содержит операторы,
выдающие ее входные данные на печатающее устройство или дисплей,
чтобы сделать возможным анализ результатов прохождения каждого теста.
     С этой программой связана еще одна проблема. Поскольку метод
класса А вызывает класс В, вероятно, один раз, нужно решить, каким об-
разом передать в А несколько тестов. Одно из решений состоит в том,
чтобы вместо В сделать несколько версий заглушки, каждая из которых
имеет один фиксированный набор тестовых данных. Тогда для использо-
вания любого тестового набора нужно несколько раз исполнить про-
грамму, причем всякий раз с новой версией заглушки, замещающей B.
Другой вариант решения – записать наборы тестов в файл, заглушкой чи-
тать их и передавать в класс A. В общем случае создание заглушки может
быть более сложной задачей, чем в разобранном выше примере. Кроме
того, часто из-за характеристик программы оказывается необходимым
сообщать тестируемому классу данные от нескольких заглушек, заме-

                                  66