Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тестирование программного обеспечения. Фундамен...docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
935.81 Кб
Скачать

Глава 8: Тестирование принтеров и других устройств 215

Управление принтером

Для начала представьте себе, что вы имеете дело с программой, осуще­ствляющей взаимодействие с принтером абсолютно самостоятельно. Было время, когда программист мог написать программу, привязанную к одно­му конкретному типу принтеров. Если пользователь подключал еще один принтер, программисту приходилось модифицировать программу, включая в нее команды управления новым принтером. Хотя эта работа и не была особенно сложной, необходимость сопровождать программу в течение дол­гого времени и обеспечивать ее совместимость со все расширяющимся набором устройств могла превратиться в настоящее мучение.

К счастью, эта проблема давно решена. Спасением программистов стала концепция виртуальных принтеров — абстрактных устройств с фиксирован­ным набором возможностей и команд. Именно эти команды управления виртуальным принтером и включаются в прикладную программу, а за их перевод на язык конкретного устройства отвечает промежуточная програм­ма, называемая драйвером.

В современных операционных системах имя принтера указывается при их настройке. Драйверы устройств являются частью операционной систе­мы и поставляются вместе с ней. Если же драйвера конкретного устройства в системе нет, его можно установить отдельно, и он тоже будет рассматри­ваться как часть системы. Как правило, производители аппаратного обес­печения включают драйверы своих устройств в комплект их поставки.

Преимущество описанного подхода состоит в том, что прикладная про­грамма ничего не знает об установленном в системе принтере. Она направ­ляет управляющие команды и данные виртуальному принтеру, не заботясь

о том, каким образом они будут переданы конкретному устройству и ка­кие преобразования для этого потребуются.

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

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

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

216 Часть II: Приемы и технологии тестирования

тип своего принтера. Разумеется, подобные программы и тестировать, и сопровождать гораздо сложнее, но в этом подходе нет ничего предосуди­тельного, если он обусловлен объективной необходимостью и ведет к по­вышению качества и производительности программы — ведь конечного пользователя интересует именно это.

Общая стратегия тестирования принтеров

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

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

Ошибка, специфическая для класса принтеров. Если программа орга­низована так, что с каждым классом принтеров работает отдельный блок кода, возможно, что с одним классом принтеров программа ра­ботает правильно, а с другим — нет. Например, она правильно уп­равляет матричными принтерами и принтерами, использующими язык PostScript, но отказывается работать с принтерами LaserJet. Рис. 8.2 иллюстрирует различие между классами принтеров, драйве­рами и конкретными моделями устройств.

Класс принтеров

Драйверы

Принтеры

Простые управляющие коды

Epson 24 pin

Epson LQ-510 Panasonic KXP-1124

IBM Graphics

IBM Graphics Tandy DM P-106

Собственная кодировка Okidata

Okidata ML-82 Okidata ML-92

Hewlett Packard PCL

HP LaserJet II

HP LaserJet II HP LaserJet IID

HP PCL5

HP LaserJet III

PostScript

PostScript

Apple laserWinter NT

РИСУНОК 8.2. Классификация принтеров