Какой из фреймворков для автоматизации тестирования является самым популярным
Методы разработки программного обеспечения не стоят на месте, то же можно сказать и об используемых для разработки ПО инструментах и технологиях. В первую очередь, такое совершенствование необходимо для того, чтобы продуктивность и качество создаваемого продукта увеличились, время, необходимое для разработки, сократилось, а заказчик остался доволен полученным результатом. Таким образом, можно смело заявить, что тестирование играет важную роль в разработке качественного продукта.
Не так давно свет увидел World Quality Report 2017–2018 (Мировой стандарт проверки качества), выпущенный благодаря совместному труду сразу нескольких крупных компаний (Capgemini, Sogeti и Micro Focus), в котором было отмечено ряд интересных трендов в разработке и тестировании программного обеспечения. Авторы этого отчета считают, что основные направления в развитии разработки ПО заключаются в постоянном совершенствовании автоматизации тестирования и повсеместном применении гибких и DevOps-методологий (методология, которая объединяет в себе работу программистов и системных администраторов). Так, в данном отчете указано, что компаниям необходимо внедрять интеллектуальную автоматизацию и смарт-аналитику, для того чтобы ускорить процессы принятия ключевых решений и валидации продукта. Благодаря таким нововведениям компании смогут более эффективно справляться с тестированием интеллектуальных устройств нового поколения и высокоинтегрированных продуктов, изменения в которые вносятся постоянно. В отчете также говорится о необходимости создания интеллектуальных платформ для тестирования, характеризующихся высоким уровнем адаптивности. Благодаря таким платформам можно будет обеспечить эффективную поддержку полного жизненного цикла приложения.
В области тестирования ПО инструменты автоматизации, безусловно, играют ключевую роль. В данной статье кратко описываются наиболее популярные инструменты и фреймворки для автоматизации тестирования программного обеспечения, применение которых поможет компаниям идти в ногу с тенденциями в области тестирования ПО. Мы включили в данный список как коммерческие инструменты, так и инструменты с открытым исходным кодом.
Carina
Carina - это основанная на Java инфраструктура автоматизации тестирования, построенная на самых популярных фреймворках с открытым исходным кодом (Selenium, Appium, TestNG), которая позволяет снизить зависимость от конкретного стека технологий.
Объединяет все уровни тестирования: мобильные приложения (веб, нативные, гибридные), веб-приложения, REST-сервисы, базы данных.
Поддерживает все популярные браузеры (IE, Safari, Chrome, Firefox) и мобильные устройства (iOS / Android).
Поскольку этот фреймворк построен на Java, он кроссплатформенный. Тесты могут быть легко выполнены как на Unix, так и на ОС Windows.
Фреймворк поддерживает различные типы баз данных - как реляционные, так и нереляционные (MySQL, SQL Server, Oracle, PostgreSQL).
Тестирование API в Carina основано на шаблонном движке Freemarker. Это обеспечивает большую гибкость при создании запросов REST, а ответы динамически изменяются с помощью входящих аргументов.
TestComplete
TestComplete, созданный SmartBear, является эффективным инструментом для тестирования десктопных, мобильных и веб-приложений. TestComplete поддерживает различные языки сценариев, такие как: JavaScript, VBScript, Python и C ++ Script. Также как и в случае с рассмотренным ранее Katalon Studio, с помощью TestComplete тестировщики могут выполнять тестирование с использованием ключевых слов и управляемое данными тестирование. В инструменте также предусмотрена удобная функция записи и воспроизведения процесса тестирования.
TestComplete обладает схожей с UTF функцией распознавания объектов GUI, благодаря которой происходит автоматическое обнаружение и обновление объектов пользовательского интерфейса, что помогает избежать лишних хлопот по поддержанию тестовых скриптов при изменении AUT. Данный инструмент также интегрируется с Jenkins в течение CI-процесса.
Cucumber
Cucumber - это инструмент разработки на основе поведения (BDD), который используется для написания приемочных тестов для веб-приложений. Это лучший инструмент для тех, кто мало или совсем не обладает техническими знаниями в области тестирования, поскольку им не нужно прилагать усилия для чтения кода, который они не понимают.
Cucumber ориентирован на конечного пользователя. Вы можете вовлечь в процесс бизнес-партнеров или других людей, не знакомых с тестированием, так как отчеты о тестировании написаны на понятном языке.
IBM Rational Functional Tester
Еще одной интересной особенностью платформы RFT является возможность ее интеграции с системами управления жизненным циклом приложений IBM Jazz (например, IBM Rational Team Concert и Rational Quality Manager).
Браузерные тесты удобно запускать через Selenium
Когда речь идет о фреймворке для браузерных тестов, мы делаем выбор в пользу Selenium. Несколько лет назад, это был единственный крупный проект для автоматизации тестирования через web интерфейс. Сейчас уже появились новые решения, но зато экосистема Selenium остается одной из самых зрелых.
Например, библиотека Selenium для Python включает в себя класс ActionChains. Он позволяет создавать цепочки действий с клавиатурой и мышью. Например, вы можете передвигать курсор на элемент разворачивающий список или меняющий свое состояние при наведении. Также можно имитировать нажатия на клавиши, что иногда требуется в некоторых поля ввода, когда стандартный метод send_keys из Selenium не работает.
переключение между вкладками,
ожидание исчезновения элемента со страницы,
имитация нажатий клавиш и использование ActionChains,
ожидание скачанного файла
Вот некоторые примеры этих методов в коде:
К тому же в базовой библиотеке есть только основные методы, которые плохо работают с динамическими страницами. Часто нужно применять интеллектуальные ожидания для элементов страницы: видимости, изменения атрибутов, изменения текста, внутреннего id элемента, доступности для взаимодействия и так далее.
Это очень важно в реальных тестах. Например, чтобы начать вводить в поле ввода данные, нужно сперва дождаться появления элемента на странице, затем проверить его видимость, доступность для ввода, и только после этого начать вводить данные. Если использовать чистый Selenium, то придется в каждом тесте прописывать эти действия, удобнее вынести это всё в отдельный метод и просто его использовать.
А вот и исходный код метода:
Распознавание изображений с PyAutoGUI
PyAutoGUI — это хороший и простой фреймворк для написания несложных тестов под десктоп. Он позволяет управлять клавиатурой и мышью, то есть имитировать нажатия на клавиши, двигать курсором и производить клики. Кроме этого PyAutoGUI умеет находить координаты на экране по референсному скриншоту. Поиска по пиксельному совпадению обычно бывает достаточно, потому что тесты обычно гоняются на одном и том же окружении, с одним разрешением и на изолированных экранах.
С одной стороны, чтобы прогнать тест, нужно всего лишь сделать скриншот и использовать его. Но с другой стороны изменение шрифта, размеров элементов требует новых и новых скриншотов.
Мы решили эту проблему, реализовав поиск элемента по нескольким эталонным скриншотам, был добавлен метод, который в течение указанного промежутка времени ищет и по очереди сопоставляет каждый из эталонных скриншотов с тем, что сейчас отображено на экране. Если за один проход нужные элементы не были обнаружены, метод делает повторные попытки, пока не найдет совпадение или не превысит отведенный лимит времени.
Tricentis Tosca
Tricentis Tosca – это модельно-ориентированный инструмент автоматизации тестирования, который предоставляет довольно широкий набор функций для непрерывного тестирования, включая тестирование с последующим выведением данных, их анализом и интеграцией для поддержки гибких методологий программирования и DevOps-методологий.
Tricentis Tosca помогает пользователям оптимизировать использование ресурсов, необходимых для проведения повторного тестирования. Как в случае с другими подобными инструментами, с помощью Tricentis Tosca можно проводить тестирование веб-приложений, мобильных приложений и API. Для данного инструмента также предусмотрена возможность управления интеграцией, анализа рисков и распределенного исполнения.
Запуск тестов с PyTest
PyTest — действительно мощный фреймворк для тестирования. Он имеет массу возможностей и расширений в виде пакетов. С его помощью можно реализовать автоматический перезапуск тестов, визуализацию отчетов и многое другое.
Для нас PyTest — это способ избежать необходимости писать кучу однотипного кода для каждого теста, потому что обычно дополнительный код в этой экосистеме или полностью отсутствует, или связан с объявлением новой фикстуры.
К тому же в PyTest есть несколько дополнительных пакетов, которые расширяют его функциональность. Мы используем Allure и Rerunfailures.
Пакет allure проводит сбор результатов тестов для последующей генерации отчетов. Он позволяет получать данные о прохождении тестов без глубоких модификаций кода. Из полученной информации можно сгенерировать отчет с понятной структурой, историей запуска тестов и перезапусков при провалах.
пример — скриншот отчета
Изначально мы использовали allure.step из самой библиотеки, но затем появилась необходимость делать скриншоты для каждого шага браузера. Если делать один скриншот в конце шага, то в случае провала тест просто не дойдет до этого места, а в проваленных тестах скриншот с места провала невероятно важен для понимания проблемы.
Первым решением было оборачивание кода внутри теста в блок try. В итоге это привело к увеличению количества строк кода теста и повсеместному дублированию. Тогда мы решили сделать свой класс наследник StepContext. Сначала решение показалось удобным, но внутри класса получилось много лишних строк и условных блоков. На текущий момент мы перешли к варианту использования декоратора contextmanager из библиотеки contextlib и реализовали обращение к глобальному объекту браузера. А поскольку декоратор преобразует генератор в дескриптор его можно использовать в блоке with.
Кроме этого мы используем библиотеку Rerunfailures, которая обеспечивает удобный перезапуск тестов при провале. Этот набор методов позволяет настраивать количество перезапусков, интервал ожидания перед перезапуском после провала. В общем — полезная штука для тестировщика, у которого действительно много работы.
Ranorex
Ranorex – это платный универсальный инструмент для автоматизации тестирования веб-, мобильных и десктопных приложений. Инструмент характеризуется расширенными возможностями для распознавания GUI, применением многоразовых тестовых сценариев и возможностью записи/воспроизведения этапов тестирования ПО. Еще одной полезной чертой данного инструмента является возможность создания тестовых сценариев без необходимости писать код. Для тех тестировщиков, кто находится на самом начале пути, такая особенность окажется прекрасным подспорьем: тестировщикам не нужно будет обладать углубленными знаниями в программировании, для того чтобы проводить автоматическое тестирование своих проектов.
Инструмент поддерживает интеграцию Selenium для тестирования веб-приложений. Тестировщики могут группировать определенные результаты тестирований для разных платформ и в различных браузерах с использованием сетки Selenium. Для Ranorex также предусмотрены скидки для бизнес-клиентов.
Watir
Watir - один из самых надежных инструментов с открытым исходным кодом для создания тестовой веб-автоматизации, написанной на Ruby.
Watir дает вам возможность подключаться к базам данных, читать данные и электронные таблицы, экспортировать XML и структурировать ваш код, если он написан на Ruby. Вы можете многократно использовать тестовый код, который можно повторять в тестовых сценариях.
Что хорошего в Python для автоматизации тестирования?
Python - это язык программирования с открытым исходным кодом, который увидел свет в 1991 году, чтобы явить миру интуитивно понятный, простой, удобочитаемый, элегантный и наименее нагроможденный язык программирования. И когда дело доходит до тестирования, такие качества необходимы, особенно когда в команде есть ручные тестировщики (которые не обязательно владеют навыками программирования), но сейчас переходят к автоматизации и могут радоваться быстрой кривой обучения Python для оперативного написания скриптов.
Есть довольно много причин, по которым популярность Python растет в области автоматизации тестирования и версий, почему он считается лучшим вариантом для нее. Среди них вы найдете: Дзен Python (19 основополагающих принципов философии проектирования на Python), удобство для начинающих, но мощность для профессионалов; Python – одновременно объектно-ориентированный и функциональный, у него есть большая библиотека пакетов для тестирования, серьезное сообщество по всему миру и многое другое! Я рекомендую прочитать вам чуть больше об этом в блоге AutomationPanda.
Robot framework
Robot Framework — это фреймворк для автоматического тестирования с открытым исходным кодом, в котором реализуется подход тестирования на основе ключевых слов для приемочного тестирования и разработки через приемочное тестирование (ATDD). Robot Framework предоставляет возможность решения различных задач автоматизации тестирования. Однако его возможности могут быть расширены благодаря внедрению дополнительных библиотек с помощью Python и Java. Например, Selenium WebDriver — популярная внешняя библиотека, используемая в Robot Framework.
Инженеры-тестировщики могут использовать Robot Framework в качестве фреймворка для автоматического тестирования не только веб-приложений, но для приложений под Android и iOS. Robot Framework покажется простым в изучении тем тестировщикам, кто уже знаком с тестированием на основе ключевых слов.
Топ 5 лучших инструментов автоматизации тестирования в 2018 году
Таким образом, каждый из описанных выше инструментов имеет свой уникальный набор возможностей, необходимый для решения постоянно меняющихся задач в области автоматического тестирования ПО. Благодаря таким инструментам появляется возможность осуществлять непрерывное тестирование и интеграцию, а также эффективно управлять процессом тестирования и получать отчет о проделанной работе. Данные инструменты отвечают всем требованиям, предъявляемым к тестированию мобильных и веб-приложений. Тем не менее, стоит отметить, что интеллектуальное тестирование и смарт-аналитика для адаптивных и гетерогенных сред – это то, что еще только предстоит реализовать в современных инструментах автоматизации тестирования.
Если вы когда-нибудь думали: «С какого же языка программирования мне следует начать свое путешествие в тестирование?» Ваш ответ – Python. Но он подойдет не только начинающим! В недавнем опросе, который я провела в LinkedIn, мы видим, что среди опытных программистов 35% проголосовали за то, что Python является их самым любимым языком программирования (немного опередив всеми любимую Java, которая заняла 2-е место с 32%).
На протяжении многих лет Python действительно набирает обороты как среди тестировщиков, так и среди разработчиков, да и в целом является самым динамично развивающимся языком программирования (как видно на диаграмме трендов Stack Overflow), и мы прекрасно понимаем, что это значит. Популярность = релевантность!
К концу этой статьи я ставлю своей целью дать вам понимание того, насколько мощным является язык программирования Python и какой фреймворк для тестирования лучше всего подойдет вашему проекту исходя из его потребностей.
Заключение
Есть много преимуществ использования инструментов тестирования с открытым исходным кодом. Для этих фреймворков не требуются прямые затраты, при этом возможно всячески изменять и настраивать автоматическое тестирование под себя.
Чтобы выбрать правильный инструмент тестирования с открытым исходным кодом, вы должны убедиться, что инструмент активно поддерживается и соответствует навыкам вашей команды. Функции, преимущества и проблемы, предлагаемые инструментом, должны соответствовать вашим требованиям к тестированию.
Прежде чем выбрать фреймворк автоматического тестирования, вы должны тщательно изучить его, чтобы он мог удовлетворить все ваши потребности. Удачи в автоматическом тестировании!
TestPlant eggPlant
TestPlant eggPlant – это инструмент автоматического функционального тестирования, основанный на анализе изображений, который позволяет тестировщикам эффективно выполнять AUT. Что касается методов тестирования, то TestPlant eggPlant полностью отличается от традиционных инструментов тестирования: в нем моделирование процесса происходит таким образом, как если бы пользователь занимался тестированием приложений, а не тестировщик, для которого такой процесс заключается в написании тест-скриптов. Такая особенность позволяет тестировщикам, которые не обладают большими знаниями в программировании, применять данный инструмент автоматизации тестирования интуитивно. TestPlant eggPlant поддерживается различными платформами, для него также предусмотрена возможность управления лабораторией и CI-интеграции.
Google EarlGrey
EarlGrey - это встроенная среда автоматизации пользовательского интерфейса Google для написания четких, точных и понятных тестовых алгоритмов. Google использует эту платформу для тестирования своих приложений на iOS (таких как YouTube, Gmail и Google Search App). Ниже мы перечислим некоторые интересные функции EarlGrey.
Фреймворк имеет встроенную синхронизацию пользовательского интерфейса, сетевые запросы, анимацию и различные очереди. Перед любыми действиями выполняется синхронизация с пользовательским интерфейсом.
Одним из основных преимуществ EarlGrey является то, что он работает в сочетании с платформой XCTest, которую можно напрямую выполнить из интегрированной среды разработки Xcode или командной строки с помощью тестового навигатора Xcode.
Katalon Studio
Katalon Studio — это эффективный инструмент для автоматизации процесса тестирования веб-приложений, мобильных приложений и веб-сервисов. Katalon Studio является потомком таких фреймворков, как Selenium и Appium. Он перенял у последних множество преимуществ, связанных с интегрированной автоматизацией тестирования ПО.
Для начала работы с данным инструментом вы можете как обладать начальными знаниями в тестировании ПО, так и быть настоящим гуру своего дела. Люди, далекие от программирования, могут с легкостью запустить свой проект по автоматизации тестирования (например, запустив функцию Object Spy для записи тестовых скриптов), а для программистов и опытных тестировщиков Katalon Studio окажется полезным с точки зрения экономии времени при написании новых библиотек и поддержке существующих скриптов.
Katalon Studio может быть интегрирован в CI/CD, он прекрасно работает в связке с популярными инструментами во время тестирования ПО: qTest, JIRA, Jenkins и Git. Для него предусмотрена приятная функция — Katalon Analytics, благодаря которой пользователи получают полное представление о процессе тестирования. Для этого предусмотрены специальные отчеты, которые выводятся на экран пользователей в виде метрики, диаграмм и графиков.
Unified Functional Testing (с англ. комплексное функциональное решение для тестирования ПО) или UFT – это популярный коммерческий инструмент для функционального тестирования. Он предоставляет полный набор функций для тестирования API, веб-сервисов, а также для тестирования графического интерфейса десктопных, мобильных и веб-приложений на всех существующих платформах. Для данного инструмента предусмотрена расширенная функция распознавания объектов на основе изображений, многоразовые тестовые компоненты и документация по автоматическому тестированию.
UFT использует Visual Basic Scripting Edition, который может пригодиться для записи информации о выполненном тестировании, а также для управления объектами. UFT интегрирован с Mercury Business Process Testing и Mercury Quality Center. Инструмент поддерживает CI с помощью интеграции с инструментами CI, такими как Jenkins.
Watir
Watir — это инструмент с открытым исходным кодом для автоматизации тестирования веб-приложений, использующий библиотеки Ruby. Для Watir предусмотрена возможность кросс-браузерного тестирования в большинстве существующих браузеров: Firefox, Opera, headless-браузеров и IE. Он также поддерживает управляемое данными тестирование и интегрирован с инструментами BBD, такими как: RSpec, Cucumber и Test / Unit.
Selenium
Selenium, пожалуй, самая популярная платформа автоматизации тестирования с открытым исходным кодом, которая применяется для веб-приложений. Кроме того, Selenium является основой для огромного количества других инструментов тестирования.
Поддерживается широкий спектр API и библиотек, которые могут быть изменены в соответствии с конкретными требованиями разработки.
Кроме того, Selenium имеет одну из крупнейших сетей поддержки, развитое комьюнити и встроенный инструмент воспроизведения Selenium IDE для тестирования без необходимости изучения определенного языка сценариев.
Selenium
Считается, что Selenium является самым популярным фреймворком с открытым исходным кодом, предназначенным для автоматизации тестирования веб-приложений. Разработанный где-то в далеких двухтысячных и развивающийся в течение последующего десятилетия, Selenium представляют собой фреймворк для автоматизации процесса тестирования веб-приложений. За это время он успел завоевать сердца многих тестировщиков, особенно тех, у кого в распоряжении имеются продвинутые навыки программирования и опыт написания скриптов. Selenium можно рассматривать в качестве родоначальника некоторых современных инструментов автоматизации тестирования с открытым исходным кодом, например: Katalon Studio, Watir, Protractor и Robot Framework.
Изоляция тестов с Selenoid
Тесты необходимо запускать изолированно друг от друга, чтобы результат выполнения предыдущего никак не влиял на следующий. Тесты надо прогонять на разных браузерах различных версий. И для этого идеально подходит Selenoid в связке с Selenoid GGR и Selenoid UI.
Когда у нас идут большие проекты тестирования, на одной машине мы разворачиваем Selenoid GGR, а на нескольких других — ноды. Все запросы изначально отправляются в GGR, который создает сессию на свободной ноде, и мы можем использовать её для тестирования.
Для каждого теста поднимается свой контейнер с нужной версией браузера, а после завершения теста, контейнер гасится. Когда возникает необходимость посмотреть, как работает тест или проверить работу ресурса через браузер на сервере, можно использовать Selenoid UI, создать сессию и работать с окружением через VNC как с обычным браузером.
Selenium
Считается, что Selenium является самым популярным фреймворком с открытым исходным кодом, предназначенным для автоматизации тестирования веб-приложений. Разработанный где-то в далеких двухтысячных и развивающийся в течение последующего десятилетия, Selenium представляют собой фреймворк для автоматизации процесса тестирования веб-приложений. За это время он успел завоевать сердца многих тестировщиков, особенно тех, у кого в распоряжении имеются продвинутые навыки программирования и опыт написания скриптов. Selenium можно рассматривать в качестве родоначальника некоторых современных инструментов автоматизации тестирования с открытым исходным кодом, например: Katalon Studio, Watir, Protractor и Robot Framework.
Заключение
Надеюсь, эта подборка тестовых фреймворков и методов оказалась полезной. В следующем посте я расскажу о практике написания некоторых тестов на Python. А если у вас есть другой опыт работы с тестовыми окружениями, пожалуйста, поделитесь им в комментариях.
Бесплатные стикеры и подарки vk запись закреплена
Ответы для получения стикеров Кролик Олег.
ВОПРОС: Для чего тестировщику менять ширину канала?
2) Протестировать скорость передачи данных
ВОПРОС: Что полезного можно найти в системных логах?
ВОПРОС: Чем POST отличается от GET?
2) GET для получения, POST для создания
ВОПРОС: Чем тестирование отличается от отладки?
1) Предметно: поиском бага и причины бага
ВОПРОС: Какое минимальное количество тестовых конфигураций необходимо, если локалей две: ru и en, поддерживаемые браузеры Chrome и Safari, а поддерживаемые версии iOS 9 и 10?
ВОПРОС: Чем отличаются браузеры?
ВОПРОС: Зачем тестировщику консоль в браузере?
3) Для дополнительной информации
ВОПРОС: Какой термин используется для обозначения короткого цикла тестов для подтверждения работоспособности основных функций приложения?
ВОПРОС: Для чего нужно нагрузочное тестирование?
2) Для анализа изменения состояния приложения под нагрузкой
ВОПРОС: Какой из протоколов не является защищенным?
ВОПРОС: Как тестовое покрытие влияет на качество продукта?
3) Не прямо пропорционально
ВОПРОС: Как можно посмотреть содержимое icmp-пакетов?
3) С помощью tcpdump
ВОПРОС: Что такое операционная среда?
3) Интерфейс операционной системы для прикладного программного обеспечения
ВОПРОС: Что такое операционная оболочка?
3) Программа, реализующая или расширяющая пользовательский интерфейс операционной системы
ВОПРОС: Зачем для тестирования используют консоль в браузере?
3) Для получения дополнительной информации
ВОПРОС: Что полезного можно найти в системных логах?
ВОПРОС: Как называется список рекомендаций от Apple, в котором содержатся советы по созданию приложений?
3) Guidelines Human Interface Guidelines
ВОПРОС: Что полезного для тестирования хранится в системных логах?
ВОПРОС: В каких случаях тестирование является динамическим?
1) В обоих перечисленных случаях
ВОПРОС: Что не используют для измерения объемов памяти?
ВОПРОС: Что из перечисленного является устойчивым названием одного из элементов пользовательского интерфейса?
ВОПРОС: Какой из этих тестов негативный?
3) Забегает в бар и заказывает 0 кружек пива
ВОПРОС: Чем тестирование производительности отличается от нагрузочного тестирования?
2) Нагрузочное — при максимальных нагрузках, производительности — время отклика при различных нагрузках
ВОПРОС: Тестирование производительности проводится при различных нагрузках, нагрузочное — при изменении нагрузки Для чего нужно нагрузочное тестирование?
1) Для анализа изменения состояния приложения под нагрузкой
ВОПРОС: В чем отличие локализации от интернационализации?
2) Интернационализация — адаптация продукта для использования везде, локализация — в конкретных регионах
ВОПРОС: Что такое регрессионное тестирование?
1) Тестирование, направленное на обнаружение вызванных внесенными изменениями багов в уже существующей функциональности
ВОПРОС: Какой код ответа информирует о серверной ошибке?
ВОПРОС: Зачем тестировщику VPN?
2) Для доступа к заблокированным ресурсам
ВОПРОС: Какая жидкость позволит произвести негативное тестирование кружки?
3) Уксусная кислота
ВОПРОС: Что такое Smoke test?
3) Тестирование надежности и устойчивости системы при превышения пределов нормального функционирования
ВОПРОС: Что НЕ включено в процесс выполнения программы в ЭВМ?
2) Кэшированные данные
ВОПРОС: На чьей стороне исполняется JavaScript?
ВОПРОС: Что такое UX?
Опыт взаимодействия пользователя с приложением
ВОПРОС: Что из этого не является частью тестирования производительности?
ВОПРОС: От чего зависит отображение сайта в браузере?
ВОПРОС: Как расшифровывается UEFI?
United Extensible Firmware Interface (
ВОПРОС: Что такое операционная среда?
Среда для выполнения операционной системы
ВОПРОС: Какой из этих IP адресов является невалидным?
ВОПРОС: Какой из фреймворков для автоматизации тестирования является самым популярным?
ВОПРОС: Какового режима видеодаптера НЕ существует?
ВОПРОС: Что означает ADB в тестировании?
Android Debug Bridge
ВОПРОС: Что подразумевает контроль качества (QC) в процессе разработки?
Мониторинг процессов обеспечения качества продукта
ВОПРОС: Функция, которая вызывает сама себя, называется
ВОПРОС: Когда конструктор в программировании вызывается автоматически?
2) При создании объекта
ВОПРОС: Расшифруйте аббревиатуру QC.
3) Quality Control
ВОПРОС: Сколько букв для шифрования использовалось в армейской версии "Энигмы" ?
ВОПРОС: Как называется программа, позволяющая отправлять сетевые запросы из интерфейса командной строки?
Успех любой автоматизации тестирования зависит от выбора правильного фреймворка. Механизм автоматического тестирования увеличивает скорость и эффективность тестирования, повышая его точность и снижая риски разработки. Для эффективного автоматического тестирования фреймворки критически необходимы.
Тесты проще писать на Python. Это факт
Когда речь идет о проверке работоспособности одного сайта, тестов обычно требуется не более 10, и они оказываются довольно простыми. Поэтому не имеет смысла строить сложную структуру классов: каждый тест проверяет свой набор страниц сайта, большинство элементов используются по одному разу, а данные прописываются внутри самого теста. Но когда тестов приходится готовить достаточно много, приходит желание все это стандартизировать и формализовать.
В качестве основы для написания тестов мы выбрали Python. Это достаточно простой и популярный на сегодняшний день язык программирования. В нем есть много полезных библиотек, и их количество продолжает расти. Поэтому готовить тестовые системы на Python достаточно просто.
Быстрый старт
Чтобы быстрее начинать работу по проекту, мы создали один базовый класс Python со всеми необходимыми методами и постоянно дополняем его новыми. Далее для тестирования конкретного сайта создаем классы-наследники. В них выносим общие данные, элементы и метод. Благодаря этому приступить к началу тестирования получается достаточно быстро.
Простота входа
Обучить человека базовым навыкам программирования на Python несложно. Существует масса курсов и обучающих программ. Но в дополнение к ним мы также написали инструкции по развертыванию окружения и структуры проекта тестов. Как показала практика, с помощью всего этого багажа знаний даже незнакомые с программированием и автоматизацией сотрудники могут приступить к выполнению боевых задач в первый же день своего общения с тестовым окружением. А писать новые тесты они начинают уже на первой неделе.
Работа с разными окружениями
Учитывая, что тестированием мы занимаемся давно, у нас есть старый код, который написан на Python 2.7. Основная часть тестов была подготовлена для версии Python 3. Все они должны работать вместе на одной рабочей машине автоматизатора тестирования. Виртуальные окружения Python позволяют развернуть готовое окружения за несколько минут с использованием нескольких команд в консоли. Также несколько минут уходит на установку всех необходимых пакетов ещё одной консольной командой.
Запуск тестов через Jenkins
Вообще Jenkins создавался (и используется) для CI/CD. Но мы применяем его как систему для запуска тестов, используя те же плюсы, которые эта платформа дает при деплое приложений.
Для каждого теста или группы тестов создается отдельный проект. В его настройках мы прописываем периодичность запуска тестов, выбираем необходимые параметры через переменные окружения и создаем скрипт запуска теста. Скрипт определяет, на каком окружении и какой тест нужно запускать. После этого Jenkins прогоняет тест, специальный скрипт собирает метрики и отправляет их в систему мониторинга.
На стенде, где установлен Jenkins, может быть создано несколько окружений Python и размещены разные репозитории с тестами. Тесты обычно берутся с локального диска стенда, а не из Git, потому что одновременно работают десятки проектов, и каждый раз делать Pull оказывается накладно с точки зрения ресурсов. Впрочем, сами тесты могут не меняться месяцами, а иногда и годами, так что это не очень страшно. )
Для обновления репозиториев мы создаем отдельный проект, который запускается по расписанию, либо его можно запустить вручную в случае необходимости.
Создание проектов мы автоматизировали через отдельный скрипт. На основе шаблона скрипт создает проект почти со всеми необходимыми настройками, чтобы свести к минимуму ввод дополнительных параметров.
Фреймворк для тестирования на Python, который вам подходит
С ростом применения Python растет и популярность фреймворков для тестирования на его основе. Поначалу может быть неясно, какой инструмент из всего многообразия следует выбрать, поскольку у каждого из них есть свои плюсы и минусы. Тем не менее, у каждого проекта и организации, есть свои требования и ограничения, поэтому нам нужно учитывать их все при выборе инструмента, который подойдет нам лучше всего. Чтобы лучше разобраться в этом вопросе, я рекомендую вам прочитать эти статьи:
И, конечно, зачем же нужны списки с плюсами и минусами, как ни для того, чтобы собрать важные сведения об инструментах в одном месте! Итак, давайте рассмотрим 8 лучших фреймворков для тестирования на Python и рассмотрим как их преимущества, так и недостатки, чтобы вам было проще выбрать идеальный фреймворк для тестирования.
Преимущества и недостатки 8 лучших фреймворков для тестирования на Python
Привет, Хабр! Меня зовут Сергей Радченко, и мы с командой профессионально занимаемся тестированием уже несколько лет. Сегодня я посчитал количество автотестов, которые мы подготовили для веб-интерфейсов, десктопных приложений, API, систем двухфакторной авторизации и так далее (их оказалось более 5000). И мне захотелось рассказать о нашем опыте создания экосистемы для автоматизированного тестирования. В этом посте вы найдете описание полезных для комплексного тестирования фреймворков, а также исходный код некоторых дополнительных методов, которые мы дописали самостоятельно, чтобы написание тестов происходило быстрее, и тестирование приносило больше пользы.
Иногда кажется, что тесты — это очень просто. Нередко в инструментах инфраструктурного мониторинга предусмотрена возможность отслеживания доступности веб ресурсов по простым http-запросам: ответ пришел — значит сервис доступен, нет ответа или код ответа отличается от "200" — значит недоступен. Но таким способом не получается проверить что-то более специфичное, например, корректность работы системы авторизации или обнаружить проблемы с синхронной подгрузкой данных, ну и удостовериться, что все бизнес услуги предоставляются пользователям корректно.
Часто бывает так, что сайт и ресурсы по показателям мониторинга доступны, но пользователи жалуются на их неработоспособность. Тут надо тестировать функционал самого сайта. Мы делаем это следующим образом — автоматический тест запускается по расписанию, а после выполнения теста происходит сбор метрик с отправкой в систему мониторинга. Метрики должны содержать в себе различные параметры: прошел тест или нет, на каком шаге произошел провал (если он был), а также время выполнения каждого шага.
В системе мониторинга можно создать триггеры на провал теста, а также на превышение времени выполнения шага. Иногда имеет смысл ввести триггеры и на провал конкретного шага. В этом случае группа мониторинга получает уведомление при срабатывании одного из триггеров и может расследовать инцидент сразу, чтобы предпринять действия по оперативному устранению проблем. Также можно настроить информирование лиц, ответственных за конкретный продукт или сервис.
Такой подход хорошо зарекомендовал себя, потому что комплексный мониторинг позволяет не только понять, работает система в целом или нет, но также выявить замедление работы, и иногда — даже поймать плавающие проблемы.
Читайте также: