Перейти к содержимому

Фотография

Динамические элементы UFT


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 17

#1 matveevis

matveevis

    Новый участник

  • Members
  • Pip
  • 19 сообщений
  • ФИО:Иван

Отправлено 30 октября 2013 - 11:24

Решили ознакомиться с UFT для тестирования продукта. И сразу же возникли сложности:
1. Окно может менять название, при этом название это переменная в базе данных. По каким параметрам можно привязаться к элементу не используя название?
2. UFT не может выполнить свои же записанные действия.
3. На форме располагаются элементы, в зависимости от элементов формы элементы по разному располагаются, по разному называются.
Не хотелось бы добавлять в репозиторий все элементы, а хотелось бы добавить Родителя и искать нужный элемент по его наименованию(это может быть чекбокс, текстбокс) - возможно ли такое?
  • 0

#2 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 31 октября 2013 - 12:23

Решили ознакомиться с UFT для тестирования продукта. И сразу же возникли сложности:
1. Окно может менять название, при этом название это переменная в базе данных. По каким параметрам можно привязаться к элементу не используя название?
2. UFT не может выполнить свои же записанные действия.
3. На форме располагаются элементы, в зависимости от элементов формы элементы по разному располагаются, по разному называются.
Не хотелось бы добавлять в репозиторий все элементы, а хотелось бы добавить Родителя и искать нужный элемент по его наименованию(это может быть чекбокс, текстбокс) - возможно ли такое?

1. Читайте про Object Identification Settings
2. Следствие неверно настроенных Object Identification settings, где как раз определяется список атрибутов, по которым QTP запоминает к себе объекты каждого класса. Видимо, для части объектов в этот список попали атрибуты с динамическими значениями, которые меняются при каждом запуске приложения или зависят от какие-то изменяемых параметров.
3. Почему не хотите добавить все лементы в ОР (объектный репозиторий)? Можно обращаться элементам, которых нет в ОР. Читайте про Descriptive Programming
  • 0

#3 matveevis

matveevis

    Новый участник

  • Members
  • Pip
  • 19 сообщений
  • ФИО:Иван

Отправлено 05 ноября 2013 - 16:18

Советы не помогли.
Никаких свойств претендующих на уникальные нет. Скриншоты в аттаче.
На первом все свойства объекта
На втором собственно сам объект
На третьем скриншоте показано, как выглядит найденный элемент в Ranorex, как подобное получить в HP(который, позиционирует себя как самый мощный инструмент автоматизации тестирования) не понимаю.

Прикрепленные файлы

  • Прикрепленный файл  1.png   403,55К   18 Количество загрузок:
  • Прикрепленный файл  2.png   148,82К   23 Количество загрузок:
  • Прикрепленный файл  3.png   204,16К   17 Количество загрузок:

  • 0

#4 matveevis

matveevis

    Новый участник

  • Members
  • Pip
  • 19 сообщений
  • ФИО:Иван

Отправлено 05 ноября 2013 - 17:08

Складывается впечателние, что UFT не позволяет создать универсальный инструмент
  • 0

#5 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 05 ноября 2013 - 20:20

Советы не помогли.
Никаких свойств претендующих на уникальные нет. Скриншоты в аттаче.
На первом все свойства объекта
На втором собственно сам объект
На третьем скриншоте показано, как выглядит найденный элемент в Ranorex, как подобное получить в HP(который, позиционирует себя как самый мощный инструмент автоматизации тестирования) не понимаю.

То же самое, что в Ranorex, можно получить, используя Object Spy.
На чем у вас написан GUI? Установлен ли у вас add-in для работы с данным интерфейсом в QTP и подключен ли он при запуске?
  • 1

#6 matveevis

matveevis

    Новый участник

  • Members
  • Pip
  • 19 сообщений
  • ФИО:Иван

Отправлено 06 ноября 2013 - 07:33

Добавление GUI .NET & Silverlight помогло, увидеть именно ту картину, которая нужна. Спасибо.
Вопрос №2: Есть ли встроенные процедуры запуска приложения? Или необходимо в данном случае пользоваться внутренним языком?
Вопрос №3: Есть интерфейс связи тестового кейса с внешними источниками, например Excel или CSV?
  • 0

#7 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 06 ноября 2013 - 09:08

Вопрос №2: Есть ли встроенные процедуры запуска приложения? Или необходимо в данном случае пользоваться внутренним языком?
Вопрос №3: Есть интерфейс связи тестового кейса с внешними источниками, например Excel или CSV?

