|
|||
реклама у нас | |||
*** |
Доспехи тестировщикаПри разработке современных сложных программных продуктов без тестирования обойтись никак нельзя. Поэтому в последние годы появилась такая профессия - тестировщик программного обеспечения. Эти люди работают с разрабатываемым продуктом с самой первой бета-версии и постоянно проводят одни и те же тесты, то есть им приходится периодически проделывать с тестируемой программой одни и те же действия, чтобы убедиться в том, что все работает правильно. Более скучного занятия и не придумаешь! Но на помощь тестировщикам приходят специальные программы для автоматизации процесса тестирования. Тестирование - неотъемлемая часть процесса разработки любого современного программного продукта. И чем сложнее продукт, чем больше стоимость его разработки, тем большую актуальность приобретает постоянная, от версии к версии, проверка работоспособности всей системы с учетом новой функциональности и исправленных "багов". Чтобы при этом не тестировать весь продукт вручную, тестировщики зачастую автоматизируют наиболее часто повторяющиеся тесты. Для этих целей у них есть как узкоспециализированные продукты для проверки "целостности" веб-сайтов (то есть чтобы сайт не содержал "битых" ссылок, которые ведут к несуществующим документам), так и универсальные средства для тестирования любых приложений. Тестировщик на специальном языке пишет скрипт, который, будучи запущенным, эмулирует действия пользователя. Это означает, что можно автоматически, без участия человека, запускать тестируемое приложение, выбирать в нем нужные пункты из меню, нажимать на кнопки в диалоговых окнах и на панелях инструментов, вводить информацию в текстовые и цифровые поля и так далее, то есть работать со всеми элементами интерфейса (речь идет о Windows-приложениях) так, как это делает пользователь. Кроме того, тестировщик может откопать свой программистский талант, зарытый в землю по каким-то причинам, и создать сколь угодно сложный по логике тест, используя богатые возможности скриптового языка. Ведь язык этот, как и любой язык программирования, кроме некоего набора функций предоставляет в распоряжение разработчика циклы, массивы, операторы сравнения, ветвления и так далее. И это еще не все. Ведь просто заставить приложение работать автоматически - это лишь половина тестирования. Так мы проверим, что оно ведет себя согласно заданному сценарию, и что, например, после нажатия кнопки в одном диалоговом окне появляется другое, а не сообщение об ошибке. Вдобавок описываемые ниже продукты позволяют "вычитать" из приложения нужную нам информацию (какой именно текст выводится в окне, активна ли кнопка, что выбрано в списке) и даже сравнить ее с заранее заданными значениями. При этом скрипт можно записывать автоматически, включив режим записи (примерно так же, как для макросов в MS Office) и просто работая с приложением. Скрипт будет автоматически сгенерирован и потом вам останется только добавить туда нужные логические конструкции. То есть для простейших тестов и программировать почти не придется! Итак, давайте чуть ближе познакомимся с двумя наиболее известными представителями продуктов такого рода - WinRunner компании Mercury Interactive и SilkTest компании Segue. WinRunner представляет собой интегрированную среду разработчика автоматических тестов - здесь можно писать сами тесты на языке TSL (Testing Script Language) и, естественно, запускать их. Это достаточно простой, не типизированный язык, в основе которого лежит популярный язык программирования С. При этом, кроме уже упоминавшейся возможности автоматической генерации скрипта в режиме записи, существует набор различных специфических для тестирования средств. Например можно в интерактивном режиме (с помощью "мастера") добавлять в скрипт так называемые "чек-пойнты" (checkpoints). Создавая чек-пойнт, мы автоматически вставляем в скрипт вызов соответствующей функции, которая при последующих запусках скрипта будет сравнивать состояние конкретного окна (или отдельного элемента интерфейса) с заранее заданным. Под состоянием подразумевается набор свойств элементов интерфейса - таких, как активность или неактивность, выбранный элемент (для списков) и так далее. Задать такое состояние можно как раз в момент создания чек-пойнта. Текущее состояние элементов интерфейса принимается за "эталон", информация о нем заносится в файл специального формата, который можно тут же, на ходу, отредактировать. WinRunner идентифицирует объекты в приложении, основываясь на некотором наборе их свойств - например, для кнопки это будет текст на ней. Все эти свойства он хранит в специальном файле - так называемой карте объектов (GUI map), а обращение к объектам из скрипта происходит по имени. При изменении свойств объекта в приложении (например, поменялся заголовок окна) вам нужно будет исправить описание этого окна в карте, а скрипт останется неизменным. Редактор в WinRunner поддерживает раскрашивание конструкций языка в соответствии с выбранными настройками, в вашем распоряжении также возможности отладки и просмотра значений переменных в процессе работы скрипта. SilkTest, по сути, обладает тем же набором функций, но реализованы они несколько по-другому. Например, есть такое средство, как "встроенная система восстановления" (built-in recovery system), которая восстанавливает тестируемое приложение в так называемое "базовое" состояние, если тест прервался из-за неожиданной ошибки в приложении. В распоряжении разработчика имеется набор встроенных функций для модификации, расширения и настроек этой системы. Нельзя не упомянуть также о том, что редактор в SilkTest может работать в "визуальном" режиме, когда функции и другие конструкции языка представлены в древовидной структуре, и каждый узел может быть "спрятан" для улучшения удобочитаемости скрипта. Что же касается языка, на котором пишутся скрипты, то SilkTest предлагает строго типизированный, объектно-ориентированный язык под названием 4Test (буквально "For Test" - "Для теста"). В отличие от WinRunner, который представляет собой интерпретатор, SilkTest производит компиляцию скриптов в некий промежуточный код, и потом эти скомпилированные модули могут выполняться на другом компьютере, где для этого может быть установлен только так называемый Silk Agent, а не вся интегрированная среда разработки целиком. Для поверки множества свойств нескольких объектов конкретного окна можно во время записи скрипта вызвать диалог VerifyWindow и выбрать, что именно нужно проверять. В результате в скрипт будет вставлен вызов функции VerifyProperties со всеми необходимыми параметрами, поэтому эту возможность можно рассматривать как аналог чек-пойнтов в WinRunner. SilkTest подходит к описанию объектов приложения чисто с программистской точки зрения - все они помещаются в так называемый тест-фрейм (test frame), который затем "подключается" к скрипту, и тут видна аналогия с .inc-файлами в языке С (кстати, тест-фреймы тоже хранятся в файлах с расширением .inc). Файл этот SilkTest может сгенерировать автоматически, "изучив" тестируемое приложение с помощью специального "мастера". Сам скрипт, конечно же, тоже можно сгенерировать в режиме записи. Однако если WinRunner при записи ваших действий сам добавляет в карту объектов описания тех элементов интерфейса, которых там еще нет, то для SilkTest нужно, чтобы они были заранее описаны в тест-фрейме, иначе в сгенерированном скрипте вы увидите длинные заковыристые конструкции, у которых в методах вместо идентификаторов объектов будут использованы физические описания объектов, которые обычно пишутся в тест-фрейм.
В целом, WinRunner, наверное, будет более легким в освоении для тестировщиков, у которых или вообще нет опыта программирования, или чьи программистские навыки ограничиваются знанием одного из процедурно-ориентированных языков. Быстрому изучению также способствует обилие (по сравнению с SilkTest) различных "мастеров" (wizards). Ну, а SilkTest привлечет приверженцев объектно-ориентированного программирования, которые привыкли наследовать объекты, орудовать методами разных классов, жить в мире предков и потомков. Ссылки по теме:
Автор статьи: Андрей Кулабухов Источник: http://www.softkey.info/ |
*** |
![]() |
*** |
|
Copyright © "Internet Zone", info@izcity.com. Условия использования материалов |