СМ-Консалт
 

Практика применения автоматического функционального тестирования в Microsoft Visual Studio с использованием средств IBM Rational

Статьи Технологии Microsoft: .NET, Visual Studio Team System

  Не секрет, что инструментов автоматизированного функционального тестирования приложений в продуктах семейства Microsoft Visual Studio 2005/2008 не поставляется. Все функциональное тестирование, которое можно выполнять с использованием этих продуктов, это только ручное тестирование. В данной статье рассматриваются возможности автоматизации функционального тестирования для Microsoft Visual Studio с использованием инструментов IBM Rational.
Аудитория менеджеры проектов, разработчики, руководители, аналитики, тестировщики
Автор

Шамрай Александр, руководитель отдела перспективных разработок по продуктам IBM Rational и Microsoft, СМ-Консалт
Новичков Александр, руководитель отдела внедрения и консалтинга, СМ-Консалт

 

 

Оглавление 


Полезные материалы в тему статьи:


Введение

Не секрет, что инструментов автоматизированного функционального тестирования приложений в продуктах семейства Microsoft Visual Studio 2005/2008 не поставляется. Все функциональное тестирование, которое можно выполнять с использованием этих продуктов, это только ручное тестирование. Говорить о пользе автоматизированного функционального тестирования разрабатываемых продуктов можно долго и об этом уже написано немало статей, поэтому в данной статье мы рассмотрим возможности автоматизации функционального тестирования для Microsoft Visual Studio с использованием небольших примеров. Как инструментарий для функционального тестирования в статье рассматриваются три продукта IBM Rational – это IBM Rational TestManager, IBM Rational Robot и IBM Rational Functional Tester.

Возможности Visual Studio

Для обеспечения возможности создавать и управлять тестами Microsoft предлагает инструмент Microsoft Visual Studio Test Edition, который включает в себя следующие виды тестирования:

  • Модульные тесты (Unit test) – тестирование написанного программистом функций на уровне исходного кода.
  • Тесты для web-страниц (Web test) – функциональное тестирование web-страниц.
  • Нагрузочные тесты (Load test) – нагрузочное тестирование web-сайтов.
  • Общие тесты (Generic test) – специальный вид тестов, который позволяет выполнять внешние тестирующие приложения.
  • Ручные тесты (Manual test) – ручное тестирование приложений.
  • Упорядоченные тесты (Ordered test) – позволяют организовать выполнение всех написанных автоматических тестов в определенном порядке.


Как видно, для тестирования web-приложений есть фактический весь необходимый набор тестов, чего не скажешь про windows-приложения. Для тестирования windows-приложений доступны только модульные и ручные тесты и этого не достаточно для нормального функционального тестирования. Во-первых, модульное тестирование обеспечивает проверку отдельных модулей программы на уровне исходного кода, а покрыть весь функционал модульными тестами очень сложно. Во-вторых, ручным тестированием проверить все сценарии использования программного продукта трудоёмко, а также присутствует человеческий фактор (недоглядел, пропустил и т.д.), который может негативно сказать на общем результате. Выход из создавшейся ситуации это автоматизированное функциональное тестирование, которое обеспечит:

  1. Автоматическое выполнение функциональных тестов, как интерфейса приложения, так и сервисов, приложений клиент/сервер и т.д. Как показано на рисунках ниже (см. Рисунок 1 и Рисунок 2) временные и финансовые затраты на ручное тестирование значительно превосходят затраты на автоматическое тестирование.


    Рисунок 1. Временные затраты на ручное и автоматизированное тестирование



    Рисунок 2. Затраты на автоматизированное и ручное тестирование
  2. Регрессионное тестирование – выполнение всех автоматических тестов, которые были сформированы ранее. В процессе развития проекта накапливается большое количество функциональных тестов (см. Рисунок 3) и обеспечить их выполнение вручную практически невозможно. Конечно, можно сказать, если когда-то тест был удачно пройден, то зачем его выполнять снова? Но иногда бывает так, что реализация новой функциональной возможности  или исправление ошибки может повлиять на уже давно работающую часть программы. Поэтому выполнение всех тестовых сценариев просто жизненно важно для развивающегося проекта.


    Рисунок 3. Количество проводимых автоматических тестов на протяжении всего времени развития проекта

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

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

Внешние тесты в Microsoft Visual Studio создаются просто, нужно всего лишь создать новый внешний тест в тестовом проекте и указать исполняемый файл, который будет запускать как тестирующее приложение (см. Рисунок 4). 

 

 

