Автоматизация тестирования. Заметка о таинственном SilkTest

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

Для чего можно использовать SilkTest?

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

Таким образом, можно проходить план принятия (acceptance) для каждой новой версии билда. Это особенно важно, если новые билды собираются каждый день. А если основное приложение еще и делиться на урезанные редакции — тут использование автоматизации просто не заменимо.

SilkTest — это универсальная среда тестирования. Но, в большинстве случаев SilkTest используют для GUI тестирования приложения в режиме «черного ящика». Хотя, можно найти удобное применение тестовой среды и в создании тест планов unit-тестирования и тестировать приложение исключительно в режиме командной строки.

Использовать SilkTest — это значит автоматизировать большую часть ручной рутинной работы, выполнять ее быстро и с очень большим процентом качества тестового покрытия.

Что такое процесс тестирования на SilkTest?

Как и в планах для мануального(ручного) тестирования — основной структурной единицей служит тест кейс. Тест кейсы самодостаточны сами по себе, и отвечают за тестирование необходимой части функциональности программы. Тестировать приложение с огромной «кучей» тест кейсов конечно же можно, но лучше объединить и структурировать тест кейсы в тест планы. Тест кейсы отвечают за проверку отдельной части функциональности. Тест планы позволяют увидеть общую картину тестирования определенной функциональности. В свою очередь тест планы для отдельных функциональностей можно включать в более общие тест планы.

Реализация описанных возможностей поддерживается средой SilkTest на достаточно хорошем уровне.

Сначала на специальном языке 4Test script описываются тест кейсы, который в последствии могут быть вызваны из различных тест планов. Тест кейсы в SilkTest -это функции которые могут быть вызваны из тест плана. Тест кейсы не возвращают значения, но они записывают информацию в общий отчет по тестированию.

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

Создаем тест план. Тестируем «Hello World!»

Давайте создадим тест план, в котором в нескольких местах вызывается тест кейс SayHelloWorld(), который в свою очередь выводит текст «Hello World!» в отчет по тестированию.
Для начала создадим новый файл, где будут реализованы тест кейсы. Выбираем File->New... 4Test Script. (См. Рис 1).


Рисунок 1


Рисунок 2

[-] testcase SayHelloWorld() [ ] print («Hello World»)
Выбираем Run->Testcase — тест кейс запуститься, перед глазами мелькнет окно статуса времени выполнения, и мы получим отчет. В отчете будет находится лог работы тест кейса. В данном случае в лог будет выведена строчка «Hello world».

Выводить одну статическую строчку как-то не практично. А если нам понадобиться поприветствовать Васю, Федю, Ктулху?

Тест кейсы могут принимать параметры. Перепишем тест кейс так, чтобы он мог принимать имя в качестве параметра:
[-] testcase SayHelloWorld(string sName) [ ] print («Hello » + sName) [ ] print («I think,{sName}, that you are the best!!!»)


Рисунок 3

Запускаем тест кейс со строковым параметром «World» и получаем в результате:

Hello World
I think,World, that you are the best!!!

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

Наверно, если во всем проекте тестирования находиться лишь один тест кейс без параметров — вполне приемлемо запускать его непосредственно из редактора тест кейсов.

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

Для этого жмем на New и выбираем Testplan.

Тест план можно сделать таким, как показано на рис 4.


Рисунок 4

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

Планы можно запускать как полностью, так и по частям, которые могут быть отмечены маркером. Запустим план полностью(Run->All tests) — и мы получим результат, изображенный на рис 5.


Рисунок 5

Как видите, логическая структура отчета полностью соответствует структуре тест плана.

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

Вот такой вот этот «таинственный SilkTest».

Заключение. Полезные ссылки.

Конечно же, реальные тест планы намного сложнее чем тест план приведенный в примере. И SilkTest создан так, что средствами среды, даже сложнейшие тест планы можно сделать аккуратными и наглядными. О работе с SilkTest можно писать очень много. Для того, чтобы не увеличивать размер этой вводной заметки до размеров руководства или учебника, мной было упущено очень много вещей.

