Archive

Archive for the ‘SilkTest’ Category

Automation effectiveness

Январь 4th, 2009

When we start script development we can focus on the following benefits:

  • Time
  • Budget
  • Quality

Automation could be effective only in the case when one of the listed benefits is reached. All three benefits are very hard target that is almost unreachable. Stakeholders should identify desired benefits as it strongly influences the automation process.

Let’s consider any benefit in detail.

Read more…

SilkTest

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

Automation essentials: three main questions

Ноябрь 24th, 2008

Before starting an automation activities on the project you should answer on the three main questions:

  • Why to automate? (Target)
  • What to automate? (Scope)
  • How to automate? (Tools)

Let’s try to answer on them together.

Why we need automate something? What benefits we will get and what are the disadvantages?

Benefits:

  1. Consistent tests.
  2. Faster test execution.
  3. Less efforts after scripts development is complete.
  4. Automated reports.
  5. No manual activities are required at runtime.

Disadvantages:

  1. Inflexible scope
  2. Support efforts
  3. High development efforts
  4. Impossible to develop if application has major defects
  5. Test capabilities are limited by an automation tool functionality
  6. Tool cost
  7. Minor defects miss

Lets go to the next question. Where automation will give more results, where it more effective or ineffective? What to automate? So, question is about automation scope.

Effective:

  1. Completed modules
  2. Commonly-used functionality
  3. Multiple dataset cases
  4. Defect free modules

Ineffective:

  1. Modules under development
  2. Rarely-used functionality
  3. Single dataset cases
  4. Modules that contain defects

From above information we can get an automation approach. In most cases combined automated and manual testing could be used with high effectiveness in the following way:

  • New or changed functionality is tested manually until it is defect free or at acceptable quality level. Then it may be automated.
  • Core functionality, mostly usable use-cases and mature functionality are covered with automated tests which executed for each build.

And the last question is the how to automate? Meaning what tools you will be needed.

When you need to select tool you need to think about:

  • Capability & compatibility with target application
  • Script support effectiveness
  • Script writing effectiveness

Web based applications require web based automation tools, standalone applications – tools which works with standalone.

It is very important that tool have good IDE, so tester will save much time on script support and writing (script updating and debugging, executing, analyzing).

Less time on support – more effects from automation testing.

SilkTest

Скриншоты кнопок в 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

Управление исключительными ситуациями в SilkTest

Ноябрь 18th, 2008

англ.: Exception Handling in SilkTest

Если во время выполнения тесткейса произошла ошибка (напирмер действительное значение не совпало с ожидаемым) по умолчаню SilkTest запускает систему восстановления (Recovery System), которая:

  • Останавливает тесткейс.
  • Записывает ошибку в лог файл.
  • Восстанавливает приложение к базовому состоянию (BaseState), для того что бы подготовить его к запуску следующего тесткейса.

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

Непрдевиденные ошибки принято называть исключительными ситуациями (Exceptions). Если они произошли значит что-то пошло не так как было задуманно. Такие ситуации могут быть сгенерированы SilkTest специально (например при проверке какого-то значения) или непредвиденно (если произошло деление на ноль и др.).

В SilkTest существует специальная конструкция для управления исключительными ситуациями do.. except. Давайте рассмотрим синтаксис и возможности использования данной конструкции в скрипте.
Итак, do.. except позволяет отлавливать исключительные ситуации таким образом что выполнение основного скрипта (test case) не будет прервано.

Syntax
do
statements1
except
statements2

Переменная Описание
statements1 Действие или цепочка действий которые могут привести к исключительно ситуации (Exception)
statements2 Действие или цепочка действий которые будут выполнены в том случае если исключительная ситуация вызванна действиями из секции do

Давайте рассмотрим несколько примеров, когда можно использовать данную конструкцию. Самый простой способ – использовать ее когда мы не уверены, существует ли какой-то элемент окна или нет, и не хотим что бы скрипт «свалился» если этот элемент не был найден. В таком случае, нестабильный участок когда можно поместить в конструкцию do.. except. Обратите внимание на нижеследующий код (рис.1). Здесь команда Notepad.File.Open.Pick()закоментирована, следовательно окошко Open не появится и следущая операция Open.FileName.SetText (sFileName) не сможет быть выполнена. SilkTest сгенерирует exception который будет обработан и следующей командо которая будет выполнена будет первая команда из секции except.

Рис. 1. Применение do.. except при взаимодействии с нестабильной конструкцией окна

Exception’ы можно использовать так же в процессе проверок. Давайте рассмотрим следующий пример (рис.2)

Рис. 2. Использование Exception для проверки значений

Как мы видим, если при сравнении в функции TestVerification () действителного значения с ожидаемым будет получен отрицательный результат, то SilkTest сгенерирует свой собственный Exception. Но так как функция TestVerification () находится в конструкции do.. except то при появлении Exception будут выполнены команды из except секции.
Такая арихтектура проверки очень наглядна и компакнта, к тому же если выполнение Вашего скрипта напрямую зависит от результата полученного в TestVerififcation – то это единственно верный путь.

SilkTest

Система восстановления тесткейсов в SilkTest

Ноябрь 6th, 2008

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

Система восставноления приведет приложение к базовому состоянию в любои из нижеприведенных случаев:

  1. До начала выполнения тесткейса. Система восставноления приведет приложение к базовому состоянию даже если предыдущий тесткейс был не доведен до конца или закончился с ошибкой.
  2. Во время выполнения тесткейса. Если возникает непредвиденная ошибка, система восстановления записывает сообщение об ошибки в лог, заканчивает выполнение тесткейса и запускает процесс восстановления приложения к базовому состоянию до начала выполнения следующего тесткейса.
  3. После выполнения тесткейса. Например, если тесткейс не смог самостоятельно закрыть окно приложения, то будет запущена система восстановления, которая выполнет все необходимые для этого действия и восстановит приложение к базовому состоянию.

Что же такое базовое состояние приложения?

Базовое состояние (BaseState) это наиболее стабильное состояние приложения, с которго будет начинатся выполнение всех тесткейсов. Часто базовое состояние приложения это то, к которому приходит приложение сразу после запуска.

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

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

Бывают ситуации, когда наиболее стабильное состояние приложения является такое, когда приложение вообще не запущено.

Учитывая все вышесказанное можно сделать вывод, что метод, который будет приводить приложение к базовому состоянию может действовать в двух направлениях:

  1. Пытаться закрыть все окна и диалоги, тем самым пытаться завершить работу приложения
  2. Проверить запушено ли приложение в текущий момент и если да, попытаться перезапустить его.

Первый метод довольно прост в исполнении, Вам просто необходимо проверить с помощью метода Exsits() открыто ли окно, и если да, применить к нему метод Close()

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

Например, для Notepad второй метод будет выглядеть следующим образом:

SilkTest appstate метод для приведения Notepad к базовому состоянию

Рис.1. Appstate метод приводящий к базовому состоянию приложение Notepad.

SilkTest

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