Рисунок 4. Внешний тест в Microsoft Visual Studio

Таким методом можно подключить любую тестирующую систему как коммерческую, так и бесплатную. Одно требование к этой системе – это возможность ее запуска из командой строки, чему отвечают продукты IBM Rational. Для запуска тестирующих систем IBM Rational мы будем использовать bat-файлы, которые будут возвращать результат – тест выполнен удачно или нет. Структура bat-файла будет следующая:

  1. Запуск системы тестирования.
  2. Поиск признака ошибки в результатах выполнения тестов.
  3. Возврат результата поиска.


Возврат результата будет проводиться с помощью функции «exit» с параметрами 0, если все нормально или -1, если найдена ошибка. На рисунках ниже (см. Рисунок 5 и Рисунок 6) показаны примеры выполненного и невыполненного тестов.

 


 

Рисунок 5. Тест выполнен

 

 

Рисунок 6. Тест не выполнен
 
Далее рассмотрим примеры подключения внешних систем тестирования к проекту тестирования Microsoft Visual Studio.

Использование IBM Rational Robot

IBM Rational Robot – это мощный инструмент функционального тестирования, которые обладает следующими возможностями:

  1. Запись скриптов тестирования на основе взаимодействия пользователя с тестируемым программным обеспечением в графическом интерфейсе операционной системы. IBM Rational Robot позволяет записывать тесты на основе работы в GUI операционной системы и преобразовывать тесты в скрипты на языке SQABasic.
  2. Редактирование записанных скриптов тестирования с помощью встроенного редактора. IBM Rational Robot позволяет модифицировать записанные скрипты для расширения функциональности формируемых тестов, т.е. можно формировать работу с файлами, протоколами работы приложения и т.д.
  3. Создание проверочных точек для оценки правильности выполнения скрипта тестирования. IBM Rational Robot позволяет выполнять сравнение ожидаемых свойств, значений различных объектов пользовательского интерфейса с фактическими свойствами или значениями, которые позволяют определить правильность хода выполнения теста.
  4. Подключение пулов данных для тестов. IBM Rational Robot позволяет подключать набор данных тестирования приложения из базы данных, текстового файла и т.д., что обеспечивает более качественные условия тестирования приложения.
  5. Выполнение записанных скриптов тестирования. IBM Rational Robot выполняет сохраненные скрипты тестирования имитируя работу пользователя в GUI операционной системы и формирует детальный отчет выполнения теста.


Для нашего примера мы запишем небольшой тест и сформируем проверочную точку. Для этого необходимо:

  1. В IBM Rational Robot вызвать запись скрипта тестирования:


    Рисунок 7. Запись нового скрипта тестирования
  2. Выполнить действия, которые должен выполнять пользователь с тестируемым приложением:


    Рисунок 8. Запись скрипта тестирования
  3. При записи скрипта тестирования сконфигурировать новую проверочную точку, на примере (см. Рисунок 9) показано добавление проверки выбранного значения в выпадающем списке.


    Рисунок 9. Вставка проверочной точки
  4. Сохранить результаты записи.


    Рисунок 10. Результат записи теста

Теперь нам необходимо подключить наш тестовую скрипт для выполнения в Microsoft Visual Studio. Для этого неужно сформировать bat-файл, который будет вызывать скрипт тестирования на выполнение и проверять результат:

rtrobo.exe uml2cqtest /project <путь к каталогу проекта robot>\DemoTestRR.project /play /close
findstr Result=\"Fail\" <путь к каталогу проекта robot>\TestAssets\Log\uml2cqtest.xml
if %errorlevel% == 1 goto end
exit -1
:end
exit 0

Bat-файл выполняет следующие действия:

  1. Вызывает IBM Rational Robot со следующими параметрами:
    1. uml2cqtest – наименование скрипта тестирования.
    2. /project <путь к каталогу проекта robot>\DemoTestRR.project – наименование проекта IBM Rational Robot, в котором находиться скрипт тестирования.
    3. /play – выполнить скрипт тестирования.
    4. /close – закрыть IBM Rational Robot после выполнения.
  2. Результаты выполнения тестов записываются в специальный xml-файл, в котором наш bat-файл ищет строку «Result=\"Fail\"», которая означает ошибку при выполнении какого-либо шага.
  3. В зависимости от результата поиска возвращает результат 0 или -1.


Теперь этот файл можно установить на выполнение во внешнем тесте в Microsoft Visual Studio и использовать как автоматический функциональный тест.

 

 