Я не упомянул про:
1. усовершенствование запуска тест кейсов в тест плане;
2. возможности мощного и гибкого языка 4Test script;
3. объектную ориентированность языка сценариев;
4. средства для работы с графическими изображениями;
5. средства тестирования Веб-сайтов и, Java-приложений;
6. создание тест кейсов на основе записанных действий;
7. и многое-многое другое;

Цель этой заметки — обратить внимание на программу. А если Вас интересует более исчерпывающая информация — советую обратиться к единственному известному мне хорошему руководству по SilkTest на русском языке.

Скачать SilkTest с 30-ти дневной trial лицензией Вы можете с сайта компании Borland.

Исходник проекта можно скачать отсюда.

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn

Схожі статті




36 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

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

С момента публикации статьи прошло больше двух лет и я бы хотел добавить кое-что об учебнике, который здесь упоминается.Мы получили немало отзывов и внесли много разных изменений и дополнений в руководство.Теперь учебник выполнен в виде отдельного сайта и доступен всем желающим по адресуhttp://silktutorial.ru/Добро пожаловать и приятного обучения!

Метод использование базы bmp файлов для тестирования GUI имеет один серьезный недостаток: объем проекта. Если сайт сложный, то весь объем bmp-файлов может исчисляться уже в Гигах... А если еще и учесть, что нужно тестировать на разных ОС и нескольких браузерах, то получиться солидная цифра. Хорошо, что хоть бэкапы немного занимают (bmp неплохо архивируются).

Самый простой и эффективный способ тестирования веб приложений — это работа со скриншотами веб браузера. В Rational Robot реализованная нормальная работа с master images — наложение масок, поиск областей, замена master images на новые и прочее.Для такого подхода всегда хорошая практика использовать «чистый» environment, и правильный набор тестовых данных.Скорость тестирования при таком подходе довольно большая, так как разбор идет не по контролам, а сравнение внешнего вида после действия с master image. Все изображение должны быть только в формате без сжатия.В зависимости от задачи сравнение полученных изображений с мастерами необходимыми средствами. Например, есть конвертор из pdf в djvu — сравниваем изображение после конвертации с мастером (проверенным глазами) утилитой которая учитывает колличество несовпадающих блоков и длинну каждого блока (эти параметры подбираюсь вручную после первого прохода теста).Master image — это может быть не только картинка, а любой файл который возможно получить на выходе каким либо средством.Для веб, gui — это bmp, для консольных утилит — это output.При использовании такого метода тестирования нужно иметь или механизм наложения масок (чтобы не учитывались части изображения/output с динамической информацией — номер билда, время генерации страници, выполнения скрипта) или при проектировании системы заложить механизм обхода этого (отключить этот вывод). На практике чаще встречаеться ситуация что необходимо выходные данные самому подготавливать к сравнению.Так же хорошим правилом при использовании такого метода будет перепроверка результатов — это позволит отловить больше ошибок.Напримере конвертации из pdf в djvu — это будет выглядеть так: 1. Конвертируем test1_1.pdf в output1_1.djvu получаем output1_1.bmp2. Сравниваем output1_1.bmp с master1_1.bmp3. Конвертируем test1_1.pdf в output1_1.djvu получаем output1_2.bmp4. Сравниваем output1_2.bmp с output1_1.bmpТак же например если утилита позволяет и из djvu в pdf конвертировать, тогда второй тест будет такой же как и первый только из djvu в pdf. И будет еще тест с конвертированием туда и обратно и со сравнениями всего что можно сравнить.Такой подход при тестировании чем-то напоминает MapReduce, получили выводы, подготовили их, сравнили и получили результат тестирования.Чем больше выводов тем больше потенциальных проблем можно обнаружить.Если говорить проще — это метод тестирования «черного ящика» в самом прямом смысле, получаем поведение системы в любом доступном виде и сравниваем с тем что считаем правильным поведением системы.

Window type mismatch — Expecting a listview in details view, что ето такое?

элемент ListView может иметь несколько различных видов: список, таблица, значки и т.п.Вы пытаетесь сделать какую-то операцию, которую невозможно сделать для текущего варианта отображения (может поиск сразу по нескольким столбцам или еще что-то такое).С вопросами по СилкТесту рекомендую обращаться на специализированный форумhttp://it4business.ru/forum/in...

