Тестирование графических интерфейсов с помощью SilkTest Bitmap Tool

Олег Большаков

В предыдущей статье Автоматизация тестирования с помощью Borland SilkTest мы рассмотрели принцип автоматизированного регрессионного тестирования с помощью программного продукта Borland SilkTest. Кстати, теперь Borland перешел под крыло Micro Focus, так что правильнее называть этот продукт - Microfocus SilkTest. Есть и еще очень интересные изменения - например, покупка Micro Focus"ом всей линейки продуктов тестирования от компании Compuware, но об этом будет отдельная статья!

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

С таким подходом мы можем тестировать подавляющее большинство приложений, однако есть определенные категории программ, для которых данный метод не подходит. Это - графические редакторы, программы для работы с фотографиями, визуальные построители и прочие программы для работы с графикой и изображениями. Допустим, мы тестируем функцию обработки изображения. Последовательность действий тестировщика при проверке функционала примерно следующая: запустить приложение, загрузить графический файл, выбрать область для преобразования, нажать на панеле инструментов кнопку для выполнения преобразования и после этого просмотреть результирующее изображение. Каким же образом автоматизировать выполнение данного теста? Сам собой напрашивается ответ, что нужно сравнить полученное изображение с заранее подготовленным правильным (эталонным) изображением. Соответственно, программное обеспечение для тестирования должно уметь выполнять сравнение двух или более изображений и выводить некоторую статистику по сравнению. В поставке SilkTest для этого предназначена утилита SilkTest Bitmap Tool, возможности которой мы сейчас рассмотрим.

Итак, утилита Bitmap Tool - это приложение, поставляемое в составе SilkTest. Утилита Bitmap Tool позволяет тестировать приложения посредством сравнения изображений и выявления различий между ними. Основное назначение - это тестирование графических приложений, однако с не меньшим успехом ее можно использовать для графических элементов обычных приложений. Для примера, можно проверить, корректно ли отображаются шрифты, или проверить, не изменилась ли пиктограмма на кнопке на панели инструментов. Утилиту Bitmap Tool можно использовать как самостоятельно, так и воспользовавшись встроенными в SilkTest функциями для ее использования. Например, из кода можно вызывать функцию, которая зафиксирует изображение текущего окна, элемента управления или всего экрана и сравнит с заранее определенным изображением (эталонным).

К интересным возможностям Bitmap Tool можно отнести следующие:

  • Графическое выделение различающихся областей эталонной и тестовой картинок
  • Масштабирование различающихся областей
  • Возможности навигации по различающимся областям (переход к следующей, к предыдущей)
  • Статистика различий (количество пикселей, различия в цветах, в размерах, процентное представление метрик)
  • Редактирование изображений простейшими графическими операциями, печать и сохранение в другие форматы.

Работа с утилитой из тестового скрипта очень проста, так как язык 4Test содержит весь необходимый набор для работы с изображениями. Например, следующий пример сравнивает внешний вид приложения TestApp с эталонным изображением:

TestApp.VerifyBitmap ("c:\sample\testbase.bmp")

Следующий пример - это сравнение эталонной картинки и изображения компонента Foo:

Verify (SYS_GetBitmapCRC ("base.bmp"), Foo.GetBitmapCRC ())

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

Таким образом, можно подвести итог: SilkTest Bitmap Tool является прекрасным дополнением к стандартному инструментарию SilkTest"а и позволяет автоматизировать тестирование в самых нестандартных случаях - например, при обработке изображений или при использовании экзотических пользовательских интерфейсов.

 


Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/home.asp?artId=21958