Рисунок 11. Результат выполнения тестов IBM Rational Robot

Использование IBM Rational Functional Tester

IBM Rational Functional Tester один из новейших продуктов IBM Rational, который выполняет функциональное тестирование. Основные отличительные особенности этого продукта от IBM Rational Robot это:

  1. Поддержка двух семейств операционных систем:
    1. Windows.
    2. Linux.
  2. Возможность использования двух языков для разработки скриптов тестирования:
    1. Java на основе Eclipse.
    2. Microsoft Visual Basic .NET на основе плагина для Microsoft Visual Studio.


Для нашего примера мы будем использовать интеграцию IBM Rational Functional Tester со средой разработки Microsoft Visual Studio. Для создания функционального теста необходимо выполнить следующие действия:

  1. В среде разработки Microsoft Visual Studio создать новый проект «Functional Test Project»:


    Рисунок 12. Создание нового проекта для IBM Rational Functional Tester
  2. Выполнить запись пользовательских действий с тестируемым приложением:


    Рисунок 13. Вызов записи скрипта тестирования
  3. Создать проверочную точку в процессе выполнения записи, проверочная точка также будет выполнять проверку значения в выпадающем списке, как и в примере с IBM Rational Robot:


    Рисунок 14. Вызов процедуры создания проверочной точки
  4. Сохранить результаты записи:


    Рисунок 15. Готовая скрипт тестирования


Далее необходимо сформировать bat-файл, как и в предыдущем примере:

rational_ft.exe -datastore "<путь к каталогу проекта VS>\DemoTestRFT" -playback uml2cqtestscript
findstr failed "<путь к каталогу проекта VS>\DemoTestRFT_logs\uml2cqtestscript\rational_ft_logframe.html”
if %errorlevel% == 1 goto end
exit -1
:end
exit 0


Этот bat-файл в общем смысле не отличается от предыдущего:

  1. Вызывается IBM Rational Functional Tester со следующими параметрами:
    1. -datastore "<путь к каталогу проекта VS>\DemoTestRFT" – путь к каталогу с проектом.
    2. -playback uml2cqtestscript – выполнить скрипт тестирования.
  2. IBM Rational Functional Tester записывает свои результаты в отчет в формате HTML. Для того, чтоб определить или был провален хоть один шагв процессе выполнения скрипта тестирования, необходимо найти слово «failed» в отчете.
  3. В зависимости от результата поиска возвращается результат 0 или -1.

 


 

Рисунок 16. Результат выполнения тестов IBM Rational Functional Tester

Использование IBM Rational TestManager

IBM Rational TestManager – это мощное инструмент для:

  1. Планирования тестирования – в IBM Rational TestManager все тесты формируются на основе плана тестирования, который содержит в себе детальное описание последовательности выполнения тестов, их условия, среду выполнения, рабочие места, на которых они должны выполняться и т.д.
  2. Выполнение тестирования – основой тестов являются скрипты тестирования, которые формируются с помощью IBM Rational Robot и Functional Tester, которые в свою очередь объединяются в комплекты (suite)и просмотра результатов тестирования. Запуск таких комплектов IBM Rational TestManager позволяет выполнять из командной строки. IBM Rational TestManager помогает организовать следующие виды тестирования:
    1. Функциональное тестирование на основе записанных скриптов;
    2. Распределенное функциональное тестирование, которое позволяет использовать несколько рабочих мест. На каждом рабочем месте выполняются записанные функциональные тесты, причем их набор может автоматически корректироваться в зависимости от конфигурации рабочего места, как от набора программного обеспечения, так и от конфигурации «железа», что позволяет быстро проверить работу тестируемого приложения сразу для нескольких платформ, для которых оно проектировалось.
    3. Нагрузочное тестирование приложений с использованием виртуальных тестеров и с возможностью распределения на несколько рабочих мест.
  3. Анализа результатов выполнения тестов – IBM Rational TestManager формирует детальный отчет выполнения тестирования, который хранится в базе данных, что обеспечивает возможность формирования различного рода отчетной информации.

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

  1. Записать новый скрипт тестирования на основе действий пользователя с помощью IBM Rational Robot.


    Рисунок 17. Запись скрипта тестирования для IBM Rational TestManager
  2. Создать новый комплект c помощью мастера функционального тестирования.


    Рисунок 18. Создание нового комплекта
  3. Добавить записанный скрипт тестирования в комплект на этапе создания.


    Рисунок 19. Добавления скрипта тестирования в комплект