Window type mismatch — Expecting a listview in details view, что ето такое?

  1. Создайте образ рабочей системы: настроенной, со всеми необходимыми софтами и дровами, но без Силка. 2. Запакуйте ее с помощью какой-нибудь паковалки образов. Я рекомендую Acronis Truimage 10. (кряк к нему нужно искать на другом сайте:)) 3. В результате, всякий раз, когда 30 дневная лицензия истечет, вы распаковываете систему из образа (уже полностью настроенную), ставите Силк — и у Вас есть еще 30 дней:) Хорошая практика распаковывать новую систему перед каждым запуском автоматического тест-плана, если конечно вы не тестируете веб-сайт.

Вот бы еще кто-нить подсказал, где взять кряку к silktestu, а то 30 дней как-то совсем мало: (

Спосибо, что называется не внимательно читать, или пропускать кое-какие места.

Не могу найти файл «TestAppUtils.inc»

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

Не могу найти файл «TestAppUtils.inc» там пример функции добавления префиксов.

Большое спосибо, нашел.:)

нету Test Application-а, неначем описаный пример увидеть

как нету? он ставится вместе с силктестом в папку%SILKDIR% (по умолчанию «C: \Program Files\Segue\SilkTest» для версий до 8й, и «C: \Program Files\Borland\SilkTest» для версий 8.0 и выше). Называется файл testapp.exeЗЫ А вообще по вопросам относящимся к силктесту и руководству по нему приходите на форум приходите на форумhttp://it4business.ru/forum/in...там больше шансов получить ответы

Привет. У меня сейчас стоит конкретная задача: разобраться с SilkTest-ом... скачал и установил прогу, скачал учебник о котором говорилось выше, но нету Test Application-а, неначем описаный пример увидеть. Что посоветуешь, зарание спосибо.

Работаю с SilkTest 2006R2 более полугода. Причём очень плотно. Тестируем Web интерфейс. Проблемы у него конечно есть — глючноватый. Но со своей задачей справляется, необходимая функциональность присутствует, встроенный язык довольно мощный, но в тоже время и простой.

SilkTest -> «стара школа». Використовуйте, AQA TC, HP QTP, IBM RFT.

мнение, конечно, интересное, но неправильное:) любому инструменту есть свое применение и у любого есть свои недостатки.Например, QTP и RFT просто ОГРОМНЫЕ (400−800 бм против 80ти мб СилкТеста). Ну и зачем? (к сожалению я с ними не работал, поэтому не могу привести других доводов) У ТС тоже свои недостатки (лень описывать просто).Короче, всегда есть выбор

SilkTest -> «стара школа». Використовуйте, AQA TC, HP QTP, IBM RFT.

«Проверил все что есть на рынке со сложными приложениями не работает ничего, только демы у них красивые»

Для сложных проектов и тестирование не отличается особой простотой. Вот мы тестим Windows GUI приложение по распознаванию человеческой речи. Да, воспроизводит медленно, иногда падает, иногда сталкиваешься с такой задачей, которую обычными методами тестовой среды (SilkTest’ом) и не решишь, приходится выкручиваться за счет использования других приложений. Но, само налаженной автоматизированное тестирование показывает очень свою очень большую эффективность, особенно когда уже выработано довольно большое покрытие и билды собираются очень часто. Самое интересное в SilkTest — это даже не доступные функции и расширения для тестирования веб и Java приложений, а сама архитектура тестового процесса. Составление тестпланов, создание тесткейсов, запуск планов и обработка результатов действительно очень удобна, если, конечно научится эффективно использовать эти средства тестовой среды. Если вам чего-то не хватает в возможностях Силка — воспользуйтесь сторонним приложениями. Это нормальный подход для тестирования. У любой тестовой среды есть свои преимущества и недостатки. Нужно выбирать наиболее подходящею. Если планируется создания больших тестпланов, с множеством универсальных тесткейсов, с ОО подходом к программированию тесткейсов — то ваш выбор Силктест.