Иван, не очень понял оба вопроса. Но постараюсь ответить так, как понял.
2. Для запуска приложений тем же способом, что и из командой строки можно использовать SystemUtils.Run
3. В QTP есть DataTable для тестовых данных. Интерфейс взаимодействия с ним смотрите в хелпе - объект DataTable. В файловой системе он сохраняется как xls-файл, который лежит внутри папки с тестом. Его можно редактировать отдельно от теста.
С CSV-файлами можно работать через FileSystemObject (стандартный интерфейс работы с файлами в VBScript)
Что есть и что хотите получить?
  • 1

#8 matveevis

matveevis

    Новый участник

  • Members
  • Pip
  • 19 сообщений
  • ФИО:Иван

Отправлено 06 ноября 2013 - 13:00


Вопрос №2: Есть ли встроенные процедуры запуска приложения? Или необходимо в данном случае пользоваться внутренним языком?
Вопрос №3: Есть интерфейс связи тестового кейса с внешними источниками, например Excel или CSV?

Иван, не очень понял оба вопроса. Но постараюсь ответить так, как понял.
2. Для запуска приложений тем же способом, что и из командой строки можно использовать SystemUtils.Run
3. В QTP есть DataTable для тестовых данных. Интерфейс взаимодействия с ним смотрите в хелпе - объект DataTable. В файловой системе он сохраняется как xls-файл, который лежит внутри папки с тестом. Его можно редактировать отдельно от теста.
С CSV-файлами можно работать через FileSystemObject (стандартный интерфейс работы с файлами в VBScript)
Что есть и что хотите получить?

Павел, спасибо что попытались понять и очень подробно и понятно отвечаете на вопросы. Собственно вопрос второй вот в чем: HP UFT позиционирует себя как инструмент для тестировщика с минимальными знаниями программирования. Поэтому я думал найти некий инструмент StartApp, который бы позволил задать путь запускаемого приложения, а этот инструмент уже сформирует код :)
Вопрос третий: есть одинаковый сценарий, на который необходимо подать разные входные данные и соответственно получить разные выходные данные. Т.е. подаем на вход таблицу, и в соответствии с ней выполняется один и тот же сценарий, по количеству записей таблицы.
  • 0

#9 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 06 ноября 2013 - 14:16

Иван, спасибо

Собственно вопрос второй вот в чем: HP UFT позиционирует себя как инструмент для тестировщика с минимальными знаниями программирования.

Это не более, чем маркетинговый ход. Чтобы писать хорошие автотесты даже при использовании QTP придется научиться программировать, хотя бы на минимальном уровне. И очень советую посетить какие-нибудь курсы по организации фреймворка автотестирования.

Поэтому я думал найти некий инструмент StartApp, который бы позволил задать путь запускаемого приложения, а этот инструмент уже сформирует код :)

Можно задать путь к приложению в диалоге Automation -> Record and Run Settings, но код запуска в тесте в этом случае вы не увидите, просто каждый раз при запуске теста QTP будет запускать указанное приложение.

Вопрос третий: есть одинаковый сценарий, на который необходимо подать разные входные данные и соответственно получить разные выходные данные. Т.е. подаем на вход таблицу, и в соответствии с ней выполняется один и тот же сценарий, по количеству записей таблицы.

Это как раз то, для чего используется DataTable.
  • 1

#10 matveevis

matveevis

    Новый участник

  • Members
  • Pip
  • 19 сообщений
  • ФИО:Иван

Отправлено 06 ноября 2013 - 17:00

Павел, спасибо за оперативность. Вы мне очень помогли
  • 0

#11 matveevis

matveevis

    Новый участник

  • Members
  • Pip
  • 19 сообщений
  • ФИО:Иван

Отправлено 06 ноября 2013 - 18:09

Павел, а можно ли в HP UFT использовать нечто подобное:
1. Работать с одним и тем же Action в разных GUITests
2. Создать подобие класса C#, чтобы реализовать фреймворк. Например есть компонент, и для разных тестов с ним необходимо осуществлять различные действия. Прописываем функции в одном месте и затем вызываем эти функции с разными параметрами.
  • 0

#12 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 07 ноября 2013 - 09:44

Павел, а можно ли в HP UFT использовать нечто подобное:
1. Работать с одним и тем же Action в разных GUITests
2. Создать подобие класса C#, чтобы реализовать фреймворк. Например есть компонент, и для разных тестов с ним необходимо осуществлять различные действия. Прописываем функции в одном месте и затем вызываем эти функции с разными параметрами.

