Доброго времени суток хабру. Хочу начать с небольшого вступления, как к первому своему посту на ресурсе. Хабр я почитываю уже давно и мысли о регистрации время от времени посещали, но разбивались о железное «а зачем?». Простого желания отвечать на то да се, слава богу, оказывалось недостаточно. Видимо я по капле выжимал из себя тролля. И вот в один прекрасный день я понял что у меня есть кое-какие знания, которыми стоило бы поделиться с другими. Хотя бы для того, чтобы всегда знать где я смогу найти это, если сам вдруг забуду. Правда и этого оказалось недостаточно. Последней каплей стала статья одного человека, которому мне захотелось сказать спасибо, не за статью, а за образ мыслей и то что он вообще такой есть. Тут уж я понял — без регистрации этого не сделать никак.
Теперь же перейду непосредственно к теме.
Примерно год назад я сменил место работы и на новом месте мне предложили разобраться в интересном вопросе, а именно организации автоматизированного функционального тестирования Oracle Siebel CRM средствами Oracle OpenScript. «Почему бы и нет?» подумал я. К тому времени я почти ничего не знал о функциональном тестировании, об автоматизации тестирования, имел весьма поверхностное представление о Siebel, о существовании которого узнал около месяца как и только прошел базовое обучение по нему и, конечно же, ничего не знал об OpenScript. То-есть абсолютно никаких предпосылок думать, что может не получиться. Люблю я такие задачи и обычно умею с ними справляться.
Выбор инструмента для тестирования сомнений не вызывал, так как я почти ничего не знал ни из области тестирования ни о самой системе и претендовать на возможность оценить то или иное решение не стал. Коротко погуглил что еще бывает, нашел упоминания какого-то инструмента от майкрософт, еще одного о котором уже и забыл, почитал отзывы, зарядился позитивом — то что досталось мне точно не хуже и пошел на баррикады.
Баррикадами была документация от Oracle. Как по OpenScript так и по тестированию в целом. Функциональному, автоматизации, всё-всё. Это было занятное времяпровождение, к счастью в отличие от многих специалистов я предпочитаю читать инструкцию до первого применения, а не когда всё сломалось. Не буду врать, что прочитал вообще всё и, тем более что всё прочитанное сразу понял. Но определённое видение сложилось.
Сперва краткая информация для тех, кто, возможно не знает о Siebel и том как он работает. Детали, конечно же, лучше искать в гугле, в данном случае важна одна особенность: Siebel как система работает на своих серверах и общается с пользователем через веб-интерфейс. То есть пользователь Siebel всегда имеет дело с системой только через браузер, других вариантов нет. И до недавнего времени это были только IE либо FireFox 3.0 из-за того, что все работает на ActiveX. Тема того как именно оно работает на IE и как на эту работу влияет версия браузера — отдельный опус для плача Ярославны. Но суть, которую я хочу донести: наше функциональное тестирование является тестированием работы пользователя через браузер. Даже если сказать правильнее — эмуляцией работы пользователя через браузер. А это значит, что OpenScript по сути своей является инструментом взаимодействия с браузером в автоматическом режиме.
Забегая далеко вперёд для тех, кто в курсе дел сибелевых скажу, что с OpenUI я работу OpenScript не проверял. Хотя и не вижу проблем их взаимодействия, но всё же практической проверки пока не было.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/6b1/bd5/1da/6b1bd51da01f5b9e00cb6089e5f8e7a1.png)
То есть у нас есть Siebel который генерирует веб-страницы для пользователя. В этом Siebel есть определенная опция, включение которой активирует особый режим для совместимости с автоматизированным тестированием. После включения этой опции Siebel, кроме обычных веб-страниц, может генерировать внешне неотличимые, но содержащие внутри что-то, поддерживаемое так называемым Siebel API (ну или им и являющееся). Эта опция нужна для поддержки автоматизированного тестирования Siebel вообще, любым инструментом автоматизации. И вот, наш OpenScript может полноценно (почти) работать с элементами ActiveX, представляющими объекты CRM. Бледный прямоугольник с библиотекой это я и еще один парень, потом будет понятнее.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/df4/5ea/5c0/df45ea5c065bfb384ed3cfa7cfae4f66.png)
Итак, Oracle OpenSctipt является частью Oracle Application Testing Suite. Я должен был сказать это, ведь сам по себе он не распространяется (я не находил). В этот самый сьют кроме того входят: OATS Administrator, Oracle Test Manager и Oracle Load Testing. Первый — для управления пользователями и правами, второй — решение по управлению багами и фиксами, третий — решение для нагрузочного тестирования. Все они могут работать друг с другом, а могут по отдельности, кроме администратора, так как самому по себе ему нечего будет администрировать.
Из того что я знаю, могу сказать что да, он умеет делать тестирование обычных веб-страниц (ну конечно), Siebel, а также нагрузочное тестирование, основываясь на HTTP протоколе. Его Fuctional Test Module это некий модуль с общими функциями — клики мышкой, нажатия кнопок и прочие общие функции.
Кстати, презентуя этот инструмент внутри компании и некоторым клиентам, о Java я упоминал в последнюю очередь, сперва рассказывая про другие возможности. Но думаю людям здесь важно узнать, что там есть полнофункциональная Java. Действительно полнофункциональная — я подключал сторонние библиотеки, в одном месте даже используется создание окна GUI средствами Java. Так что при детальном углублении сделать с помощью этого OpenScript`а можно практически что угодно.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/76b/2b1/88e/76b2b188ee4f375ab75553a15ea33083.png)
Само собой это — результат жуткого издевательства над интерфейсом с помощью ножниц Windows 7. Зато показаны все основные элементы.
Кнопка с красным кружочком в верхней части: среда может выполнять запись действий пользователя. То есть нажимаем кнопку и можно открывать браузер и делать там что хочется, «контора пишет». Потом записанное можно воспроизвести. Что хорошо — записываются действия по внутренним XPath'ам элементов, а не по координатам кликов, так что такой автоматически сформированный код получается не совсем бесполезным, если даже на странице что-то изменилось или скрипт перенесли на другую машину.
Среда имеет визуальный редактор в виде дерева. Теоретически можно не писать скрипт тестирования, а накликивать его перетягиванием нужных функций и тестов из имеющейся библиотеки. Теоретически, потому что даже через девять месяцев после использования этой системы я не вижу практической возможности создать так хоть сколько-нибудь полезный скрипт. Хотя запись плюс этот визуальный редактор определенно позволяют делать вещи.
Ну и конечно Java. Можно писать свои методы, свои классы, подключать свои библиотеки. При этом свои методы можно определенным образом добавить в библиотеку визуального редактирования, что позволяет сделать ее не такой уж и бесполезной. В основном этим я и еще один парень и занимались — писали на Java всякие вещи, чтобы тестировщики потом могли обходиться визуальным созданием скрипта и подкладыванием данных в Excel-файлах под функции. Тот самый бледный прямоугольник на первой картинке.
И еще кое-что — изменение скрипта в визуальном редакторе приводит к изменению Java-кода. Изменение Java кода, если код не содержит ошибок, тут же отображается в визуальном редакторе. То есть эти два представления полностью синхронизированы средствами OpenScript. Правда чистый Java код оно нередко изображает в виде одного элемента " Java код" что сильно затрудняет понимание логики происходящего. Но есть определенные методы борьбы с этим. Правда делающие код не таким красивым, но зато дерево отображает структуру программы понятнее.
Запускать написанный скрипт тестирования (по сути это Java программа, но раз у нас инструмент «опен скрипт» — пусть будет скрипт) можно как прямо из среды, так и из командной строки. После этого компьютер лучше не трогать. Даже в документации так написано — лучше не трогать, а то может сбиться выполнение. Все же работа идет с браузером, как бы эмулируя пользователя. Естественно я не всегда придерживался этой рекомендации и должен сказать, что большинство действий нормально отрабатывает, даже когда что-то делаешь параллельно. То есть работа не завязана на перемещения мыши и нажатие клавиш на клавиатуре, все работает где-то в глубине, на уровне кодов. Но некоторые вещи все-таки не срабатывают. А что самое печальное — некоторые проверки не проходят корректно, но в результатах показывается, что все в порядке. Это уже связано с тем, что иногда разные ActiveX должны быть реально видны и активированы для выполнения тестового действия. Я так думаю, более реалистичной версии у меня пока нет.
Запустить два скрипта на выполнение одновременно на одной машине нельзя. Это если под одним пользователем. Но можно поставить OpenScript на компьютер, подключиться к нему по RDP несколькими разными пользователями и тогда каждый сможет работать со средой от своего имени и запускать выполнение скриптов. Он умеет работать в таком режиме и даже имеет автоматическое блокирование ресурсов, использующихся другими пользователями.
Результатом работы скрипта являются: короткая запись о времени выполнения и количестве ошибок (можно рассмотреть на картинке в нижней части экрана), а так же детальный лог, который можно экспортировать в виде html файла (почти нельзя разглядеть на картинке в правой половине экрана). В детальном логе все красиво: видно все шаги скрипта, соблюдена их иерархия — что куда вложено, время выполнения каждого шага, пройден ли он, если нет то сообщение об ошибке, которое дублируется на всех узловых шагах до самого верха иерархии. В общем, красота. К сожалению, информативность этого лога невысокая, когда дело касается реальных проверок. По крайней мере, по умолчанию. А уж как работать с множеством тестов, а это ведь система автоматизации, когда у тебя в результате наберется несколько сотен таких красивых файлов — совсем непонятно. Впрочем, понятно — Oracle TestManager в помощь.
Мы в результате написали свой лог, сперва в текстовый файл, а потом и в Excel, а на лог по умолчанию тестировщики смотрят в крайнем случае.
Oracle OpenScript определенно можно использовать для автоматизации тестирования. Причем даже из коробки его замечательная функция записи действий и простой визуальный редактор помогут создать простенькие скрипты для основных проверок. Да, результатом таких проверок будет, как правило, только дошел скрипт до конца или где-то упал, но это тоже не плохо. Тем более что место где он упал будет четко видно в логе, даже со скриншотом. Но главное что в нем есть — это Java, открывающая огромные возможности по кастомизации процесса. Сделать можно что угодно. И если при работе именно с Siebel есть еще дополнительное ограничение в виде информации, которую сам Siebel передает через свое API чтобы как-то с ним работать автоматизировано то при тестировании обычных веб-страниц этой проблемы не будет. Мое впечатление от работы с этим инструментом положительное, мне бы времени и знаний, и четкую задачу, и много денег, и пару красивых тестировщиц, и… А, да, в общем, я думаю потенциально это очень хороший инструмент, но требует знаний Java и вложения времени для получения действительно хорошего результата.
Если тема кого-нибудь заинтересует – я могу продолжить делиться своим опытом работы в этом направлении, некоторыми наблюдениями и результатами. Самой написанной библиотекой поделиться не смогу, так как очень стыдно за свой код (Java на практике я начал применять впервые) да и это вроде как интеллектуальная собственность моего работодателя (отличная же отмазка!).
Теперь же перейду непосредственно к теме.
С чего все началось
Примерно год назад я сменил место работы и на новом месте мне предложили разобраться в интересном вопросе, а именно организации автоматизированного функционального тестирования Oracle Siebel CRM средствами Oracle OpenScript. «Почему бы и нет?» подумал я. К тому времени я почти ничего не знал о функциональном тестировании, об автоматизации тестирования, имел весьма поверхностное представление о Siebel, о существовании которого узнал около месяца как и только прошел базовое обучение по нему и, конечно же, ничего не знал об OpenScript. То-есть абсолютно никаких предпосылок думать, что может не получиться. Люблю я такие задачи и обычно умею с ними справляться.
Выбор инструмента для тестирования сомнений не вызывал, так как я почти ничего не знал ни из области тестирования ни о самой системе и претендовать на возможность оценить то или иное решение не стал. Коротко погуглил что еще бывает, нашел упоминания какого-то инструмента от майкрософт, еще одного о котором уже и забыл, почитал отзывы, зарядился позитивом — то что досталось мне точно не хуже и пошел на баррикады.
Баррикадами была документация от Oracle. Как по OpenScript так и по тестированию в целом. Функциональному, автоматизации, всё-всё. Это было занятное времяпровождение, к счастью в отличие от многих специалистов я предпочитаю читать инструкцию до первого применения, а не когда всё сломалось. Не буду врать, что прочитал вообще всё и, тем более что всё прочитанное сразу понял. Но определённое видение сложилось.
Итак, что же такое Oracle OpenScript
Сперва краткая информация для тех, кто, возможно не знает о Siebel и том как он работает. Детали, конечно же, лучше искать в гугле, в данном случае важна одна особенность: Siebel как система работает на своих серверах и общается с пользователем через веб-интерфейс. То есть пользователь Siebel всегда имеет дело с системой только через браузер, других вариантов нет. И до недавнего времени это были только IE либо FireFox 3.0 из-за того, что все работает на ActiveX. Тема того как именно оно работает на IE и как на эту работу влияет версия браузера — отдельный опус для плача Ярославны. Но суть, которую я хочу донести: наше функциональное тестирование является тестированием работы пользователя через браузер. Даже если сказать правильнее — эмуляцией работы пользователя через браузер. А это значит, что OpenScript по сути своей является инструментом взаимодействия с браузером в автоматическом режиме.
Забегая далеко вперёд для тех, кто в курсе дел сибелевых скажу, что с OpenUI я работу OpenScript не проверял. Хотя и не вижу проблем их взаимодействия, но всё же практической проверки пока не было.
Вкратце схема того как это работает
![image](https://habrastorage.org/getpro/habr/post_images/6b1/bd5/1da/6b1bd51da01f5b9e00cb6089e5f8e7a1.png)
То есть у нас есть Siebel который генерирует веб-страницы для пользователя. В этом Siebel есть определенная опция, включение которой активирует особый режим для совместимости с автоматизированным тестированием. После включения этой опции Siebel, кроме обычных веб-страниц, может генерировать внешне неотличимые, но содержащие внутри что-то, поддерживаемое так называемым Siebel API (ну или им и являющееся). Эта опция нужна для поддержки автоматизированного тестирования Siebel вообще, любым инструментом автоматизации. И вот, наш OpenScript может полноценно (почти) работать с элементами ActiveX, представляющими объекты CRM. Бледный прямоугольник с библиотекой это я и еще один парень, потом будет понятнее.
Немного о том что такое OpenScript как решение
![image](https://habrastorage.org/getpro/habr/post_images/df4/5ea/5c0/df45ea5c065bfb384ed3cfa7cfae4f66.png)
Итак, Oracle OpenSctipt является частью Oracle Application Testing Suite. Я должен был сказать это, ведь сам по себе он не распространяется (я не находил). В этот самый сьют кроме того входят: OATS Administrator, Oracle Test Manager и Oracle Load Testing. Первый — для управления пользователями и правами, второй — решение по управлению багами и фиксами, третий — решение для нагрузочного тестирования. Все они могут работать друг с другом, а могут по отдельности, кроме администратора, так как самому по себе ему нечего будет администрировать.
OpenScript является инструментом с целым множеством модулей.
Он создан не только для тестирования Сибель, о нет! Он умеет многое. Приведу список всех модулей из документации, я не знаю большинства этих названий, но может кто-то узнает нужное ему и заинтересуется:- Web Functional Test Module
- HTTP Module
- Oracle EBS/Forms Functional Test Module
- Oracle EBS/Forms Load Test Module
- Oracle Fusion/ADF Functional Test Module
- Oracle Fusion/ADF Load Test Module
- Adobe Flex Functional Test Module
- Adobe Flex (AMF) Load Test Module
- Hyperion Load Test Module
- JD Edwards Functional Test Module
- JD Edwards Load Test Module
- PeopleSoft Load Test Module
- Web Services Module
- Siebel Functional Test Module
- Siebel Load Test Module
Из того что я знаю, могу сказать что да, он умеет делать тестирование обычных веб-страниц (ну конечно), Siebel, а также нагрузочное тестирование, основываясь на HTTP протоколе. Его Fuctional Test Module это некий модуль с общими функциями — клики мышкой, нажатия кнопок и прочие общие функции.
Что представляет из себя само приложение?
По сути это Eclipse с дополнительными модулями. А это значит, все правильно, что скрипты тестирования пишутся на Java. Используется версия 1.6 и я не уверен что получится использовать другую вручную. Oracle же пока новую версию из коробки не внедрил.Кстати, презентуя этот инструмент внутри компании и некоторым клиентам, о Java я упоминал в последнюю очередь, сперва рассказывая про другие возможности. Но думаю людям здесь важно узнать, что там есть полнофункциональная Java. Действительно полнофункциональная — я подключал сторонние библиотеки, в одном месте даже используется создание окна GUI средствами Java. Так что при детальном углублении сделать с помощью этого OpenScript`а можно практически что угодно.
Как это выглядит
![image](https://habrastorage.org/getpro/habr/post_images/76b/2b1/88e/76b2b188ee4f375ab75553a15ea33083.png)
Само собой это — результат жуткого издевательства над интерфейсом с помощью ножниц Windows 7. Зато показаны все основные элементы.
Кнопка с красным кружочком в верхней части: среда может выполнять запись действий пользователя. То есть нажимаем кнопку и можно открывать браузер и делать там что хочется, «контора пишет». Потом записанное можно воспроизвести. Что хорошо — записываются действия по внутренним XPath'ам элементов, а не по координатам кликов, так что такой автоматически сформированный код получается не совсем бесполезным, если даже на странице что-то изменилось или скрипт перенесли на другую машину.
Среда имеет визуальный редактор в виде дерева. Теоретически можно не писать скрипт тестирования, а накликивать его перетягиванием нужных функций и тестов из имеющейся библиотеки. Теоретически, потому что даже через девять месяцев после использования этой системы я не вижу практической возможности создать так хоть сколько-нибудь полезный скрипт. Хотя запись плюс этот визуальный редактор определенно позволяют делать вещи.
Ну и конечно Java. Можно писать свои методы, свои классы, подключать свои библиотеки. При этом свои методы можно определенным образом добавить в библиотеку визуального редактирования, что позволяет сделать ее не такой уж и бесполезной. В основном этим я и еще один парень и занимались — писали на Java всякие вещи, чтобы тестировщики потом могли обходиться визуальным созданием скрипта и подкладыванием данных в Excel-файлах под функции. Тот самый бледный прямоугольник на первой картинке.
И еще кое-что — изменение скрипта в визуальном редакторе приводит к изменению Java-кода. Изменение Java кода, если код не содержит ошибок, тут же отображается в визуальном редакторе. То есть эти два представления полностью синхронизированы средствами OpenScript. Правда чистый Java код оно нередко изображает в виде одного элемента " Java код" что сильно затрудняет понимание логики происходящего. Но есть определенные методы борьбы с этим. Правда делающие код не таким красивым, но зато дерево отображает структуру программы понятнее.
Запускать написанный скрипт тестирования (по сути это Java программа, но раз у нас инструмент «опен скрипт» — пусть будет скрипт) можно как прямо из среды, так и из командной строки. После этого компьютер лучше не трогать. Даже в документации так написано — лучше не трогать, а то может сбиться выполнение. Все же работа идет с браузером, как бы эмулируя пользователя. Естественно я не всегда придерживался этой рекомендации и должен сказать, что большинство действий нормально отрабатывает, даже когда что-то делаешь параллельно. То есть работа не завязана на перемещения мыши и нажатие клавиш на клавиатуре, все работает где-то в глубине, на уровне кодов. Но некоторые вещи все-таки не срабатывают. А что самое печальное — некоторые проверки не проходят корректно, но в результатах показывается, что все в порядке. Это уже связано с тем, что иногда разные ActiveX должны быть реально видны и активированы для выполнения тестового действия. Я так думаю, более реалистичной версии у меня пока нет.
Запустить два скрипта на выполнение одновременно на одной машине нельзя. Это если под одним пользователем. Но можно поставить OpenScript на компьютер, подключиться к нему по RDP несколькими разными пользователями и тогда каждый сможет работать со средой от своего имени и запускать выполнение скриптов. Он умеет работать в таком режиме и даже имеет автоматическое блокирование ресурсов, использующихся другими пользователями.
Результатом работы скрипта являются: короткая запись о времени выполнения и количестве ошибок (можно рассмотреть на картинке в нижней части экрана), а так же детальный лог, который можно экспортировать в виде html файла (почти нельзя разглядеть на картинке в правой половине экрана). В детальном логе все красиво: видно все шаги скрипта, соблюдена их иерархия — что куда вложено, время выполнения каждого шага, пройден ли он, если нет то сообщение об ошибке, которое дублируется на всех узловых шагах до самого верха иерархии. В общем, красота. К сожалению, информативность этого лога невысокая, когда дело касается реальных проверок. По крайней мере, по умолчанию. А уж как работать с множеством тестов, а это ведь система автоматизации, когда у тебя в результате наберется несколько сотен таких красивых файлов — совсем непонятно. Впрочем, понятно — Oracle TestManager в помощь.
Мы в результате написали свой лог, сперва в текстовый файл, а потом и в Excel, а на лог по умолчанию тестировщики смотрят в крайнем случае.
Краткий итог
Oracle OpenScript определенно можно использовать для автоматизации тестирования. Причем даже из коробки его замечательная функция записи действий и простой визуальный редактор помогут создать простенькие скрипты для основных проверок. Да, результатом таких проверок будет, как правило, только дошел скрипт до конца или где-то упал, но это тоже не плохо. Тем более что место где он упал будет четко видно в логе, даже со скриншотом. Но главное что в нем есть — это Java, открывающая огромные возможности по кастомизации процесса. Сделать можно что угодно. И если при работе именно с Siebel есть еще дополнительное ограничение в виде информации, которую сам Siebel передает через свое API чтобы как-то с ним работать автоматизировано то при тестировании обычных веб-страниц этой проблемы не будет. Мое впечатление от работы с этим инструментом положительное, мне бы времени и знаний, и четкую задачу, и много денег, и пару красивых тестировщиц, и… А, да, в общем, я думаю потенциально это очень хороший инструмент, но требует знаний Java и вложения времени для получения действительно хорошего результата.
Послесловие
Если тема кого-нибудь заинтересует – я могу продолжить делиться своим опытом работы в этом направлении, некоторыми наблюдениями и результатами. Самой написанной библиотекой поделиться не смогу, так как очень стыдно за свой код (Java на практике я начал применять впервые) да и это вроде как интеллектуальная собственность моего работодателя (отличная же отмазка!).