автоматизация тестирования с помощью скриптов
Автоматизация тестирования ПО
Введение
Обычно под автоматизацией тестирования подразумевается что-то из списка:
WEB: Симуляция действий пользователя
Можно изучить эту библиотеку и использовать вместе с одним из следующих языков программирования:
Выбор языка
Что делать, если вы пока нигде не работаете?
Советую изучить сайты с вакансиями и выучить ту связку, на которую больше спрос.
Я пользовался связками
Python я выбрал, потому что немного знал язык + он присутствует во многих вакансиях.
Java я выбрал, потому что это наиболее родной язык, часть Selenium написано на Java + в интернете довольно много самоучителей именно по этой связке.
Учить сам Selenium необязательно. Существует несколько фреймворков более высокого уровня с «более простыми» командами, рассчитанные на непрограммистов.
Самый популярный из них это, пожалуй Robot Framework
Автоматическое тестировани API
Как обращаться к REST API с помощью Python 3 вы можете узнать здесь
Примеры обращений к API GitHub с помощью curl можете изучть здесь
Написание скриптов для тестирования производительности
В этой дисциплине понадобится знание хотя бы одного языка программирвоания.
Выбор широк и завист от стэка компании. Но в целом это может быть как Bash Scripting так и Python или Golang
Пример простейшего Bash скрипта, который мониторит состояние системы можете изучить здесь
Внедрение тестовых скриптов в существующий CI/CD процесс.
Автоматизация тестирования программных систем
Приветственное слово
Здравствуйте, уважаемые хабрапользователи! Хочу представить вашему вниманию статью, в которой речь пойдёт о тестировании программных систем, его автоматизации, а также средствах для этого используемых.
На сегодняшний день уже мало кто сомневается в целесообразности проведения процесса тестирования разрабатываемых программных продуктов, но, к сожалению, не все ясно себе представляют как тестирование грамотно внедрять и применять. Корифеям-тестировщикам моя статья не принесёт практической пользы, а вот интересующихся тематикой новичков порадовать есть чем.
Изначально я не ставлю своей целью охватить всю проблемную область. На это не хватит и серии книг, которую мне, к тому же, не хватит знаний и опыта написать. Основная задача статьи — не растекаясь мыслью по древу, создать у читателя достаточно чёткую картину того, что вообще из себя представляет автоматизация тестирования и когда, а также с чем её едят.
Основные понятия
Начну с небольшого теоретического экскурса.
Итак, под тестированием принято понимать деятельность, выполняемую для оценки и улучшения качества ПО. В общем случае тестирование базируется на обнаружении дефектов и проблем в программных системах.
Автоматизированное тестирование ПО — процесс тестирования программного обеспечения, при котором основные функции и шаги теста, такие как запуск, инициализация, выполнение, анализ и выдача результата, производятся автоматически с помощью инструментов для автоматизированного тестирования.
В свою очередь, инструмент для автоматизированного тестирования — это программное обеспечение, посредством которого осуществляется создание, отладка, выполнение и анализ результатов прогона тест-скриптов (Test Scripts — это наборы инструкций для автоматической проверки определенной части программного обеспечения).
Тестирование программных систем состоит из динамической верификации поведения программ на конечном наборе тестов. При этом тесты выбираются из обычно выполняемых действий прикладной области и обеспечивают проверку соответствия ожидаемому поведению системы.
Применение автоматизированного тестирования
Первым пунктом в этом списке стоит тестирование производительности. Нагрузочное, стрессоустойчивое, тестирование на стабильность… Без автоматизации его выполнение трудно себе представить. По этой причине имеется широкий выбор продуктов от разных производителей и столь же высокие цены, даже в случае неудобного и слабо функционального инструмента.
Следом идёт регрессионное тестирование. Означает оно проверку ПО на корректность функциональности, выпущенной и протестированной в предыдущей версии. Выполняется с регулярной частотой, задаваемой в зависимости от условий: у кого-то с каждым новым билдом, а у кого-то с каждой версией для заказчика.
Конфигурационное тестирование – выполнение одних и тех же тестов в разных условиях. То есть когда один или несколько компонентов архитектуры системы требуется проверить в разном окружении, обычно заявленном в изначальных требованиях. Например: поддержка СУБД от разных производителей, работа в разных клиентских браузерах, использование в нескольких ОС и т.п. То есть некий аналог регрессионного тестирования, но в рамках одной версии системы.
Функциональное тестирование. Ясно, что здесь речь идёт о проверке нового функционала. Иногда бывает, что без автоматизации никак не обойтись. Даже если нужно выполнить тестирование только один раз. Обычно, впоследствии эти тесты и используются для регресса.
Установочное тестирование, выполняется для проверки условий инсталляции (и настройки) продукта с учётом тех или иных требований к системе от заказчика.
«А зачем?»
Как автоматизировать тестирование?
Вернее даже будет сказать так: как подойти к внедрению процесса автоматизации тестирования в своей деятельности?
Во-первых, следует обратить внимание, насколько хорошо инструмент для автоматизации распознает элементы управления в приложении. В случае, когда элементы не распознаются, стоит поискать плагин, либо соответствующий модуль. Если такового нет – от инструмента лучше отказаться.
Во-вторых, нужно иметь в виду, сколько времени требуется на поддержку скриптов, написанных с помощью выбранного инструмента. Для этого можно записать простой скрипт, который выбирает пункт меню, а потом представить, что изменился пункт меню, который необходимо выбрать. Если для восстановления работоспособности сценария придется перезаписать скрипт целиком, то инструмент не оптимален, так как реальные сценарии гораздо сложнее.
И последний момент, на который надо обратить внимание – насколько удобен инструмент для написания новых скриптов. Сколько требуется на это времени, насколько можно структурировать код, насколько код читаем, и т.д.
На финишной прямой
Чтобы принять окончательное решение о целесообразности применения автоматизации, обычно советуют ответить на возникающий естественным образом в данной ситуации вопрос: «превалируют ли в нашем случае преимущества над недостатками?». Если недостатки в конкретном случае неприемлемы, то от автоматизации стоит воздержаться.
Выбор инструмента
Чаще всего зависит от объекта тестирования и требований к тестовым сценариям, т.к., разумеется, инструменты тестирования не могут поддерживать полный объём технологий, используемых при разработке приложений. Таким образом, выбор инструмента сводится к банальному методу проб и ошибок. В итоге, нередко тестировщики выбирают несколько инструментов для тестирования функций приложения.
Логично теперь будет поближе рассмотреть некоторые популярные средства автоматизации тестирования и привести пример написания простого тест-скрипта.
HP QuickTest Professional
Средство автоматизации от кампании Hewlett-Packard. Распространяется на платной основе (8000-10000 USD). Является основным инструментом автоматизации функционального тестирования от данного производителя. Позволяет автоматизировать функциональные и регрессионные тесты через записи действий пользователя при работе с тестируемым приложением, а потом исполнять записанные действия с целью проверки работоспособности ПО.
Записанные действия сохраняются в виде скриптов.
Скрипты могут быть отображенные в инструменте как VBScript (expert view), или же как визуальные последовательные шаги с действиями (keyword view).
Каждый шаг может быть отредактирован и на него можно добавить точки проверки (checkpoint), которые сравнивают ожидаемый результат с полученным.
IBM Rational Functional Tester
Тоже платный, но не настолько («всего-то» 6000 USD).
Rational Functional Tester предоставляет тестировщикам средства автоматизированного тестирования, позволяющие выполнять функциональное тестирование, регрессивное тестирование, тестирование пользовательского интерфейса и тестирование управляемое данными.
Много описательной информации о нём не дам, а лучше приведу практический пример.
Пример использования
Будет использована интеграция IBM Rational Functional Tester со средой разработки Microsoft Visual Studio. Для создания функционального теста необходимо выполнить следующие действия:
1) В среде разработки Microsoft Visual Studio создать новый проект «Functional Test Project»:
2) Выполнить запись пользовательских действий с тестируемым приложением:
3) Создать проверочную точку в процессе выполнения записи. Проверочная точка также будет выполнять проверку значения в выпадающем списке:
4) Сохранить результаты записи:
Результат выполнения
Автоматизация тестирования Web-приложений
Автоматизация тестирования – место встречи двух дисциплин: разработки и тестирования. Наверное поэтому, я отношу эту практику к сложным, но интересным.
Зачем так сложно?
Слои приложения в автоматизированном тестировании
Технический драйвер
Создадим отдельный класс, который возьмет на себя логику чтения конфига, создания и уничтожения веб-драйвера.
Стало немного лучше. Теперь мы уверены, что всегда-будет использоваться только один веб-драйвер. Все настройки в конфиге, поэтому мы можем менять драйвер и другие настройки без перекомпиляции.
Контекст тестирования
Page Objects
Паттерн Page Objects хорошо зарекомендовал себя в автоматизации тестирования.
Основная идея – инкапсулировать логику поведения страницы в классе страницы. Таким образом, тесты будут работать не с низкоуровневым кодом технического драйвера, а с высокоуровневой абстракцией.
Чего не хватает в Page Objects
И «виджет» с результатами
В NuGet есть пакет WebDriver.Support с прекрасным методом PageFactory.InitElements.
Метод хорош, но имеет побочные эффекты. PageFactory из пакета WebDriver.Support возвращает прокси и не дожидается загрузки элемента. При этом, если все методы синхронизации работают с классом By, который пока не умеет работать с атрибутом FindsBy.
Эта проблема решается созданием базового класса Page.
Для того, чтобы реализовать метод WaitUntilLoaded достаточно собрать все публичные свойства с атрибутами FindBy и воспользоваться классом WebDriverWait. Я опущу техническую реализацию этих методов. Важно, что на выходе мы получим простой и изящный код:
Остался последний неудобный случай. Существуют некоторые виджеты, которые скрывают/показывают часть элементов в зависимости от состояния. Разбивать такой виджет на несколько с одним свойством каждый – нецелесообразно.
Решение тоже нашлось.
Не буду утомлять технической реализаций этих методов. Давайте посмотрим, как будет выглядеть код после рефакторинга.
Тесты
Перепишем тест еще раз
Уже почти идеально. Вынесем магические строки в атрибут TestCase и добавим комментарий к Assert’у
Гайдлайн автоматизатора
Автоматизированное тестирование — это просто! Как я тестировал Печкина
Не так давно стал посматривать в сторону Selenium WebDriver, который в связке с PageObject становится прекрасным инструментом для автоматизированного тестирования. Те, кто не знаком с Selenuim, могут ознакомиться в этой статье, а здесь можно прочесть конкретно про Selenium WebDriver.
Настройка окружения
Скачиваем последнюю версию Maven с оф. сайта
Распаковываем в любую директорию, например в C:\Program Files\maven\
Добавляем переменную окружения: M2_HOME=C:\Program Files\maven\ и в PATH добавляем %M2_HOME%\bin
Проверим, что все сделано верно:
Должно показать версию Maven’a
3. В качестве архитектурного решения мы будем использовать архитип Алексея Баранцева (barancev). Заберем архитип с github’a
Перейдем в папку с архитипом и установим его
Следующим шагом будет создание проекта, это мы сделаем командой:
где ru.mail.pechkin — id создаваемого проекта, PechkinFuncTest — артефакт id создаваемого проекта
Вперед к практике!
Для наглядности мы будем тестировать страницу регистрации Печкина, состоящую их 4-х текстовых полей, 2-х чекбоксов и кнопки регистрации. С них мы и начнем, но вначале нам необходимо немного настроить наш проект.
Отредактируем pom.xml:
Будем использовать последнюю версию Selenium WebDriver
Остается в application.properties указать URL сайта и браузер, в котором будет происходить тестирование.
Лирическое отступление
Прежде чем начнем писать код, необходимо познакомиться с PageObject. Грубо говоря, PageObject — это шаблон проектирования, который разделяет высокоуровневую логику от низкоуровневой логики поиска и использования элементов интерфейса, при этом повышается читаемость и поддержка кода.
В результате получается отдельный класс, описывающий, в нашем случае, конкретную страницу (WebElement’ы), а так же способы взаимодействия с ними.
Приступим
В ru.mail.pechkin.pages создаем RegistrationPage.java. Это и будет наш шаблон страницы регистрации. Начнем описывать поля. Как было сказано выше, мы имеем:
1. Четыре текстовых поля:
3. Кнопку регистрации:
Вооружившись инспектором кода, определяем локаторы этих элементов. Наш объект будет выглядеть следующим образом:
Следующим шагом будет создание методов, через которые мы будем работать со страницей
Еще нам понадобится отслеживать сообщение ошибки при вводе не корректного email.
10 лучших инструментов для автоматизации тестирования ПО
Привет, Хабр! Представляю вашему вниманию перевод статьи «Top 10 Automated Software Testing Tools» автора Pratik Satasiya.
Боб Иган, директор по исследованиям Sepharim Research, говорил о мобильной безопасности. Он выступил с заявлением на Enterprise Mobility Trends 2016:
«Современный десктоп на самом деле не десктоп, а опыт, который нужен в данный момент».
Он также добавил, что мы попадаем в поколение, где будут разработаны приложения, специально предназначенные для простой и эффективной работы. Я согласен с этим и считаю, что мы очень зависимы от минимизации наших рабочих усилий с помощью различных инструментов.
Внедрение приложений, уменьшающих усилия, быстро охватывает следующие отрасли:
Вот обзор самых популярных инструментов автоматизации тестирования программного обеспечения, которые помогут тем, кто занимается тестированием программного обеспечения.
10 лучших инструментов для автоматического тестирования программного обеспечения
1. Selenium
Selenium — это среда тестирования для тестирования веб-приложений в различных браузерах и платформах, таких как Windows, Mac и Linux. Selenium помогает тестировщикам писать тесты на разных языках программирования, таких как Java, PHP, C #, Python, Groovy, Ruby и Perl. Selenium предлагает функции записи и воспроизведения для написания тестов без изучения Selenium IDE.
Selenium с гордостью поддерживает некоторых из крупнейших, известных производителей браузеров, которые уверены, что Selenium является родной частью их браузера. Selenium, является основой для большинства других инструментов тестирования программного обеспечения в целом.
2. TestingWhiz
TestingWhiz — это инструмент автоматизации тестирования со сценариями без кода от Cygnet Infotech, поставщика ИТ решений 3-го уровня CMMi. Редакция Enterprise инструмента TestingWhiz предлагает полный пакет различных решений для автоматизированного тестирования, таких как веб-тестирование, тестирование программного обеспечения, тестирование баз данных, тестирование API, тестирование мобильных приложений, обслуживание набора регрессионных тестов, оптимизация и автоматизация, а также межбраузерное тестирование.
TestingWhiz предлагает различные функции, такие как:
3. HPE Unified Functional Testing (HP – UFT ранее QTP)
HP QuickTest Professional был переименован в HPE Unified Functional Testing. HPE UFT предлагает автоматизацию тестирования для функционального и регрессионного тестирования для программных приложений.
Язык сценариев Visual Basic Scripting Edition используется этим инструментом для регистрации процессов тестирования и управления различными объектами и элементами управления при тестировании приложений.
QTP предлагает различные функции, такие как:
4. TestComplete
TestComplete — это функциональная платформа тестирования, которая предлагает различные решения для автоматизации тестирования настольных, мобильных приложений компанией SmartBear Software.
TestComplete предлагает следующие функции:
5. Ranorex
Ranorex Studio предлагает инструменты автоматизации тестирования, которые охватывают тестирование всех десктопных и мобильных приложений.
Ranorex предлагает следующие функции:
6. Sahi
Sahi — инструмент для автоматизации тестирования веб-приложений. Sahi с открытым исходным кодом написан на языках программирования Java и JavaScript.
Sahi предоставляет следующие возможности:
7. Watir
Watir — это инструмент тестирования с открытым исходным кодом, состоящий из библиотек Ruby, для автоматизации тестирования веб-приложений. Это произносится как «вода».
Watir предлагает следующие функции:
8. Tosca Testsuite
Tosca Testsuite от Tricentis использует автоматизацию тестирования на основе моделей для автоматизации тестирования программного обеспечения.
Tosca Testsuite обладает следующими возможностями:
9. Telerik TestStudio
Telerik TestStudio предлагает одно решение для автоматизации тестирования десктопных, мобильных приложений, включая тестирование пользовательского интерфейса, нагрузку и производительность.
Telerik TestStudio предлагает различные совместимости, такие как:
10. Katalon Studio
Katalon Studio — это бесплатное решение для автоматизации тестирования, разработанное компанией Katalon LLC. Программное обеспечение построено на основе сред автоматизации с открытым исходным кодом Selenium, Appium со специализированным интерфейсом IDE для тестирования API, веб-приложений и мобильных устройств. Этот инструмент включает в себя полный пакет мощных функций, которые помогают преодолеть общие проблемы в автоматизации тестирования веб-интерфейса.
Katalon Studio состоит из следующих функций:
В индустрии тестирования программного обеспечения должно быть много разных инструментов автоматического тестирования программного обеспечения.
А что из инструментов автоматического тестирования используете вы?