|
|
|||||||||||||||||||||||||||||
|
Автоматизированное регрессивное тестирование: IBM Rational Functional Tester позволяет легко выполнить регрессивное тестированиеИсточник: IBM developerWorks Россия Брайан Брайсон (Brian Bryson), автор, IBM
Раздел 1. ВведениеОбзорДанное учебное руководство предназначено для пользователей, не имеющих опыта работы с IBM Rational Functional Tester. Программа IBM Rational Functional Tester является средством автоматизированного регрессивного тестирования для Java, .NET, Web-приложений и терминальных приложений на платформах Windows и Linux. В данном руководстве будет показано, как создавать, выполнять и изменять регрессивный тест в Functional Tester. Также будут рассмотрены проблемы регрессивного тестирования и способы их решения , предлагаемые Functional Tester. Будет показано, как нужно выполнять следующие операции:
И все это возможно без написания кода. Готовы? Для кого предназначено данное руководство?Данное учебное руководство предназначено для ознакомления специалистов по тестированию с автоматизированным регрессивным тестированием, выполняемым с помощью программы IBM Rational Functional Tester. Опыт работы с IBM Rational Functional Tester или другими средствами автоматизированного регрессивного тестирования не требуется. Изучая данное руководство, можно быстро научиться создавать тесты для приложений. Необходимые условияПри отсутствии копии IBM Rational Functional Tester можно загрузить ее полнофункциональную пробную версию. Процесс установки описан в разделе «Установка Functional Tester». Для работы с данным учебным руководством не требуется использование особых конфигураций и параметров установки. Functional Tester поддерживает два языка сценариев: Java и Visual Basic.NET. Для тестирования Java-приложений в программу Functional Tester включена открытая среда разработки Eclipse. Установка дополнительных компонентов не требуется. Если требуется использовать язык сценариев Visual Basic.NET, перед установкой IBM Rational Functional Tester необходимо установить Visual Studio.NET. Приобрести Visual Studio.NET можно у корпорации Microsoft. Раздел 2. О регрессивном тестированииПроблемы регрессивного тестированияВ конечном счете, в любой системе программного обеспечения пользователи обнаруживают ошибки или неисправности. Как правило, такие ошибки исправляются, исправленная программа тестируется, и выпускается обновленная версия программы. Но вследствие взаимосвязанной природы программного обеспечения даже минимальные изменения могут привести к непредсказуемым результатам в том случае, если последствия таких изменений не понимаются должным образом. Любое изменение в программе, даже одно исправление известной ошибки, может повлиять на систему непредвиденным образом и привести к более серьезным проблемам по сравнению с исходной. Регрессивное тестирование представляет собой метод повторного тестирования измененной системы программного обеспечения в целях проверки отсутствия сбоев ранее нормально работавших функций, вызванных исправлением ошибок или добавленными новыми функциональными возможностями. Регрессивное тестирование позволяет полностью гарантировать, что система программного обеспечения работает именно так, как планировалось. Однако выполнить полное регрессивное тестирование вряд ли возможно. Это вызвано ограничениями по времени и по ресурсам, которые имеются у типовых групп разработчиков программного обеспечения. По мере роста и расширения становится все сложнее тестировать отдельные части системы программного обеспечения. Эта проблема усложняется из-за частоты создания сборок программ. В среде, в которой сборки программ создаются по вечерам, практически невозможно выполнить полное регрессивное тестирование. В таких средах необходимо тестировать предыдущую функциональность, чтобы обеспечить возможность тестирования новых исправлений и новых функций. При этом остается возможность выпуска версии программного обеспечения с невыявленными ошибками. Для решения таких проблем предназначен пакет Rational Functional Tester, средство автоматизированного регрессивного тестирования. С помощью Functional Tester создаются сценарии тестирования для повторной проверки функциональных возможностей системы. Сценарии выполняются для каждой новой сборки системы, проверяя работоспособность прежней функциональности. Как правило, сценарии выполняются в автоматическом режиме, что позволяет группе обеспечения качества тестировать самые последние исправления и функции. По мере разработки программного обеспечения разрастается библиотека сценариев тестирования, при этом обеспечивается адекватная полная проверка каждой сборки приложения. Нужно ли вам средство Rational Functional Tester?Для определения необходимости использования Functional Tester ответьте на следующий вопрос: Выполняется ли тестирование Java, .NET, Web-приложений или приложений на основе браузера? Если ответ Да , то Functional Tester может быть полезным средством! Functional Tester предназначен исключительно для тестирования Java, .NET приложений и приложений на основе Web и браузера. Если тестируются приложения Visual Basic, C++ или другие 32-битные Windows приложения, необходимости в Functional Tester нет. Для пользователей, работающих в этих средах, компания IBM предлагает средство Rational Robot. Концепция Rational Robot аналогична Functional Tester и позволяет выполнять автоматизированное регрессивное тестирование приложений на основе Windows. Теперь рассмотрим следующие вопросы:
Если на любой из этих вопросов дается утвердительный ответ, то следует подробней рассмотреть, что можно сделать с помощью Functional Tester. Продолжайте работать с учебным руководством для изучения данного инструмента. Примерно в течение часа будет показан процесс записи, редактирования, выполнения и анализа первого сценария Functional Tester. Завершив работу с руководством, пользователь оценит значение Functional Tester для процесса разработки программного обеспечения. Раздел 3. Начало работыОбзорНачало работы с пакетом Functional Tester включает три шага:
В данном разделе описаны эти шаги. Установка Functional TesterЕсли Functional Tester еще не установлен, установите его. Полнофункциональную пробную версию программы можно загрузить на Web-сайте компании IBM (ссылки см. в разделе «Ресурсы»). Пробная версия Functional Tester состоит из двух файлов. Первый файл C81MWML.BIN содержит упакованное программное обеспечение, второй файл представляет собой приложение с названием extractor. Загрузите оба файла и запустите приложение extractor. Это приложение обрабатывает файл .BIN и развертывает его в файлы установки приложения, затем запускает процесс установки. В мастере установки выберите Install IBM Rational Functional Tester v6.1. Во время установки Functional Tester укажите требуемую папку установки, остальные параметры не изменяйте. Учтите, если в качестве языка сценариев планируется использовать Visual Basic.NET, на компьютер предварительно необходимо установить Visual Studio.NET. Установка и/или настройка среды Java Runtime EnvironmentПакет Functional Tester создает журналы с описанием процесса выполнения тестирования. По умолчанию, эти журналы создаются в HTML-формате. Для предоставления дополнительных сведений программа Functional Tester также запускает приложение comparator , выделяющее все различия между ожидаемыми и фактическими результатами. Чтобы пакет Functional Tester мог запускать приложение comparator , необходимо установить и настроить среду Java Runtime Environment. Если среда Java Runtime Environment уже установлена на компьютереВполне возможно, что на компьютере уже установлена среда Java Runtime Environment (JRE). В этом случае используйте значок конфигурирования Java на панели управления. Выберите Start > Settings > Control Panel. Если в списке приложений имеется значок Java Plug-in, значит среда JRE установлена. Устанавливать второй экземпляр среды JRE не требуется. Установка среды Java Runtime EnvironmentЗагрузить Java Runtime Environment можно с Web-сайта компании Sun (ссылки см. в разделе «Ресурсы»). Выберите ссылку, соответствующую требуемой среде. Для большинства пользователей следует выбрать ссылку Windows (US English Only) JRE. Создание проекта тестированияДанные шаги предназначены только для среды сценариев VB.NET. Создание проекта тестирования Java
Теперь в программе Functional Tester открыта среда сценариев VB.NET.
Раздел 4. Создание тестаОбзорТеперь приступим к записи, изменению и воспроизведению первого сценария Functional Tester. Будем использовать пример приложения Classics Online, который устанавливается вместе с Functional Tester. Это приложение дает возможность пользователям просматривать музыкальные компакт-диски и размещать заказы. Имеется две версии приложения - Build A и Build B. Это позволяет выполнить истинное регрессивное тестирование. Тест будет записан для версии Build A и выполнен для версии Build В. Запись и запуск приложенияЗапись сценария для данной сборки приложения позволяет облегчить проведение тестирований в будущем. Как только будет доступна следующая сборка, можно воспроизвести сценарии и протестировать новую сборку гораздо быстрее, чем при использовании ручного тестирования. В данном разделе будет записан сценарий размещения заказа на компакт-диск. Сценарий будет проверять как статические, так и динамические данные. Сценарий также будет управляться данными, то есть можно будет повторить выполнение одних шагов для нескольких наборов тестовых данных. В результате будет создан рабочий сценарий тестирования, который можно редактировать и выполнять.
Размещение заказа на компакт-дискРазмещение заказа на компакт-диск Bach's Violin Concertos:
Определение полей для тестирования на основе управления даннымиКак и предполагалось, Functional Tester записывает в сценарий все нажатия клавиш и действия мыши в нескольких последних панелях. Наилучшим методом автоматизации тестирования, управляемого данными, является разделение нажатий клавиш и действий мыши. Таким образом, можно использовать один сценарий для нескольких наборов данных.
Задание точки проверки динамических данныхВ данном разделе будет выполнено подтверждение заказа и получен номер подтверждения заказа. Это номер изменяется динамически, то есть он различен для всех размещенных заказов. Каким образом Functional Tester может проверить эти данные, если заранее неизвестно, какой номер является действительным? Ответ - шаблоны. Используя технологию сравнения с шаблоном, можно выполнить проверку динамических данных и убедиться, что получено сообщение с действительным номером подтверждения заказа.
Задание точки проверки статических данныхЗаключительный шаг - фактическое подтверждение заказа, введенного в базу данных. Для этого откройте таблицу заказов и задайте точку проверки статических данных следующим образом:
Закройте приложение и остановите запись Закрытие приложения:
Поздравляем, создан первый автоматизированный сценарий тестирования! Раздел 5. Просмотр сценарияОбзорК данному моменту создан тест, который можно использовать повторно со всеми последующими сборками приложения. С каждой новой сборкой приложения и выполнением его тестирования увеличивается коэффициент окупаемости инвестиций этого теста. В процессе тестирования не только проверяются статические и динамические данные, но также выполняется тестирование на основе управления данными. Коэффициент окупаемости инвестиций возрастает при добавлении в сценарий новых наборов данных. Тестирование включает в себя три основных компонента: сценарий, карту объектов и пул данных. В этом разделе описана проверка каждого из указанных компонентов. Проверка сценарияЕсли все было выполнено в соответствии с планом, сценарий должен выглядеть следующим образом:
Сценарий представляет собой стандартный код Java или Visual Basic.NET. Если посмотреть на код более внимательно, можно заметить, что сценарии удивительно похожи друг на друга. Фактически основное отличие между сценариями на Java и .NET заключается в том, что предложения в сценарии Java заканчиваются точкой с запятой. Сценарий создается в соответствии с Object.Actionformat. Проверим несколько предложений:
Это предложение сообщает Functional Tester о выполнении действия Click для кнопки PlaceOrder.
Это предложение сообщает Functional Tester о вводе номера кредитной карты на странице PlaceAnOrder.
Это предложение является одним из предложений, сообщающих Functional Tester о выполнении проверки динамических данных в окне подтверждения заказа. Это наглядно демонстрирует, что, несмотря на то, что сценарий является фактическим кодом, для просмотра и понимания этого кода не надо иметь ученую степень в сфере проектирования ПО. Проверка карты объектовКарта объектов до настоящего времени еще не обсуждалась. Пакет Functional Tester хранит в карте объектов всю информацию об объектах на экране. Ранее уже упоминалось, что следующая команда сообщает Functional Tester о нажатии кнопки PlaceOrder:
Как Functional Tester определяет, какая кнопка является PlaceOrder? Программа определяет это по карте объектов. Соответственно, пользователь может сделать то же! Для просмотра информации Functional Tester о кнопке PlaceOrder, дважды нажмите PlaceOrder. Кнопка расположена в ветви Test Objects в обозревателе Script Explorer.
Можно заметить, что Functional Tester для идентификации кнопки PlaceOrder во время воспроизведения использует четыре фрагмента данных: свойства class, classIndex, accessibleName и name. Важно то, что пакету Functional Tester для определения кнопки PlaceOrder не требуется проверять все эти свойства. Предположим, разработчики изменили значение свойства name с placeOrderButton2 на placeOrder. В большинстве средств автоматизированного тестирования такое изменение приведет к отмене выполнения сценария. Средство тестирования не находит объект, так как изменено его имя. Программа Functional Tester ведет себя иначе. Functional Tester просматривает все свойства, поэтому изменение одного из свойств не приводит к отмене воспроизведения. Functional Tester определяет, что имя изменено и регистрирует изменение в журнале, затем продолжает работу, так как остальные свойства остались неизменными, к тому же новое имя объекта placeOrder имеет сходство с именем placeOrderButton2. Такая технология носит название ScriptAssure и позволяет Functional Tester воспроизводить сценарии независимо от изменений в приложениях. Отдельное изменение свойства любого объекта не приводит к отмене выполнения сценария в Functional Tester. Проверка пула данныхФинальный компонент представляет собой пул данных. В этом компоненте Functional Tester хранит все данные, которые использовались при тестировании. Пул данных расположен в панели под сценарием и выглядит следующим образом:
Для многих тестов требуется выполнение пользователем повторных шагов, в которых изменяются данные тестирования. Тестирование, управляемое данными, позволяет автоматизировать эту задачу. Пулы данных отделяют данные тестирования от кода сценариев тестирования. Можно использовать один код сценария для нескольких наборов данных тестирования, что повышает коэффициент окупаемости сценария. Выполним тестирование, управляемое данными:
Пул данных должен выглядеть следующим образом:
Ценность сценария возросла вдвое. Добавив новый номер кредитной карты, можно использовать код сценария для тестирования двух кредитных карт. Добавляя строки данных, можно еще больше повысить значимость сценария. Можно добавить тестирование для просроченной карты, неверного номера карты, карт American Express, MasterCard, украденных карт... продолжите список самостоятельно. Тестирование с управлением данными значительно повышает эффективность сценария. И это возможно вообще без написания кода. Раздел 6. Запуск тестированияОбзорНа данном этапе сделано многое. Записан сценарий, выполняющий проверку статических и динамических данных. Сценарий управляется данными и включает два набора данных, таким образом коэффициент окупаемости сценария увеличен вдвое. Теперь время воспользоваться плодами этой работы. Выполнение тестированияРеально преимущество автоматизированного тестирования проявляется при выполнении регрессивного тестирования. Регрессивное тестирование означает выполнение теста последовательных сборок приложения и позволяет убедиться, что ранее работающие функции по-прежнему работают. И сейчас займемся именно этим. Чтобы изменить сценарий для запуска относительно сборки Build B приложения, выполните следующее:
При выполнении сценария обратите внимание на пару моментов:
Проверка журналаЕсли тестирование прошло успешно, просмотрим журнал всех событий, произошедших при тестировании. В журнал записываются основные события, например, запуск и закрытие сценария и приложения, а также все точки проверки. Также записываются события в случае, если в сценарии имеются ошибки, или если объекты в приложении отличаются от их записей в карте объектов.
Обратите внимание на ссылки, расположенные в левой части экрана. Это ссылки на наиболее значимые фрагменты журнала. На рисунке выше выбрано первое уведомление об ошибке. Соответственно, в журнале эта ошибка показана как первый элемент. Нажмите ссылку View Results для этой записи. Открывается диалоговое окно Verification Point Comparator.
В этом окне выделены различия между ожидаемыми и фактическими результатами. Видно, что ожидался заказ компакт-диска Bach's Violin Concertos за $14,98, а вместо него получен заказ дисков Schubert String Quartets номер 4 и 14 за $18.98. Найдена первая ошибка регрессии! Несмотря на фактический заказ диска Bach's Violin Concertos, и это должно было воспроизводиться сценарием, по ошибке получен заказ на диски Schubert's String Quartets. Теперь следует задокументировать ошибку. Возможно, даже включить сценарий, чтобы разработчики могли воспроизвести эту ошибку! Раздел 7. Краткое заключениеРезюмеПри выполнении данного учебного руководства выполнено многое:
И все это сделано вообще без написания кода! И это только начало. То, что сделано - только верхушка айсберга функциональных возможностей пакета Functional Tester. Если к этому добавить немного работы и воображения, то с помощью Functional Tester можно выполнить практически все. Приобретены навыки выполнения тестирования. Попробуйте применить Functional Tester к собственному коду приложения и в своей среде разработки. У вас получится! Ссылки по теме
|
|