Теперь есть готовый комплект IBM Rational TestManager, который необходимо запустить из командной строки. Т.к. результаты тестирования у IBM Rational TestManager находятся в базе данных, то получить доступ из командной строки к базе данных, конечно, будет сложно, и поэтому получить информацию о том, как выполнился тест, будет непросто. Но в этом случае мы воспользуемся другим методом. При прохождении проверочных точек IBM Rational TestManager создает специальный файл, который содержит актуальное значение объекта, если проверочная точка сформировала ошибку. Как признак ошибки у нас будет наличие этого файла в каталоге с отчетом по тестированию и bat-файл примет следующий вид:

rtmanager.exe RationalDemoSuite /runsuite /user admin /project <каталог проекта rational>\DemoProject.rsp /computers Local /build "Build 1" /logfolder Default /log LogFromTFS /overwritelog /close
if exist <каталог проекта rational>\TestDatastore\TMS_Builds\Build 1.Build\Default.LogFolder\LogFromTFS.Log\vp\0.DemoRobotTM.RecorTypeVerify.act*.* goto end
exit 0
:end
exit -1


Bat-файл выполняет следующие действия:

  1. Вызывается IBM Rational TestManager со следующими параметрами:
    1. RationalDemoSuite /runsuite – наименование комплекта и параметр /runsuite на выполнение этого комплекта.
    2. /user admin – имя пользователя для подключения к проекту Rational.
    3. /project <каталог проекта rational>\DemoProject.rsp – путь к проекту Rational.
    4. /computers Local – список компьютеров, которые будут выполнять комплект тестирования.
    5. /build "Build 1" – наименование сборки, с которой будут ассоциироваться результаты тестирования.
    6. /logfolder Default /log LogFromTFS – путь к результатам тестирования.
    7. /overwritelog – параметр, который указывает, на то, что необходимо перезаписать результаты тестирования, если они остались с прошлой сессии тестирования.
    8. /close – закрыть IBM Rational TestManager после выполнения тестов.
  2. Проверка на существование файла с актуальным значением объекта проверочной точки.
  3. В зависимости от результата проверки возвращается результат 0 или -1.

Теперь этот bat-файл можно прописывать во внешний тест Microsoft Visual Studio и запускать на выполнение.

 

 

Рисунок 20. Выполнение комплекта

Результаты выполнения комплекта тестов в IBM Rational TestManager выглядят следующим образом:

 

 

Рисунок 21. Результаты тестирования

Документирование дефектов в Team Foundation Server


Все обнаруженные ошибки и сформированные отчеты по ним должны быть доступны всем членам команды разработки. Как систему документирования дефектов мы используем Team Foundation Server. Гибкая интеграция Microsoft Visual Studio с Team Foundation Server позволяет формировать новые дефекты непосредственно из окна просмотра результатов тестирования (см. Рисунок 22).

 

 

Рисунок 22. Вызов процедуры регистрации нового дефекта

К новому дефекту также можно прикрепить все результаты, которые были получены при проведении тестов, как результаты Microsoft Visual Studio, так и результаты IBM Rational Robot и Functional Tester. Таким образом, будет автоматически зарегистрирована вся необходимая информация о дефекте: номер сборки с дефектом, журнал выполнения команд bat-файла, детальная информация об условиях обнаружения дефекта и т.д.

 

 

Рисунок 23. Новый дефект в Team Foundation Server

Заключение

Автоматические функциональные тесты обеспечивают качественное тестирование функциональных возможностей вашей системы с самой важной стороны – со стороны пользователя. При этом накопление всех записанных тестов обеспечивает полноценное регрессивное функциональное тестирование приложений и помогает обеспечить проверку всех поставленных требований в процессе всего жизненного цикла разработки программного обеспечения. Отсутствие автоматического функционального тестирования windows-приложений в Microsoft Visual Studio вполне возмещается наличием в проектах тестирования Microsoft Visual Studio внешних тестов. Внешние тесты позволяют подключить любую внешнюю тестирующую систему, которая позволяет запускать свои проекты тестирвания из командной строки. Так же как и исходный код проектируемого приложения, исходный код скриптов тестирования может быть помещен под версионный контроль, что в свою очередь обеспечит как надежное хранение скриптов тестирования, так и восстанавливаемость набора тестов для каждой версии проектируемого программного обеспечения. Кроме этого, внешние тесты можно использовать для автоматического запуска после выполнения сборки на сервере Team Build, что обеспечит постоянную проверку каждой новой сборки на соответствие поставленным функциональным требованиям.

Дополнительные ресурсы

