Автор работы: Пользователь скрыл имя, 13 Июня 2012 в 07:07, курсовая работа
Очень часто при разработке программного обеспечения приходится сталкиваться с одной из двух проблем. Либо качество разработанного продукта много ниже самых минимальных разумных требований, либо затраты на тестирование превосходят все разумные пределы. К сожалению, бывает и так, что обе проблемы существуют одновременно. И денег на тестирование истрачено много, а качества достичь так и не удалось.
Увы, для большинства фирм низкое качество выпускаемого ПО — верный путь если не к полному исчезновению фирмы, то, по крайней мере, к потере клиентов и существенным финансовым потерям.
Кому нужно не оттестированное ПО, которое может подвести в любой самый неподходящий момент!
Одной из причин такой ситуации является объективная сложность процесса тестирования ПО. Ведь под словом Тестирование может скрываться множество самых различных действий, направленных на решение множества разнообразных задач. Тут и запуск и исполнение программы с целью проверки отсутствия ошибок, и оценка производительности, и контроль наличия и полноты документации и даже качества принятых проектных решений.
Как же наладить процесс тестирования? Какими инструментами лучше воспользоваться? Какой подход выбрать?
Надеемся, что предлагаемая читателям серия статей поможет им найти ответы на эти и многие другие вопросы.
В частности, мы планируем уделить большое внимание таким вопросам, как роль тестирования в Rational Unified Process и требования ГОСТ к процессу тестирования.
Первая статья представляет собой краткий обзор содержания серии и знакомит читателей с кругом вопросов, которые будут обсуждаться в последующих статьях
Введение в процесс тестирования 3
Предисловие к материалу 3
Введение 3
Что такое тестирование 4
Тестируемость 5
Жизненный цикл продукта и Тестирование 5
Типовой цикл тестирования 6
Тестирование и сценарии использования. 8
Типы тестирования 10
Метрики тестирования и качества 10
Стратегия тестирования 10
Типы тестов 11
Приемосдаточные испытания 11
Тестирование производительности 11
Структурное тестирование 12
Тестирование удобства использования 12
Обзор автоматизации тестирования 13
Как работает автоматизированное тестирование глобализованных приложений 16
Воспроизведение 25
Эффективные методы автоматизации тестирования в Rational Functional Tester 28
Способы поиска тестовых объектов 30
Решение проблемы неточного распознавания объектов 31
Динамические точки верификации 37
Улучшение сценариев при помощи вспомогательного суперкласса 40
IBM Rational Functional Tester: Упрощение автоматизации тестирования графического пользовательского интерфейса 42
Список использованной литературы 55
При воспроизведении сценария вместо значения свойства (которое различно для каждой локали) Rational Functional Tester использует переменную, которая одинакова для всех локалей. Поэтому сценарий воспроизводится без помех. Такой подход дает возможность повторно использовать сценарии автоматизации тестирования независимо от измененияю локалей. Он также позволяет сценариям автоматизации выявлять дефекты в глобализованных приложениях, исключая, тем самым, дополнительные затраты труда на ручное тестирование.
Этапы автоматизации тестирования глобализованных приложений
Реализацию данного подхода начнем с примера глобализованного приложения JFC-кнопки (Java™ foundation class). Свойства accessibleName и name этой JFC-кнопки локализованы. Это означает, что значение, соответствующее этим свойствам, будет зависеть от локали, в которой запускается приложение.
На рисунке 4 показано, как скомпоновано и спакетировано глобализованное приложение. В данном случае приложение JFC-кнопки представляет собой исполняемый JAR-файл (Java™ Archive). Это исходный код в виде Java-классов в комбинации с различными локальными файлами ресурсов, которые делают возможным перевод текстов приложения. Таким образом, когда приложение запускается в различных локалях, появляющийся в пользовательском интерфейсе текст читается из соответствующего файла ресурсов для данной локали. Это и делает приложение глобализованным.
Рисунок 4. Структура
глобализованного приложения JFC-кнопки
Запись
Чтобы автоматизировать любое глобализованное приложение, которое записывается только в одной локали и воспроизводится в других (например, Japanese, Chinese или French), выполните следующие действия:
Листинг 1. Фрагмент
из файла ivory.properties, в котором переменная
Enable Localization устанавливается в значение
True
### ### Внутренние свойства: не предназначены для изменений клиентом ### # Номер версии, применяемый для плагина enabler.wsw при включении командной # оболочки eclipse rational.test.ft.enabler. # параметры запуска JVM клиента rationsl #rational.test.ft.client.jvm_ # Разрешение данного параметра позволяет установить каталог install для локального # TestContext отличным от глобальной настройки # (каталог install первого создаваемого TestContext) rational.test.ft.install_dir. # Разрешение данного параметра
позволяет запись/ # UI продукта rational.test.ft.testability. # Разрешение этого свойства позволяет искать строку в локализованной # таблице строк (если она доступна) rational.test.ft.services. # Внутреннее. Позволяет подключаться к проекту .NET для тестирования # интегрированной среды выполнения #rational.test.ft.testability. |
На шаге 2 используются возможности интегрированной среды IBM® (ранее известной под названием ITCL) для разработки сценариев тестирования в Rational Functional Tester. Использование этой интегрированной среды обеспечивает структурный подход к разработке сценариев тестирования, а также дает другие преимущества: уровень абстракции для сценариев автоматизации тестирования путем оформления их в AppObjects, задания (tasks) и уровни контрольных примеров (test case layers); минимальная сложность, повторно используемые обобщенные сценарии тестирования; базовый набор библиотечных файлов, предоставляющих общую функциональность для разработки и распространения сценариев тестирования.
Рисунок 5. Использование
интегрированной среды IBM для организации
сценариев Rational Functional Tester
Рисунок 6. Карта
объектов глобализованного приложения,
выбрано свойство объекта с меняющимся
значением
Листинг 2. Фрагмент
из файла ресурсов локали English с парой
ключ-значение (значение переменная-свойство)
# NLS_MESSAGEFORMAT_VAR sampleapp.remove = Remove |
Листинг 3. Фрагмент
из файла ресурсов локали Japanese с парой
ключ-значение (значение переменная-свойство)
# NLS_MESSAGEFORMAT_VAR sampleapp.remove = \u9664\u53bb(E) |
Улучшение
Рисунок 7. Карта
объектов до (со значением свойства)
и после (со значением свойства, замененным
переменной из файла ресурсов)
Рисунок 8. Файлы
ресурсов локализованного приложения,
помещенные в папку ресурсов проекта
Рисунок 9. NLS-программа,
написанная для тестирования глобализованного
приложения JFC-кнопки
Рисунок 10. Использование
возможностей NLS-программы для реализации
условных проверок или точек верификации,
гарантирующих соответствие названия
кнопки фактической локали
Рисунок 11. Rational Functional
Tester воспроизводит сценарий тестирования
для приложения, запущенного в локали
Japanese, которая отличается от локали, использованной
при записи сценария
Примечание:
При использовании NLS-программы сценарий
тестирования успешно работает в локали
Japanese, несмотря на то, что был записан в
локали English.
Рисунок 12. Журнал
регистрации событий при
Преимущества подхода
Использование рассмотренного в данной статье подхода к разработке сценариев автоматизированного тестирования для глобализованных приложений дает ряд преимуществ. Некоторые из них перечислены ниже:
Если вы часто используете инструменты автоматизации тестирования, то, вероятно, уже знакомы с концепцией инфраструктуры автоматизации тестирования. Тестировщики часто просят дать им рекомендации, консультации и решения по инфраструктуре, но инфраструктура - это только половина того, что необходимо иметь в виду. Ваш подход к структурированию тестового кода с целью улучшения тестирования приложений - это второй шаг на пути к эффективной автоматизации.
В этой статье мы рассмотрим первый шаг, который заключается в понимании того, как эффективно использовать имеющиеся инструменты тестирования. Это шаг можно разделить на несколько тем:
По каждой из этих тем имеются ссылки на дополнительную информацию, которые можно найти в разделе Ресурсы в конце этой статьи.
Примечание:
При написании этой статьи автор использовал
следующее программное обеспечение:
Альтернативные способы поиска объектов и их свойств
Такие компоненты, как диалоговые окна, кнопки команд и метки, имеют связанные с ними фрагменты информации, которые называются свойствами. Свойства имеют имена и значения. Нам часто бывают нужны различные свойства тестируемых объектов для того, чтобы можно было выполнить какой-либо вид верификации или программным способом определить дальнейшие действия сценария тестирования. В этом разделе рассказывается об объектах, их свойствах и способах, позволяющих взаимодействовать с ними в рамках сценария.
Запрос и настройка значений свойств объектов
Возникало ли у вас когда-либо желание динамически в процессе выполнения программы сравнить предыдущий вариант значения с текущим значением? А может быть, вам хотелось добавить в сценарий Rational Functional Tester переход, основанный на текущем значении свойства, содержащегося в каком-либо объекте? Извлечь значение свойства можно программным путем посредством вызова метода getProperty.
В примере из листинга 1 метод getProperty используется для того, чтобы определить, содержит ли метка сообщение об успешном выполнении. Если содержит, то будет нажата кнопка OK . Если нет, то будет нажата кнопка Cancel .
Информация о работе Практическое применение IBM Rational Functional Tester