Проверил все что есть на рынке со сложными приложениями не работает ничего, только демы у них красивые. Все проверялось на одном браузере, все не пашет кучу методов не захватывает, воспроизводит медленно падает, протестировал 20 тулзов каких не скажу. Добрая половина из соответсвтвующей секции на этом сайтеhttp://www.softwareqatest.com/.... Из всего понравилось только Sahi, но тоже имеет ограничения

Добавлю, что по поисковым запросам со словом «test» или «тест» лидирует сейчас как раз «silktest» (38 переходов за последние 30 дней с google).

Итак, время активной жизни этой заметки закончилось. Господа, спасибо за комментарии. Я хотел бы подвести итог, чего я хотел добиться и добился этой заметкой. 1. Мне было интересно, насколько интересует тема автоматизированного GUI тестирования (на конкретном примере SilkTest) посетителей DOU. Оказывается, эта тема интересна. Честно говоря, я ожидал, что комментариев будет намного меньше. 2. Получить информацию о ресурсах, посвященных SilkTest, о которых я не знал. Удалось:). Тут большое спасибо Геннадию. 3. Создать фундамент для дальнейших публикаций. По крайней мере, в следующих заметках на эту тему, для того, чтобы показать как создается базовый проект по тестированию, мне будет достаточно сослаться на эту заметку. 4. Расширить мировое хранилище документации еще на одну заметку.:) Шутки шутками, а вот данная заметка на момент создания мной этого коммента захватила страничку поиска по запросу «SilkTest» в http://blogs.yandex.ru и находиться на четвертой позиции в Гугле по тому же запросу. Конечно, немаловажную роль тут сыграли поисковые рейтинги сайта DOU, но, все же...

Очень хороший пост, спасибо:) Немного о «документации по автоматизации regression-тестирования приложения в режиме «black box» очень мало«На самом деле такой информации много. Просто она раскиданаНавскидку: http://it4business.ru — лучший ресурс в рунете по данной темеhttp://sqa.fyicenter.com/SilkT.../ — подробная обучалка на англhttp://silktest.blogspot.com/ — блог, посвященный СилкТестуhttp://www.sqaforums.com/ubbth... — англоязычные форумы по тестированию вообще, в частности по автоматизации тожекто-то в комментах спрашивал про другие тулзы для автоматизации. На первом и последнем перечисленных ресурсах про них можно почитать. Из наиболее известных: SilkTest, TestComplete, WinRunner, QuickTestPro, Rational Robot, Rational Functional Tester. Это для регрессионного. Для нагрузочного наиболее известные (и наиболее дорогие) LoadRunner И SilkPerformer. Для веб-тестирования куча бесплатных утилит есть.Говорить, что «этот инструмент проигрывает тому» — неправильно. Все зависит от поставленных задач, имеющихся ресурсов и т.п. Но это тема отдельная и обширная.ЗЫ от лица авторов приношу благодарность за хороший отзыв о нашем руководстве:) Если есть вопросы — спрашивайте любым удобным способом, всегда рады помочь

p.p.s. в любом случае спасибо

вероятно я просто не внимательно прочел статью, меня инетересуют сведенья о средствах автоматического тестирования web-based GUI.p.s. в web-based GUI дерево — один из самых сложных компонентов. сложнее только «умная» таблица.

По моим ощущениям, SilkTest довольно сильно проигрывает MercuryQuick Test Professional.

Ну... смотря в чем:) Я плохо знаком Mercury QTP, возможно я что-то пропустил, но после того как я ознакомился с программой, мне показалось, что QTP это хорошая (в смысле интерфейса) тулза для быстрого создания тесткейсов в режиме записи макросов. Там, вроде, есть возможность вызвать функции WinRunner... но, так далеко я не заходил. Интерфейс программы приятный и понятный..., но возможности ограниченны.

Из минусов Silk для меня был очевиден только один — он тупо не начал работать после часа «уговоров».

Уф... есть и такие баги. Бывает так, что план не может запуститься из-за наличия магических пробелов:) Но, все это поправимо. Среда Силка иногда глючит, но не часто:)

1. JavaScript2. Динамически подгружаемого конентента.3. Сложных компонентов GUI (Tree, pop-up menu, etc).4. Тестирование контента, содержащего custom Java Tag Libraries.5. Тестирование контента, содержашего JSF-компоненты (ICEfaces, JBoss Rich Faces, etc).6. Тестирование порталов.