1. Можно. Это называется external Actions. Неудобство в их использовании состоитт в том, что на редактирование одновременно в QTP может быть открыт только один сценарий и один тест. А редактировать сценарии можно только в том тесте, где они созданы, а в том тесте, откуда вызываются, — нельзя.
2. VBScript — это объектный язык, так что свой класс с набором методов вы написать можете и использовать его в любых тестах тоже. Но увы, наследования в VBs нет. Но можно писать библиотеки функций, которые подключаются к тестам. Для разработки полноценного фреймворка лучше использовать стороннюю IDE — TestDesign Studio, она, правда, стоит отдельных денег, но, поверьте, она себя полностью окупает. Там работает автокомплит для всех ваших классов и функций и есть полноценная проверка синтаксиса и автогенерация документации к вашим функциям.
  • 1

#13 matveevis

matveevis

    Новый участник

  • Members
  • Pip
  • 19 сообщений
  • ФИО:Иван

Отправлено 07 ноября 2013 - 14:21


Павел, а можно ли в HP UFT использовать нечто подобное:
1. Работать с одним и тем же Action в разных GUITests
2. Создать подобие класса C#, чтобы реализовать фреймворк. Например есть компонент, и для разных тестов с ним необходимо осуществлять различные действия. Прописываем функции в одном месте и затем вызываем эти функции с разными параметрами.

1. Можно. Это называется external Actions. Неудобство в их использовании состоитт в том, что на редактирование одновременно в QTP может быть открыт только один сценарий и один тест. А редактировать сценарии можно только в том тесте, где они созданы, а в том тесте, откуда вызываются, — нельзя.
2. VBScript — это объектный язык, так что свой класс с набором методов вы написать можете и использовать его в любых тестах тоже. Но увы, наследования в VBs нет. Но можно писать библиотеки функций, которые подключаются к тестам. Для разработки полноценного фреймворка лучше использовать стороннюю IDE — TestDesign Studio, она, правда, стоит отдельных денег, но, поверьте, она себя полностью окупает. Там работает автокомплит для всех ваших классов и функций и есть полноценная проверка синтаксиса и автогенерация документации к вашим функциям.

Павел, спасибо. Будем смотреть TestDesign Studio, и посмотрим его аналоги. А почему UFT не хочет/не может создать инструмент для полноценного создания фреймворка. Тот же Ranorex благодаря использованию C# в этом аспекте далеко впереди. Так же вызывает недоумение выбора языка VBScript.
  • 0

#14 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 07 ноября 2013 - 16:43

А почему UFT не хочет/не может создать инструмент для полноценного создания фреймворка. Тот же Ranorex благодаря использованию C# в этом аспекте далеко впереди. Так же вызывает недоумение выбора языка VBScript.

Думаю, что одна из причин, это потому что при такой стоимости продукта решение о его внедрении принимают не автоматизаторы, а менеджеры, стоящие на несколько уровней выше. Собственно отсюда и улучшалки, которые хорошо выглядят в глазах менеджеров, а не реально нужные вещи, вроде нормальной IDE.
Плюс история развития продукта такова: исходно была небольшая контора Mercury Interactive, которая и создала QTP, QC, LoadRunner и активно их развивала. Они были реально самыми крутыми средствами автоматизации тестирования на тот момент. А потом эту контору купила HP, и развитие инструментов практически прекратилось.

Когда мы показывали свои библиотеки для автотестирования на основе QTP людям, которые тестируют сам QTP, их реакция была "Никогда не думали, что его используют так".
У меня сложилось впечатление, что развитием продукта занимаются люди, далекие от реальных пробем автоматизации тестирования, и приоритеты там скорее на более тесную интеграцию инструментов между собой и на улучшение возможности создания автоскриптов без программирования (что, увы, красиво на слайдах, но не работает в реальности)
  • 1

#15 matveevis

matveevis

    Новый участник

  • Members
  • Pip
  • 19 сообщений
  • ФИО:Иван

Отправлено 07 ноября 2013 - 20:03


А почему UFT не хочет/не может создать инструмент для полноценного создания фреймворка. Тот же Ranorex благодаря использованию C# в этом аспекте далеко впереди. Так же вызывает недоумение выбора языка VBScript.

Думаю, что одна из причин, это потому что при такой стоимости продукта решение о его внедрении принимают не автоматизаторы, а менеджеры, стоящие на несколько уровней выше. Собственно отсюда и улучшалки, которые хорошо выглядят в глазах менеджеров, а не реально нужные вещи, вроде нормальной IDE.
Плюс история развития продукта такова: исходно была небольшая контора Mercury Interactive, которая и создала QTP, QC, LoadRunner и активно их развивала. Они были реально самыми крутыми средствами автоматизации тестирования на тот момент. А потом эту контору купила HP, и развитие инструментов практически прекратилось.

