Archive

Archive for the ‘SilkTest questions’ Category

Coordinate based element declaration in SilkTest

Декабрь 5th, 2008

Определение элементов окна основанное на координатах

Если вам необходимо воспользоваться именно коородинатным определением элемента окна, то вам надо выполнить две операции:

1. Определить координаты объекта в окне (можно с помощью Record – Window Locations).

2. В мультитэге для элемента добавить еще один элемент: х и у координаты элемента (см картинку).

SilkTest coordinate based element declaration

SilkTest coordinate based element declaration

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

SilkTest questions

SilkTest multilingual testing

Декабрь 2nd, 2008

Steve: подскажите пожалуйста, как определить координаты меню View (при тестировании WordPad)?
Потому что, на русском WordPadе меню View имеет одни координаты, а на английском WordPadе, координаты изменяются. Как сделать так, чтобы всегда кликать мышью по меню View, не в зависимости от языка WordPad?

SilkTest использует метки (tags) для определения элементов окна. Один элемент может иметь несколько меток. При определении окна Notepad (английской версии) будет записана следующая структура для элемента View:

View English only

View English only

Как Вы можете заметить меню View определяется меткой “View”. Если Вы хотите что бы это меню определялось и для русской версии Вам необходимо добавить дополнительную метку. При добавлении дополнительной метки tag необходимо изменить на multitag и дописать название элемента в русской версии Notepad’а. Название элемента чувствительно к регистру. В итоге должно получится вот так:

View English and Russian

View English and Russian

Теперь элемент View будет распознан SilkTest’ом как в русской так и английской версии программы Notepad.

SilkTest questions

SilkTest GetBitmapCRC () method

Ноябрь 27th, 2008

Steve: Расскажите побольше как работает метод GetBitmapCRC и как с ним работать?
Напишите пример?

Начну несколько издалека.

В процессе тестирования с использованием SilkTest очень часто возникают ситуации когда надо сравнить два изображения (кнопки, нераспознанного элемента окна или просто изображения). В таком случае можно использовать SYS_CompareBitmap () метод, который сравнивает два битмапа и возвращает иситину или ложь. (как звучит то! J). Этот метод очень хорош, но если вам надо сравинть например 5 картинок в секунду, то тут могу возникнуть проблемы, так как SilkTest просто не успеет это сделать за столь короткое время.

В этом случае на помощь приходит метод GetBitmapCRC (). Этот метод захватывает содержание окна (к которому он применен), делает проверку циклическим кодом (CRC) полученного битмапа и возвращает CRC значение. Т.е. в итоге мы имеем 32-битное целое число – уменьшенное цифровое представление окна (картинки окна). Это число мы можем использовать для быстрых сравнений. Т.е. в тех случаях, когда надо сравнивать много битмапов за ограниченный промежуток времени.

Давайте взглянем на синтаксис метода:

iCRC = window.GetBitmapCRC ([Rect, sMaskFile])

Переменная Описание
iCRC CRC значение битмапа, INTEGER
Rect Опциональный параметр – это координаты области захвата, относительно элемента, если параметр не указан, будет захвачен элемент целиком, RECT
sMaskFile Опциональный параметр, имя файла, который содержит маску для битмапа, STRING

Логика применения:

Этот метод нам нужен для проведения сравнения изменения состояния элемента окна. Для сравнения нам надо два значения: ожидаемое и действительное. Ожидаемое значение можно (нужно) захватить перед выполнением каких-либо действий с приложением (элементом окна), действительное значение – после выполнения бизнес логики теста. Более простыми словами: ожидаемое значение мы захватываем в начале тесткейса, производим необходимые тестовые действия, потом захватываем окно еще раз. Как только мы имеем два CRC значения – можно приступать к их сравнению.

Пример:

example GetBitmapCRC method SilkTest

example GetBitmapCRC method SilkTest

Дополнительная информация:

