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

Глава 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. Классификация принтеров