270 Часть II: Приемы и технологии тестирования
ния удастся успешно автоматизировать, вам не придется отсеивать такое
большое количество тестов просто из-за нехватки времени.
Существует несколько способов того, как тестовые данные могут попа-
дать в программу.
• Файлы данных. Программа может быть способна считывать тесто-
вые данные из файлов. При этом ее пользовательский интерфейс,
разумеется, не тестируется, но зато основательно проверяется ее
базовая функциональность. Заранее подготовленные файлы приго-
дятся при тестировании загрузки информации программой, ее экс-
порта и импорта. Разумно составленные файлы позволяют
протестировать программу на границах ее возможностей (максимум
записей, огромные числа и т.п.). В каждой программе это может
быть нечто свое, так что потребуется довольно много времени на
подготовку тестовой информации.
Иногда тестовые данные стоит хранить в базе данных. Программа,
используемая для управления этой базой данных, должна обладать
способностью сохранения информации в различных форматах. Если
формат входных данных тестируемой программы изменится, с помо-
щью СУБД можно будет сформировать новые файлы. Впрочем, даже
если формат входных данных и не является для вашей программы
первоочередным вопросом, СУБД предоставляет целый ряд других
полезных возможностей для работы с данными, как, например,
удобные средства редактирования и возможность снабжения инфор-
мации необходимыми комментариями.
• Пакетные файлы. Некоторые программы, такие как компиляторы и
компоновщики, а также многие программы для математических
расчетов, могут считывать с диска абсолютно всю необходимую
информацию, включая и команды. Существуют и такие программы,
которые предназначены исключительно для пакетного выполнения,
они, по определению, читают все входные данные из файлов. Если
вам посчастливилось иметь дело именно с такой программой, под-
готовки тестовых файлов и анализа результатов будет достаточно для
тестирования практически всех ее аспектов.
• Перенаправление ввода. Если программа ожидает, что команды бу-
дут введены с клавиатуры, это еще не означает, что ею невозмож-
но управлять через файл. Просто следует воспользоваться
возможностью операционной системы перенаправлять ввод и вывод
информации (если, конечно, такая возможность имеется). Суть та-
кого перенаправления состоит в том, что программе кажется, будто
данные поступают из стандартного входного устройства (обычно это
клавиатура), в то время как на самом деле они считываются опера-
ционной системой из указанного вами файла. Всеми деталями это-
го механизма управляет операционная система.
Глава 11: Инструментальные средства тестировщика 271
Перенаправление ввода подходит не для всех случаев, поскольку его
возможности ограничены. Как, например, организовать задержку в
3,2 секунды между двумя нажатиями клавиш?
•
Ввод через последовательный порт. Еще один трюк, применяемый
тестировщиками, как и предыдущий, состоит в подмене входного
устройства таким образом, чтобы программа этого не заметила. Од-
нако на этот раз данные поступают не из файла, а из последователь-
ного порта. Существует специальное программное обеспечение,
позволяющее одному компьютеру управлять работой другого, свя-
занного с ним через сеть, модем или нуль-модем. В частности, это
имеющиеся на рынке персональных компьютеров программы эму-
ляции терминала.
Соединив два компьютера либо с помощью кабеля, подключенного
к их последовательным портам, либо через телефонную линию по-
средством модемов, можно, сидя за одним из них, управлять вторым
так, как будто вы работаете с его клавиатурой и мышью, и видеть на
экране отображаемую им информацию. Но главное, что действия
пользователя можно определить заранее, так чтобы их эмулировало
программное обеспечение. При этом его возможности гораздо шире,
чем при вводе данных операционной системой из файла. В частно-
сти, можно определить любые необходимые временные задержки и
реакцию пользователя на действия тестируемой программы. На
рынке имеется целый ряд мощных и дорогостоящих систем для
тестирования персональных компьютеров по описанной технологии,
и их возможности постоянно расширяются.
• Перехват и воспроизведение клавиатурного ввода. Если воспользо-
ваться программой, перехватывающей клавиатурный ввод, можно
один раз выполнить и "записать" с ее помощью тест, а затем вос-
производить его сколько угодно раз. Такая программа может запи-
сывать не только все нажатия клавиш, но и все манипуляции
пользователя с мышью.
Подобная технология не только облегчает работу, освобождая тести-
ровщика от необходимости выполнять утомительные и однообраз-
ные действия и позволяя ему полностью сосредоточиться на
программе, но и гарантирует, что тест всегда будет выполняться
абсолютно одинаково. Однако у нее есть и определенные издержки.
Записав тест, необходимо его тут же проиграть, чтобы убедиться, что
он записан правильно. Кроме того, определенных усилий требует
организация и документирование записанных тестировочных фай-
лов. В общей сложности на запись, проверку, сохранение и докумен-
тирование теста уходит как минимум в 3, а то и в 10 раз больше
времени, чем на его выполнение вручную.