Я работаю в проекте по тестированию программы распознания речи. В принципе, не как разработчик, а лишь поддерживаю проект. Но, для устраниния ошибок все равно необходимо хорошо знать как силк, так и весь проект. Итак, что может Силк: Тестирование сложных компонентов GUI (Tree, pop-up menu, etc): Tree, pop-up menu, к примеру — это не сложные елементы, так как они стандартны для Виндовза. Что касается тестирования не стандартных элементов, так для Явы есть специальные расширения (Extensions) для Силка. Расширения можно писать свои. Можно подключать dll-модули. Тестирование веб приложений: 1. Для нагрузочного тестирования есть Silk Performer. с ним я не работал. 2. А для GUI тестирования веб сайтов используються расширение. Тестирование ведеться через обычный веб-браузер (Firefox или IE). Силк-тест предоставляет довольно широкие возможности для тестирования динамически подгружаемого контента. Т.е. Ajax в Силке тестить можно. С Явой я не работал, но, вродебы поддержка аплетов и Микрософтских ActiveX компонентов поддерживаеться. На счет Опенсорс аналогов я подсказать ничего не могу.

По моим ощущениям, SilkTest довольно сильно проигрывает MercuryQuick Test Professional. Если говорить о рынке коммерческих продуктов, для тестирования web-приложений в режиме «черного ящика». Правда мои познания ограничиваются ислючительно уровнем базовых фичей и простоты использования. Из минусов MQT — у него скрипт похожий на ограниченный Visual Basic, что само-по-себе говорит о многом. Из минусов Silk для меня был очевиден только один — он тупо не начал работать после часа «уговоров».Вопрос к автору, насколько сложные приложения Вы тестировали и насколько хорошо показал себя Силк? Интересует прежде всего использование в приложениях: 1. JavaScript2. Динамически подгружаемого конентента.3. Сложных компонентов GUI (Tree, pop-up menu, etc).4. Тестирование контента, содержащего custom Java Tag Libraries.5. Тестирование контента, содержашего JSF-компоненты (ICEfaces, JBoss Rich Faces, etc).6. Тестирование порталов.Относительно MQT могу сказать, что он ограниченно применим для тестирования web-приложений содержащих довольно сложные конструкции первых 5ти пунктов. Единственная проблема, которая возникает — не всегда корректная работа с динамически подгружаемым сложным контентом. Хотя и эту проблему отдел тестирования успешно решал с помощью MQT.И еще один вопрос, а что Вы можете сказать насчет OpenSource средств для тестирования web-приложений? HTTPUnit, JMetter — не в счет. Прежде всего интереcны средства для комплексного тестирования сложных решений.

Дмитрий, а как насчет автоматизации тестировани Flex? SilkTest это позволяет?

Насколько мне известно — нет. В принципе, можно написать специальное расширение для Силка на языке Си... но, вряд ли Вас этот путь устроит.

Дмитрий, а как насчет автоматизации тестировани Flex? SilkTest это позволяет?

О, а почему нет классического описания теста calc.exe? (=

А про это можно прочитать в упомянутом мной руководстве по SilkTest

О, а почему нет классического описания теста calc.exe? (=

2 Игорь Шубович

JMeter?

Очень лаконичный и информативный вопрос:) Да, JMeter.:)

Да, я сказал слишком общую фразу. На самом деле я имею ввиду, что документации по автоматизации regression-тестирования приложения в режиме «black box» не только на украинском или русском, но и на английском языке очень мало.По теории тестирования информация есть. По TDD и unit, конечно же, документации море. А вот по автоматизации тестирование в режиме «black box» — мало. Кстати, сайт интересный. Спасибо за ссылку.

2 akhavr

Повно інформації.

Ссылочьки в студию...

Заметка не переводная и не рекламная. Я Силк не продаю — я с ним просто работаю. Качество заметки... да, действительно оставляет желать лучшего.: (Поверьте, когда я ее писал, (вчера, собственно) мне не на что было опираться. Цель этой заметки — просто обратить внимание на тулзу, собрать критические комментарии и определить, насколько интересна тема. А поэтому — критикуйте!

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

Підписатись на коментарі