После первичного захвата битмапа элемента, SilkTest выжидает определенный интервал времени (определенный параметром OPT_BITMAP_MATCH_INTERVAL), затем производит еще один захват автоматически производя сравнение с первым захватом что бы убедится что картинка не изменилась. Можно установить что бы такое сравнение производилось несколько раз (параметр OPT_BITMAP_MATCH_COUNT). Если картинка не оказалась стабильной после определенного интервала времени (параметр OPT_BITMAP_MATCH_TIMEOUT) то SilkTest вызывает эксепшн E_BITMAP_NOT_STABLE.

CRC значения которые возвращает GetBitmapCRC () метод зависят не только от пользовательского интерфейса но и от аппаратного окружения. Так, картинки одних и тех же элементов захваченные на VGA или Super VGA мониторах будут разными, естественно будут разными и CRC значения.

А знаете ли вы что …

CRC (Cyclic Redundancy Check) контроль циклическим избыточным кодом (ЦИК) – один из способов автоматического контроля целостности данных при их передаче и хранении. Вычисленное с помощью разновидности полиномиального кода (т. е. по более сложным правилам, чем контрольная сумма) число, помещается в конце записи на носителе, используется для контроля целостности данных в ОЗУ, при чтении/записи на носитель или передаче по каналам связи. Принимающее устройство заново вычисляет эту сумму и сравнивает результат с принятым значением. При обнаружении в ЦИК ошибки выдается сообщение «CRC Error» или, в случае передачи пакета данных по компьютерной сети, производится повторная его передача

SilkTest questions

Скриншоты кнопок в SilkTest

Ноябрь 19th, 2008

Собственно вот вопросы, которые поступили:

1. Как сделать скриншот кнопки в трех состояниях – дефолтном, с наведенной мышкой, с нажатой мышкой?

В SilkTest для снятия скриншотов элементов окна используется метод CaptureBitmap (). Вот какое определения для данного метода дает help SilkTest’а:

Syntax

window.CaptureBitmap (sBitmapFile [, Rect])

Переменная Описание
sBitmapFile Имя файла куда будет сохранен скриншот (bitmap image)
Rect Опциональный параметр, определяющий регион, который будет захвачен. Отсчет ведется от левой верхней координаты окна.

Например, что бы снять битмап с какой-либо кнопки, необходимо выполнить следующий код

TheButton.CaptureBitmap()

Если Вы хотите заснять состояние кнопки в том случае когда на кнопку наведена мышка, то сначала выполните соответствующие действия (наведите курсор мыши на кнопку с помощью MoveMouse() метода), затем выполните метод CaptureBitmap ().

То же самое в случае, когда хотите снять битмап кнопки в нажатом состоянии. Для нажатия кнопки мыши и удержания ее используйте метод PressMouse ().

2. Как сделать скриншот меню без выделенного менюайтейма?

Не совсем понятен вопрос, возможно ненадо выделять менюайтем? :)

SilkTest questions

Q2: Which of Silk test tools is better: hacked one or licenced?

Октябрь 8th, 2008

Last of the users: Please, answer ASAP!! It’s my nightmare question :) Which of Silk test tools is better: hacked one or licenced?

Вопрос конечно интересный…
Все зависит от конкретной ситуации. Если ваша компания небольшая и ваша цель – просто заавтоматизировать некоторый функционал приложения, причем об этом будете знать только Вы, то вопрос о лицензии на софт остается полностью на Вашей совести.
Если же Вы представляете крупную компанию, которая дорожит авторитетом, или более того, предоставляет услуги по автоматизации тестового процесса, то выбор очевиден – только лицензионное ПО.
С функциональной точки зрения Trial версия SilkTest ничем не ограничена и никак не отличается от лицензионной, просто по истечении срока она перестанет работать.

SilkTest questions

Q1: Что такое SilkTest?

Октябрь 8th, 2008

User: Что такое SilkTest?

Вопрос общего плана, но неплох для начала :)
SilkTest – инструмент для автоматизации тестирования приложений. Его используют для написания и запуска автоматических тест кейсов.

SilkTest questions