Блог

Оператор typeof используется для определения типа переменной. Существует 6 возможных значений, которые возвращает typeof: "number," "string," "boolean," "object," "function," and "undefined".

В этом посте мы немного улучшим этот оператор, чтобы иметь возможность определять такие типы данных, как дата ("date") и массив ("array").
 

SilkTest: секреты. Часть 1 @ Пт, 25 июля 2008, 18:49

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

В этом посте приводится пример функции, которая задерживает выполнение скрипта и при этом отображает на индикаторе время, оставшееся до окончания своей работы.

Очень часто при автоматизации тестовых сценариев можно натолкнуться на шаги вида: "повторите шаги 1-12" или еще интересней, "повторите все шаги" + некоторые поправки. То есть в конечном итоге при реализации нам надо будет полностью продублировать код определенных шагов. А излишнее дублирование может вызвать ряд трудностей при модификациях тестов, при поддержке тестов. Любые изменения надо вносить во все вхождения повторяющегося кода. А это дополнительная потеря времени. Как этого избежать:

В очередной раз, наталкиваясь на различные публикации по автоматизированному тестированию, наталкиваюсь на мнение людей, что как только упоминается какое-нибудь heavy-weight big vendor средство автотестирования (кстати как правило стараются не называть конкретное средство ), то к нему сразу же привязывается "диагноз" что ли - unmaintainable scripts. Но если упоминается что-нибудь писанное на коленке или представляющее собой некоторую библиотеку, то такой проблемы изначально якобы нет. Я, конечно, склоняюсь к идее, что лучше взять что-то мелкое, но оно будет успешно выполнять поставленные задачи, чем взять что-то здоровое и громоздкое, а потом думать, куда бы его прикрутить.

Тем не менее, подобное сопоставление возможности поддержки тестов и используемого средства мягко говоря некорректно. Кривые руки даже под линейку чертят криво. Соответственно, чтобы сделать тесты поддерживаемыми (а для автоматического тестирования это очень критично), нужно следовать одному основному принципу: одно изменение на один функционал. То есть, если у нас в тестируемом приложении поменялась одна функция (в любом проявлении, как на уровне реализации кода, так и на уровне интерфейса), то тесты обновляются путем внесения изменений в одном месте, именно там, где этот измененный функционал оказывает влияние. Опять же, модель идеальная, но есть вполне конкретные подходы, с помощью которых можно стремиться к этому.

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


  • Читаемость
  • Расширяемость
  • Переносимость
  • Оптимальность
  • Соответствие требованиям
  • Удобство модификации
  • Прочее (добавить по вкусу)


Автотестинг и Тест-дизайн @ Вт, 17 июня 2008, 16:46

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

Здесь мы пробуем новый тег... @ Чт, 3 января 2008, 19:11
function TestDXRadioList()
{
Sys.Process("SchedulerMainDemo").WinFormsObject("frmMain").Activate();
var oRadioGrp = Sys.Process("SchedulerMainDemo").WinFormsObject("frmMain")
.WinFormsObject("rgrpView");
var oOCR = OCR.CreateObject(oRadioGrp);
Log.Message(oOCR.GetText());
if(oOCR.FindRectByText("MonthView"))
{
oRadioGrp.Click(oOCR.FoundX, oOCR.FoundY);
}
}
И просто текст

В качестве подарка к Новому году AutomatedQA Corp. анонсировала учебник по TestComplete на русском языке.

Скачать учебник можно здесь.

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

С Новым годом! @ Пн, 31 декабря 2007, 23:29

Компания Automated Testing Service Group поздравляет всех с новым 2008 годом!

Пусть в новом году сбудутся все ваши мечты!

 

SilkTest: Работа со службами @ Чт, 27 декабря 2007, 16:59
О том, как запускать, останавливать и приостанавливать работу системных сервисов Windows, можно прочитать здесь.
 
Однако чуть позже автор блога говорит, что для работы с сервисами, в чьих именах больше одного слова (например, Windows Time) необходимо использовать его имя вместо отображаемого имени.
 
К счастью это не единственный способ. Использовать имена сервисов вместо отображаемых имен не очень удобно, так как имя сервиса короткое и не всегда понятно, что это за сервис.
 
Для того, чтобы работать с сервисами, чьи отображаемые имена содержат два и более слова, достаточно взять это имя в двойные кавычки.
 
LIST OF STRING lsOut
SYS_Execute ("net start ""Windows Time""", lsOut)

ListPrint(lsOut)

В TestComplete можно перехватить событие OnUnexpectedWindow и в случае появления какого-то конкретного окна выполнить определенные действия. Например, такая ситуация может возникнуть, если в приложении возникла ошибка, либо отключилась база данных, и т.п.
 
Однако это событие сработает лишь в том случае, если появившееся окно мешает работе скриптов. Если же окно не является модальным, либо появилось где-то в стороне, событие не сработает и TestComplete продолжит работу.

В SilkTest-e существует несколько способов открытия файлов. В этом посте мы опишем три способа, а также когда их лучше применять.

 

Столкнулись со странным поведением TestComplete при работе с обычным окном File Download.

Такое окно появляется при попытке загрузить файл из интернета при работе в Internet Explorer.

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

Очень часто на форумах звучит один и тот же вопрос: с чего начинать изучение продукта автоматизации? Здесь мы попытаемся дать ответ на этот вопрос, не привязываясь к какому-либо конкретному продукту.

Неделю назад, 12 сентября 2007 года, нам наконец-то удалось зарегистрироваться на сайте share-it! , не имея собственного продукта для продажи. Так как этот процесс занял некоторое время, мы решили описать его здесь более-менее подробно.

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

Метод ClickButton() в TestComplete @ Ср, 22 августа 2007, 12:57

Во время записи скриптов в TestComplete при нажатии на обычные кнопки (Button) TestComplete использует метод ClickButton() для нажатия. Например,


var w = Sys.Process("WindowsApplication3"). WinFormsObject("Form1");

w.WinFormsObject("button1").ClickButton();


Рекомендуется сразу же заменить этот метод на метод Click(), так как в будущем обычная кнопка может быть заменена другим элементом управления, для которого метод ClickButton() не подходит.


Например, обычная кнопка может быть заменена кнопкой стороннего производителя. При этом имя кнопки может остаться таким же, как и раньше. При использовании метода Click() вместо ClickButton() эти изменения никак не повлияют на работу скриптов.