Об авторах

Шамрай Александр – работает в области информационных технологий с 2002 года. Имеет опыт разработки прикладного и системного программного обеспечения, систем автоматизации учебно-методических процессов. Имеет сертификаты по следующим продуктам IBM Rational: ClearCase for Windows, ClearQuest for Windows и UCM Essentials. Является руководителем отдела перспективных разработок по продуктам IBM Rational и Microsoft в компании СМ-Консалт (www.cmcons.com ). Связаться с ним можно по адресу a.shamray@cmcons.com

Новичков Александр - работает в области информационных технологий с 1994 года. Имеет опыт руководства, обучения, внедрения, развития и поддержки IBM Rational Unified Process: Банк Внешней торговли (три проекта), ОАО Татнефть (три проекта), Национальный Банк ТРАСТ (три проекта), Банк Русский Стандарт, Иркут-Авиа, ЗАО АйТи, Сбербанк РФ, ЦБ РФ, Русский Алюминий… и многих других. Имеет более 30 публикаций научно и научно-популярных материалов, участвовал в 6 международных научных конференциях. Имеет сертификаты по следующим продуктам IBM Rational: ClearCase for Windows, ClearQuest for Windows и UCM Essentials. За время работы в консалтинге обучено более 500 специалистов ведущих IT-компаний России, среди которых: IBS, LG, R'Style, Samsung, Банковские Информационные Системы, БелХард, ВнешТоргБанк (ВТБ), Диасофт, Интерфейс, Казахские Железные Дороги, КазахТелеком, Красноярский Алюминиевый Завод, Курчатовский институт, Лаборатория Касперского, Лукойл-Информ, Люксофт, Миратех, ММВБ, МосКомЗем, Моторола (СПб), Национальный Банк Траст, Нацональный Банк Республики Беларусь, ОКБ Сухого, Оптима, Петер-Сервис, Профикс, РАО ЕЭС России, СБ РФ, Сименс, Собинбанк, ТатАСУнефть (ОАО Татнефть), УдмуртНефть, Федеральный Институт Промышленной собственности, ЦБ РФ, Челябинский Тракторный Завод, Эрикссон, ЮКОС… Является руководителем отдела внедрения и консалтинга в компании СМ-Консалт (www.cmcons.com ). Связаться с ним можно по адресу a.novichkov@cmcons.com

10.04.2009

Комментарии

Добавить комментарий (анонимные комментарии не публикуются!!!)

ФИО: 
E-mail: 
Тема: 
Комментарий: 
Оценка:   
 
 
 
 
 
Код подтверждения:
   

Новости СМ-Консалт

Вышла версия BIPULSE 6.2

Мастер-класс для тренеров и руководителей "Работа в аудитории". 1 ступень уже в марте

Обновлено расписание тренингов до марта 2017 года

Новые статьи в библиотеке

Мифы про ГОСТ 34

Примеры отраслевых решений на основе BIPULSE

Практика реализации модуля интеграции для Rational Software Architect, позволяющего преобразовывать низкоуровневое представление процесса из IBM Rational ClearQuest в UML

Что удивляет в русских менеджерах иностранцев

Разработка ПО с использованием лучших мировых практик и инструментов на Иркутском авиационном заводе

Презентация доклада для IT Global Meetup Санкт-Петербург: "Почему Agile так популярен? Взгляд циника и психолога"

Заказчики и истории успеха

Наши тренинги, семинары, курсы

Дружите с нами на FaceBook

Проверить настройки
Компания
Сделано в СМ-Консалт
Услуги 
Компетенция
  • CMC-TotalTest (скоро)
    уникальная разработка автоматизации функционального тестирования. Альтернатива HP UFT, IBM RFT и Microsoft!
  • CMC-Bisquiter
    автоматизированное тестирование АБС "Бисквит"
  • CMC-Formater
    тестирование печатных и экранных форм
  • CMC-TerminalTest
    тестирование терминальных приложений
  • ProjectTracker
    интеграция ALM и MS Project
  • GanttChart
    модуль управления проектами для IBM Rational ClearQuest и TeamConcert
    Все разработки СМ-Консалт >
  • ИТ-консалтинг
  • Автоматизированное тестирование
  • Ручное тестирование
  • Аутсорсинг тестирования
  • Оптимизация бизнес-процессов
  • Внедрение методологии и инструментов ALM
  • Обучение и коучинг
  • Разработка ПО
  • Интеграция
ООО СМ-Консалт (СМК), 2004-2017.
Карта сайта