суббота, 30 апреля 2011 г.

Использование HP QuickTest Professional

Пока качается Portal 2 со Steam решил поделиться некоторым опытом использования HP в команде :)

Собственно HP QTP  здоровенный софт энтерпрайз уровня. Мы его используем для автоматизации тестирования  Cisco ANM в большей степени представляющий из себя web UI.
Сам QTP можно  использовать  для записи действий ( и дальнейщих их повторов уже в виде автоматизированных тестов) но реально, это может использоваться только для чего то крайне примитивного, что бы использовать QTP по максимуму мы используем написание тестов на VBScript, этот язык встроен в QTP.
Сначала мы использовали встроенный в QTP менеджер объектов, для добавления в который нужно  объект добавить а потом обращаться к нему используя разные методы, такие как Click () для объекта типа WebButton  например. Но потом вы в силу ряда причин, например из за того что база объектов хранится в бинарном виде,  отказались от этого, перейдя на динамические поиск и определение объекта динамически в коде и вынеся определений объектов в xml файл.
QTP вполне справляется с огромным вариантом действий которые вы можете захотеть проделать  в Web UI.  С несколькими но.
1. QTP может упасть, и чем дольше выполняется тест, тем больше вероятность что он это сделает :)
2. IE может упасть, притом это делать он любит по поводу и без повода (а у нас есть тесты которые выполняются по 7-9 часов, вот такого лучше всего избегать)
3. Очень трудно отловить исключительные ситуации в поведении UI, к примеру, если UI выкинул какой то неожиданное окно с предупреждением или ошибкой, а вы в это время в тесте пытаетесь нажать на кнопку в UI на которую из за окна нажать невозможно то QTP будет упорно ждать эту кнопку что бы ее нажать до бесконечности.
4. QTP очень плохо работает в терминальных сессиях Windows, фокус новых окон теряет очень быстро если у вас окно с терминальным клиентом свернуто, поэтому для прогона тестов лучше всего использовать подключение по VNC.
5. QTP заточен работать только с UI  в броузерах или окошках операционной системы. Если вам, к примеру, нужно поработать как то с каким то текстовом UI (Cisco IOS, bash) то тут придется прикручивать костыли из связки cmd.exe + cygwin + expect (например)
6. чем более сложный, глючный и медленный UI тем больший секс  большее тестирование тестов, допиливание и шлифовка вас ждет. Баги UI будут накладываться на баги  QTP  вы, мягко  говоря, не насладитесь мощью QTP.

В общем штука глюкавая, но лучше ничего нет :)

4 комментария:

  1. на мой взгяд, TestComplete лихо справляется со всеми этими проблемами. У нас на автоматизации он работает сутками, и, как ни странно, не падает))

    ОтветитьУдалить
  2. В целях обучения, пару месяцев работал на QTP на внутреннем проекте. Реализация была интересная - на QTP создавался набор реюзабельных экшенов, а сами сценарии тестов записывались в экселевские таблицы (одно действие=одна строчка в экселе с названием вызываемого экшена и списком параметров с которыми он вызывается). Это позволяло довольно просто вносить изменения в уже созданные тесты (не надо копаться в коде) и создавать новые, которые не сильно отличаются от уже имеющихся. Однако тоже были некоторые проблемы, так как одновременно на этом проекте работали несколько человек, то все это надо было синхронизировать. Для этого использовался СВН, но с созданием новых экшенов было плохо. Они создавались в папки вида Action12, Action13, ... поэтому если несколько человек одновременно создали новый для своих нужд, то при коммите в СВН они начинались перекрываться. Решали эту проблему создав несколько пустых заранее (каждый для себя). К счастью менеджер объектов довольно успешно справлялся с работой нескольких пользователей (есть встроенная функция для мерджинга). Еще была проблема со вводом в ячейки таблицы, которые невозможно было добавить в менеджер объектов, но она все же была решена.

    ОтветитьУдалить
  3. "на мой взгяд, TestComplete лихо справляется со всеми этими проблемами. У нас на автоматизации он работает сутками, и, как ни странно, не падает))"

    значит у меня руки кривые, если запускается нормально он только в виртуалке,и может сильно зависнуть при запуске простейшего примера из учебника :(

    ОтветитьУдалить
  4. "значит у меня руки кривые, если запускается нормально он только в виртуалке,и может сильно зависнуть при запуске простейшего примера из учебника :( "

    Это не руки кривые, это карма тестировщика))))

    ОтветитьУдалить