Автоматизация тестирования является важной и не неотъемлемой частью разработки современного ПО, но без правильного подхода нередко случается, что написание автотестов занимает слишком много времени, а их поддержка может требовать больше затрат чем просто ручная регрессия. Почему же так происходит и как этого избежать? В этой презентации, базируясь на своем опыте работы во множестве проектов, я хочу рассказать об основных ошибках и проблемах, с которыми приходится сталкиваться автоматизаторам и что нужно сделать чтобы их избежать (на примере фреймворка для автоматизации JDI).
Чем тестирование веб-приложений отличается от тестирования каких-нибудь других приложений?
При тестировании веб-приложений применяются те же самые классические методы и техники проектирования тестов. Веб-приложения обычно имеют более простой интерфейс, чем "десктопные" программы. Браузером все умеют пользоваться, для этого не нужны какие-то специальные навыки.
Но существует ряд нюансов, связанных с социальными и технологическими особенностями веб-приложений, которые отличают их от других видов приложений, и которые обязательно нужно учитывать при тестировании, чтобы выполнить его профессионально.
фантастическое многообразие технологий, которые скрываются за простым фасадом браузера – фактически каждое веб-приложение является не самостоятельной программой, а частью всемирной паутины, и в работу веб-приложения вовлечено очень много разнородных компонентов,
невероятная скорость веб-разработки как в узком, так и в широком смысле – короткие релизы, быстро меняющиеся требования, постоянное совершенствование существующих технологий и возникновение новых,
потрясающее разнообразие пользователей, от случайных посетителей до постоянных клиентов, от младенцев до стариков, от новичков до хакеров,
полная открытость технологий, протоколов передачи данных, стандартов, и одновременно с этим необходимость особенно тщательной защиты, с учётом написанного в предыдущем пункте.
Кроме того, в этом курсе даются основы нефункционального тестирования веб-приложений – тестирование производительности, защищенности, удобства использования. В дальнейшем можно продолжить изучение отдельных видов нефункционального тестирования в более углублённых специализированных курсах Тестирование производительности веб-приложений и Тестирование защищенности веб-приложений.
После прохождения тренинга учащийся будет:
понимать принципы работы веб-приложений и знать, какие технологии при этом используются,
знать особенности тестирования веб-приложений по сравнению с десктопными приложениями,
уметь проектировать тесты с учётом особенностей веб-приложений и оценивать покрытие тестами функциональности приложения,
уметь выполнять тесты, при необходимости используя инструментальные средства для преодоления ограничений, накладываемых браузером,
владеть инструментами, для выполнения специфических проверок, характерных для веб-приложений:
анализ целостности ссылок,
анализ соответствия веб-стандартам,
понимать причины возникновения уязвимостей в веб-приложениях и уметь обнаруживать наиболее критические уязвимости в веб-приложениях,
понимать принципы оценки производительности веб-приложений и уметь выполнять анализ серверной и клиентской производительности веб-приложений,
уметь рассуждать об удобстве использования веб-приложений :)
Каждое занятие будет сопровождаться практическими заданиями, которые помогут быстрее и увереннее начать применять знания на практике.
Этот курс, предназначенный для обучения тестировщиков программированию на языке Java, является одним из самых популярных курсов в нашей линейке.
Обратите внимание, что это курс именно для тестировщиков. Обучение программированию не сводится только к изучению языка программирования. Построение правильной архитектуры, использование фреймворков и библиотек, владение инструментами разработки и отладки -- это тоже часть “умения програмировать”. Поэтому в этом курсе детально рассматриваются именно те возможности языка и вспомогательных библиотек, которые наиболее востребованы при разработке автотестов.
Продолжительность нового курса осталась прежней, два с половиной месяца разбитых на 10 больших блоков, каждый из которых разбит на короткие фрегменты, но программа претерпела значительные изменения на основе анализа отзывов участников.
С одной стороны, мы решили выбросить некоторые темы, которые оценивались как не слишком полезные. С другой стороны, за счёт освободившегося места и более плотной компоновки материала появилась возможность добавить множество новых гораздо более интересных и полезных тем.
Что мы решили убрать из курса:
тестирование Windows-приложений через пользовательский интерфейс -- всё таки Java совсем не приспособлена для этого, если перед вами стоит такая задача -- тогда лучше выбрать другой язык для написания тестов, например, C# или Python;
тестирование Java приложений через пользовательский интерфейс -- просто потому, что таких приложений слишком мало, и эта тема оказалась невостребованной.
А теперь гораздо более длинный список того, что добавлено:
большой блок, посвящённый самым основам языка Java и программирования вообще, теперь тренинг подходит даже для тех, кто совсем-совсем не умеет программировать, обучение начинается с нулевого уровня подготовки;
использование сборщика Gradle;
дополнительные приёмы повышения надёжности тестов за счёт проверки и обеспечения выполнения предусловий;
работа с файлами в формате JSON;
более глубокое рассмотрение возможностей тестового фреймворка TestNG;
работа с удалёнными программными интерфейсами SOAP и REST;
настройка и использование сервера непрерывной интеграции Jenkins и генерация красивых отчётов при помощи инструмента Allure;
написание тестов в разных стилях: на псевдоестественном языке Gherkin (этот подход называется Behavior Driven Development) и в виде табличек с использованием инструмента Robot Framework (этот подход называется Keyword Driven Testing).
Все “старые” темы тоже полностью переписаны, материал лекций уплотнён (по нашему исследованию 1 час наших лекций по содержательности равняется более чем 3 часам живого рассказа за счет выверенности всех фраз и удаления всего лишнего мусора), и для удобства просмотра разбит на небольшие фрагменты продолжительностью не более 20 минут.
А ещё по многочисленным просьбам в лекциях теперь используется IntelliJ IDEA вместо Eclipse ;)
После прохождения тренинга вы научитесь разрабатывать автоматизированные тесты для веб-приложений с использованием инструмента Selenium IDE. От участников не требуется никакой предварительной подготовки в области автоматизации тестирования, не требуется умение программировать, не требуется предварительное знакомство с Selenium или иным инструментом автоматизации. Стартуем с нулевой отметки.
Чем же новая версия тренинга отличается от предыдущей?
Во-первых, мы записали тренинг в более удобном формате. Материал представлен в виде серии небольших модулей средней продолжительностью около 10 минут. Такие короткие лекции проще усваиваются, чем длинный непрерывный рассказ.
Во-вторых, мы полностью переработали программу тренинга. За счёт более компактного и насыщенного изложения материала мы смогли без увеличения времени и стоимости тренинга добавить целый ряд новых тем. В них рассмотриваются вопросы, которые часто задавали участники предыдущих тренингов:
-- объяснение принципов работы XPath и CSS локаторов,
-- различие между некоторыми похожими командами (click и clickAt, type и sendKeys),
-- использование ожиданий, выполнение фрагментов JavaScript-кода,
-- усложнение логики сценариев при помощи расширения SelBlocks,
-- загрузка тестовых данных из внешнего файла (Data Driven Testing).
В третьих, появились новые интересные домашние задания. Участникам предостоит автоматизировать несколько сценариев в реальном веб-магазине, имеющем достаточно сложный интерфейс с динамическими элементами.
Да, пожалуй, у нас получился самый лучший в мире тренинг, посвящённый инструменту Selenium IDE!
И конечно всё это (как в любом нашем тренинге) сопровождается поддержкой тренера, готового отвечать на самые каверзные вопросы и помогающего вам освоить все возможности инструмента.
Вы недавно работаете в тестировании, или только хотите приобщиться к этой отрасли? Хотите получить фундамент, необходимый для построения успешной карьеры? Хотите узнать, из чего состоит эта область деятельности, чтобы быстрее стать в ней профессионалом?
Именно для вас – наш курс «Школа Успешных Тестировщиков v2.0». С этим курсом вы:
Получите широкий кругозор в сфере тестирования
Научитесь основным техникам и познакомитесь с основными инструментами тестировщиков
Узнаете, как построен процесс тестирования в ведущих компаниях
Пройдёте профильный тест, чтобы узнать, какие области и специализации в тестировании для вас ближе всего
Узнаете, как получать от работы максимум удовольствия
Создадите план развития на год, чтобы стать успешным тестировщиком
Этот курс будет полезен тем, кто обладает опытом в тестировании до одного года, или кто только хочет найти свою первую работу в сфере тестирования.
Хочу поделиться с вами информацией о новом тестовом Open Source фреймворке для web - TestCafe. Этот, набирающий популярность, продукт является прямым конкурентом Selenium, так как, в отличии от оного, не использует WebDriver и, благодаря чему, имеет множество преимуществ, которые могут показаться вам любопытными. Я перечислю некоторые из них:
- Не требует плагинов для браузеров
- Установка одной командой, все что необходимо - наличие NodeJs
- Возможность запускать тесты на любых устройствах имеющих выход в сеть и браузер
- Использование ES6,ES7 JavaScript для написания тестов
В данный момент я вникаю в работу Jenkins, но возникли трудности с некоторыми ее аспектами.
Имеется проект, который опрашивает удаленный сервер по обновлению библиотек, производит сборку и разворачивает его на специально подготовленной для этого машине.
Нужно, что бы в момент сборки на машину где разворачивается проект были прокинуты файлы, измененные вручную.
Пробовал подставить shell скрипт, но при обычном копировании файлов в сборочную директорию они все равно обновлялись файлами из удаленного сервера.
Проект разработки на Java, сборка запаковывается и разворачивается из варника.
Вопрос.
Как правильно пробросить файлы на машину, где разворачивается проект?
Здравствуйте. Такая болячка. Запускается браузер, открывает целевую страничку. Визуально всё прорисовано. Колёсико загрузчика браузера (не загрузчик страницы) продолжает крутиться. Скрипт дальше не двигается. Длится вечно
driver = webdriver.Chrome('/home/ххх/chromedriver')
driver.get('https://site.com/')
try:
oa = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID,"auth-form-container")))
except Exception as e:
print e
Элементы формы в браузере отображаются, всё путём, по идее. По истечении ожидания - 10 сек ничего не происходит. Исключений не даёт. Не понятно что с этим делать.
Как это дело забороть?
Закрыть браузер и повторить попытку было бы приемлемо. Как это сделать, подскажите пожалуйста.
Суть проблемы состоит в том, что после применения новых политик безопасности, сервер с целевым приложением был спрятан в обособленную сетку с единственным возможным доступом - браузером на терминал-сервере, который доступен исключительно по RDP. Никакого SSH-туннеля, проброса портов наружу и прочего сделать нельзя.
Вопрос: Я конечно очень сильно сомневаюсь, но вдруг существует какой-нибудь костыль, позволяющий запускать Selenium-тесты через RDP?