Когда мы показывали свои библиотеки для автотестирования на основе QTP людям, которые тестируют сам QTP, их реакция была "Никогда не думали, что его используют так".
У меня сложилось впечатление, что развитием продукта занимаются люди, далекие от реальных пробем автоматизации тестирования, и приоритеты там скорее на более тесную интеграцию инструментов между собой и на улучшение возможности создания автоскриптов без программирования (что, увы, красиво на слайдах, но не работает в реальности)


Павел, спасибо за столь интересное мнение. Именно поэтому я выбрал Ranorex для внутреннего тестирования. Но рынок диктует свои правила, и мы сейчас рассматривает возможность автоматизации на HP.
У меня еще один практический вопрос.
Есть панель (скриншот 2.1 и 2.2 - может выглядеть по разному и как список и как таблица). Вот так эта панель выглядит в Ranorex(скриншот 2.3 и 2.4). Т.е. видим что есть потомки, в одном случае это таблица в другом список. А вот так выглядит в HP(скриншот 2.5). Как я ни старался найти потомком или зафиксировать отдельные иконки - не получается. Все время список без потомков. Где моя ошибка?

И еще вопрос: Вы советовали использовать TestDesign Studio для создания фреймворка. А есть ли возможность использовать VisualStudio для тех целей? Студия мне намного ближе, а так же знания в C# присутствуют

Прикрепленные файлы

  • Прикрепленный файл  2.1.png   66К   7 Количество загрузок:
  • Прикрепленный файл  2.2.png   125,02К   12 Количество загрузок:
  • Прикрепленный файл  2.3.png   80,94К   13 Количество загрузок:
  • Прикрепленный файл  2.4.png   133,28К   12 Количество загрузок:
  • Прикрепленный файл  2.5.png   74,46К   10 Количество загрузок:

  • 0

#16 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 11 ноября 2013 - 06:09

У меня еще один практический вопрос.
Есть панель (скриншот 2.1 и 2.2 - может выглядеть по разному и как список и как таблица). Вот так эта панель выглядит в Ranorex(скриншот 2.3 и 2.4). Т.е. видим что есть потомки, в одном случае это таблица в другом список. А вот так выглядит в HP(скриншот 2.5). Как я ни старался найти потомком или зафиксировать отдельные иконки - не получается. Все время список без потомков. Где моя ошибка?

Скорее всего так происходит потому, что QTP маппирует объекты приложения на свою объектную модель классов для каждого интерфейса. И в этом модели у таблиц и списков нет дочерних элементов. Тут можно попробовать два пути - получить перечень элементов для списка через стандартные GetItems или что-то подобное (нет QTP под рукой). Или же попробовать получить доступ к исходным элементам через метод .object, который возвращает вам ссылку на сам элемент пользовательского интерфейса, который маппирован на QTP-шный тестовый объект. Это точно работает для веба,может такое возможно и для .Net.

И еще вопрос: Вы советовали использовать TestDesign Studio для создания фреймворка. А есть ли возможность использовать VisualStudio для тех целей? Студия мне намного ближе, а так же знания в C# присутствуют

Писать на C# для QTP, увы, не получится, потому что API QTP заточено под модель тестов и сценариев. У него отличное API для массового редактирования тестов, сценариев, библиотек, управления ими. Но, увы, использовать QTP просто как драйвер пользовательского интерфейса, написав фреймворк на любом удобном языке, не получится - для этого он не приспособлен. Возможностей же VS по работе с VBs я не знаю. Но Test Design Studio - удобная IDE, не думаю, что возникнут проблемы в ее осовоении.
  • 0

#17 matveevis

matveevis

    Новый участник

  • Members
  • Pip
  • 19 сообщений
  • ФИО:Иван

Отправлено 26 ноября 2013 - 16:00

Странная вещь происходит с UFT. Установил на другую машину. Установил все необходимые GUI. В итоге объект определяется как стандартный Windows контрол,(вместо .Net), и у меня нет возможности получить доступ ни к его свойствам, ни к его потомкам.

Прикрепленные файлы

  • Прикрепленный файл  4.1.png   19,32К   2 Количество загрузок:
  • Прикрепленный файл  1.png   403,55К   6 Количество загрузок:

  • 0

#18 matveevis

matveevis

    Новый участник

  • Members
  • Pip
  • 19 сообщений
  • ФИО:Иван

Отправлено 26 ноября 2013 - 20:35

Может быть проблема в том что я что-то не установил? Набросал приложение на C#, закинул в тестовую среду всеравно не определяются элементы.(определяеются но не верно... UFT их под стандартные запихнуть хочет)
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных