- Регистрация
- 13.03.2019
- Сообщения
- 48 482
Программирование для тестировщиков Тренер: Баранцев Алексей Этот курс предназначен для обучения тестировщиков программированию на языке Java Да, это курс именно для тестировщиков. Обучение программированию не сводится только к изучению языка программирования. Построение правильной архитектуры, использование фреймворков и библиотек, владение инструментами разработки и отладки -- это тоже часть “умения программировать”. Поэтому в этом курсе детально рассматриваются именно те возможности языка и вспомогательных библиотек, которые наиболее востребованы при разработке автотестов, в том числе при тестировании веб- и windows-приложений через пользовательский интерфейс. Изучаемый материал будет демонстрироваться на едином сквозном примере -- мы будем разрабатывать на языке Java автоматизированные тесты для веб-приложения, используя Selenium WebDriver. Начав с простого теста, записанного “рекордером”, мы будем постепенно усложнять архитектуру тестового набора, добавлять и усиливать проверки в тестах, дополнять тесты генераторами тестовых данных. Основной акцент будет сделан не на алгоритмы, а на изучение различных полезных библиотек и фреймворков, а также шаблонов проектирования, позволяющих организовать код автоматизированных тестов таким образом, чтобы его было легко модифицировать и расширять. Но одним примером мы не ограничимся, для закрепления материала мы в течение курса построим "в едином стиле" несколько проектов с тестами для приложений разного типа, научимся тестировать приложения через веб-интерфейс, пользовательский интерфейс Windows, интерфейс доступа к базам данных, сетевые интерфейсы (почта, HTTP, веб-сервисы). И напоследок научимся делать тесты на "естественном" языке Gherkin. Да, не удивляйтесь, чтобы делать тесты на "естественном" языке -- нужно уметь программировать 1. Основы программирования Большинство учебников и курсов по программированию начинаются с написания простейшей программы, которая выводит на консоль слова “Hello, world!”. Мы не станем нарушать эту традицию, потому что первым делом нужно подготовить среду разработки и убедиться, что всё установлено и настроено правильно. Попутно мы научимся использовать сервис GitHub для хранения исходного кода проекта. Продолжение описания В первом занятии будут рассмотрены базовые конструкции языка программирования Java -- классы и объекты, переменные и функции. Заодно научимся пользоваться отладчиком. Но до создания тестов так и не доберёмся. 2. Двухуровневая архитектура тестового набора Затем мы сразу совершим “прыжок” -- вместо того, чтобы постепенно усложнять свою первую примитивную программу, мы запишем “рекордером” готовый тест для веб-приложения, перенесём его в среду разработки, подключим все необходимые вспомогательные библиотеки, а потом будем его улучшать. Автотесты “системного” уровня (в отличие от “unit-тестов”) удобно разделить на два слоя -- 1) собственно тесты, 2) код, ответственный за взаимодействие с тестируемой системой, причём вторая часть, как правило, является более сложной технически. Мы научимся создавать такую двухуровневую архитектуру путём плавной трансформации ранее созданных при помощи “рекордера” простых одноуровневых тестов, и познакомимся с понятием “рефакторинга” кода. На этом же этапе мы познакомимся с базовыми возможностями тестового фреймворка TestNG. А после того, как двухуровневая архитектура будет выстроена -- добавим пару новых тестов уже без использования рекордера. 3. Управление потоком выполнения кода: условный переход Условный переход (if-then) -- это одна из основных конструкций языка программирования, позволяющая программе вести себя по разному в разных условиях. Мы научимся использовать эту конструкцию для того, чтобы менять поведение программы в зависимости от ситуации (есть на странице тестируемого веб-приложения нужный элемент или нет) и от входных данных (определено значение некоторой переменной или нет), для оптимизации тестов (уже попали на нужную страницу приложения или нет) и для повышения их гибкости и надёжности. 4. Коллекции и циклы Вторая основополагающая конструкция языка программирования -- это цикл, то есть многократное выполнение некоторого фрагмента кода. В тестах она может встречаться, например, при генерации большого количества тестовых данных. Однако чаще циклы используются при работе с “коллекциями” -- списками и множествами объектов какого-то типа. Мы научимся строить и модифицировать коллекции, сравнивать и сортировать их, а также реализовывать в тестах сложные проверки, в которых участвуют коллекции объектов. 5. Работа со строками Строки -- один из самых широко распространённых типов данных, с которым приходится иметь дело в тестах, особенно если тестирование выполняется через пользовательский интерфейс. Конечно, эти строки могут представлять собой числа или даты или объекты какого-то другого типа, но из тестируемого приложения мы получаем их именно в виде строк, так что перед дальнейшим использованием их ещё нужно правильно преобразовать в нужный тип данных. Мы научимся сравнивать строки, проверять их на соответствие регулярным выражениям, преобразовывать строки в числа и обратно, а также генерировать строки, состоящие из случайного набора символов. А затем доработаем тесты -- сделаем их параметризованными и свяжем их с генераторами тестовых данных. Такой подход называется Data Driven Testing (DDT). 6. Работа с файлами Файлы -- это место, где можно хранить тестовые данные. Поэтому в контексте разработки автотестов важно уметь читать данные из файлов разного формата. С другой стороны, создавать тестовые данные тоже не обязательно вручную, можно написать программу, которая их будет генерировать и сохранять в файл нужного формата. Мы научимся читать данные из файлов в формате CSV, XML, JSON, а также писать данные в файл в этих форматах. 7. Работа с базами данных Подавляющее большинство многопользовательских приложений (к которым относятся и веб-приложения), а также многие однопользовательские приложения, используют базы данных для хранения информации. Когда пользователь вводит какую-то информацию через интерфейс приложения, она после некоторой обработки попадает в базу данных и хранится там до тех пор, пока она не потребуется для работы того же самого или или какого-то иного приложения. При тестировании часто бывает удобно проверить, правильно ли сохранилась информация в базе данных. Поэтому многие тестировщики, даже не умея программировать, достаточно хорошо владеют языком запросов к базе данных SQL. Сначала мы научимся пользоваться технологией доступа к базам данных, которая позволяет выполнять привычные SQL-запросы и анализировать полученный ответ как таблицу. Затем мы освоим более современную технологию объектно-реляционных преобразований. 8. Сетевое программирование: протоколы прикладного уровня С одной стороны, это занятие будет повторением пройденного материала. Мы построим новый тестовый набор с двухуровневой архитектурой для нового тестируемого приложения. Однако всё взаимодействие с тестируемым приложением будет происходить в обход пользовательского интерфейса. В этом занятии будут рассмотрены механизмы работы с сетевыми протоколами для отправки и получения почты POP3 и SMTP, протоколом для отправки и получения файлов FTP, протоколом для удалённого выполнения команд Telnet, а также традиционным протоколом, используемый для взаимодействия с веб-приложениями HTTP. Для веб-приложений характерным случаем является использование электронной почты -- отправка ссылки для подтверждения регистрации, восстановление пароля, оповещения о каких-либо событиях. Для тестирования такого рода функциональности мы научимся работать с почтовым сервером из автоматизированных тестов: принимать и отправлять почту, анализировать содержимое почтовых сообщений. Настройка приложения, находящегося на удалённом сервере, может потребовать умения загружать туда файлы по протоколу FTP. 9. Сетевое программирование: удалённые программные интерфейсы И ещё одно занятие-повторение, в котором мы опять построим новый тестовый набор для нового учебного приложения, чтобы закрепить навык создания типовой двухуровневой архитектуры. А затем научимся работать с удалёнными программными интерфейсами SOAP и REST. Технология SOAP чаще используется в крупных “промышленных” приложениях, а технология REST более характерна для современных веб-сервисов. 10. Тестовые фреймворки и инфраструктура Последнее занятие будет посвящено рассмотрению альтернативных тестовых фреймворков, в том числе инструмента Cucumber для разработки тестов на "естественном" языке Gherkin и инструмента Robot Framework для разработки тестов в стиле Keyword Driven Testing. Кроме того, мы научимся запускать тесты на сервере непрерывной интеграции Jenkins и генерировать красивые отчёты при помощи инструмента Allure. Содержание складчины (файлы и папки) 01 Основы программирования 01 Обзор языков программирования и место Java в общей картине мира.mp4 [49m 859k 956] 02 Установка и настройка Java SDK.mp4 [28m 34k 950] 03 Первая работающая программа на языке Java.mp4 [15m 314k 552] 04 Хранение кода Git и GitHub.mp4 [23m 855k 538] 05 Gradle и другие сборщики.mp4 [34m 711k 973] 06 Среда разработки IntelliJ IDEA.mp4 [25m 925k 710] 07 Классы и пакеты, файлы и директории.mp4 [17m 912k 835] 08 Фигурные скобочки и структура программного кода.mp4 [32m 694k 273] 09 Выражения и операции.mp4 [26m 862k 174] 10 Переменные и значения.mp4 [24m 904k 187] 11 Типы переменных и значений.mp4 [13m 210k 533] 12 Среда разработки. Запуск программы режиме отладки.mp4 [13m 606k 97] 13 Функции.mp4 [28m 74k 969] 14 Классы и объекты.mp4 [34m 620k 79] 15 Методы. Функции, ассоциированные с объектами.mp4 [17m 770k 547] pluginfile.pdf [2m 497k 943] Thumbs.db [35k 840] ДЗ.txt [1k 862] Ссылки на инструменты, упомянутые в лекциях.txt [390] 02 Двухуровневая архитектура тестового набора 01 Немного теории что такое автотесты.mp4 [18m 559k 415] 02 Gradle подключаем зависимости от дополнительных библиотек.mp4 [20m 262k 209] 03 Делаем первый тест, используя фреймворк для запуска тестов TestNG.mp4 [18m 957k 737] 04 Среда разработки IDEA полезные клавиатурные сочетания.mp4 [15m 431k 313] 05 Делаем тест для веб-приложения, используя драйвер Selenium.mp4 [32m 377k 386] 06 Фикстуры инициализация и зачистка.mp4 [15m 565k 353] 07 Рефакторинг улучшаем читаемость кода, выделяем вспомогательные методы.mp4 [32m 141k 269] 08 Создаём общий базовый класс для тестов, где можно хранить методы, общие для всех тестов.mp4 [43m 595k 178] 09 Заменяем наследование на делегирование и создаём двухуровневую архитектуру.mp4 [53m 168k 904] 10 Выделяем специализированные классы-помощники.mp4 [41m 856k 281] 11 Создаём общий базовый класс для классов-помощников.mp4 [31m 632k 137] 12 Делаем новый тест без использования рекордера.mp4 [22m 402k 35] ДЗ.txt [4k 190] 5.0 Подготовка к разработке тестов для веб-приложений 5.1.png [50k 269] addressbook.zip [599k 111] Видеоинструкция по установке учебного приложения.mp4 [6m 10k 635] Подготовка к разработке тестов для веб-приложений.txt [1k 518] Доп. материалы Thumbs.db [6k 656] Ссылки.txt [247] Фрагмент курса. selenium_start_02_02_xpath_and_css.mp4 [15m 19k 460] 03 Управление потоком выполнения кода, ветвление 01 Проверка условий при помощи конструкции if-then-else.mp4 [32m 601k 141] 02 Полная форма if-then-else. Неполная форма if-then. Вложенные проверки. Свёртка вложенных проверок.mp4 [27m 870k 967] 03 Запуск тестов в разных браузерах.mp4 [41m 536k 233] 04 Сравнение объектов при помощи оператора == и метода equals.mp4 [21m 131k 675] 05 Оптимизация заполнения форм - оставляем дефолтные значения в полях.mp4 [11m 890k 152] 06 Оптимизация заполнения форм - оставляем не изменяющися значения в полях.mp4 [16m 488k 494] 07 Перехват исключений.mp4 [31m 198k 60] 08 Заполнение форм с почти одинаковым набором полей.mp4 [41m 714k 939] 09 Ленивые действия.mp4 [28m 571k 154] 10 Проверка и обеспечение выполнения предусловий.mp4 [28m 496k 31] Thumbs.db [52k 224] ДЗ.txt [791] Ссылки.txt [362] 04 Коллекции и циклы 01 Циклы.Многократные повторения похожих действий.mp4 [51m 83k 937] 02 Коллекции. Наборы элементов.mp4 [34m 776k 270] 03 Количество элементов в коллекции.mp4 [27m 744k 163] 04 Выбор элемента списка по порядковому номеру.mp4 [11m 942k 973] 05 Формирование коллекции.mp4 [31m 490k 430] 06 Сравнение коллекций.mp4 [32m 926k 45] 07 Множества. Неупорядоченные коллекции.mp4 [44m 139k 864] 08 Поиск максимального элемента в коллекции.mp4 [26m 773k 743] 09 Лямбда-выражения (анонимные функции) и элементы функционального программирования.mp4 [36m 200k 646] 10 Сортировка списков.mp4 [30m 376k 737] Thumbs.db [26k 624] ДЗ.txt [411] 05 Улучшение кода тестов. Работа со строками 01 Как правильно запускать браузер.mp4 [40m 246k 917] 02 Улучшение кода тестов - ещё немного реструктуризации кода.mp4 [24m 842k 56] 03 Улучшение названий методов.mp4 [22m 696k 33] 04 Fluent-интерфейсы.mp4 [24m 434k 254] 05 Повсеместное использование уникальных идентификаторов объектов.mp4 [62m 293k 906] 06 Hamcrest - улучшение внешнего вида проверок.mp4 [43m 957k 983] 07 Кеширование результатов длительных операций.mp4 [19m 264k 647] 08 Хеширование и предварительные проверки.mp4 [24m 583k 840] 09 Способы построения сложных локаторов.mp4 [36m 169k 629] 10 Режем строки (и немного про регулярные выражения).mp4 [31m 271k 360] 11 Клеим строки - метод обратных проверок.mp4 [37m 257k 910] Thumbs.db [27k 136] ДЗ.txt [1k 692] Ссылки.txt [236] 06 Работа с файлами 01 Пути к файлам и директориям.mp4 [50m 974k 958] 02 Генератор тестовых данных, запись данных в файл.mp4 [35m 319k 644] 03 Анализ опций командой строки при запуске генератора данных.mp4 [27m 678k 492] 04 Параметризация тестовых методов.mp4 [33m 13k 37] 05 Загрузка тестовых данных из файла.mp4 [26m 29k 818] 06 Формат XML.mp4 [45m 223k 403] 07 Формат JSON.mp4 [37m 386k 836] 08 Автоматическое закрытие файлов после использования.mp4 [13m 24k 752] 09 Конфигурационные файлы для описания тестовых наборов.mp4 [27m 234k 239] 10 Описание конфигурации тестового стенда.mp4 [40m 821k 427] 11 Протоколирование (лог-файлы).mp4 [51m 987k 663] Thumbs.db [34k 304] ДЗ.txt [973] 07 Работа с базами данных 01 Драйвер базы данных. Получение данных из БД.mp4 [41m 41k 230] 02 Object Relational Mapping (ORM).mp4 [78m 676k 986] 03 Условия отбора данных.mp4 [32m 818k 190] 04 Сравнение данных, загруженных из БД.mp4 [43m 306k 11] 05 Отключаемые проверки UI.mp4 [39m 205k 663] 06 Связи между объектами.mp4 [54m 145k 321] Thumbs.db [14k 848] ДЗ.txt [909] 08 Сетевое программирование. Протоколы прикладного уровня 01 Установка нового учебного приложения MantisBT.mp4 [20m 812k 829] 02 Подготовка проекта для тестирования MantisBT.mp4 [31m 688k 333] 03 Прямое взаимодействие с сервером по протоколу HTTP.mp4 [47m 281k 826] 04 Ленивая инициализация помощников.mp4 [26m 577k 883] 05 Передача файлов на удалённую машину по протоколу FTPmp4.mp4 [40m 185k 394] 06 Получение почты на встроенный в тесты почтовый сервер.mp4 [70m 600k 944] 07 Получение почты на внешний почтовый сервер.Создание пользователей на внешнем почтовом сервере по протоколу.mp4 [0] ДЗ.txt [1k 520] Ссылки.txt [312] 09 Сетевое программирование - удалённые программные интерфейсы 01 Немного теории про Remote API.mp4 [42m 145k 969] 02 SOAP - простой пример.mp4 [38m 288k 788] 03 SOAP - взаимодействие с MantisBT.mp4 [78m 54k 936] 04 REST - взаимодействие с Bugify.mp4 [74m 751k 1] 05 RestAssured - использовать или нет.mp4.mp4 [23m 936k 261] 06 REST - взаимодействие с GitHub.mp4 [37m 288k 593] ДЗ.txt [2k 316] 10 Тестовые фреймворки и инфраструктура 01 Сервер непрерывной интеграции.mp4 [64m 293k 620] 02 Удалённый запуск браузера (Selenium Server).mp4 [50m 306k 395] 03 Конфигурационное тестирование (Selenium Grid).mp4 [63m 493k 873] 04 Генерация отчётов при помощи Allure.mp4 [82m 773k 17] 05 Keyword Driven Testing и инструмент Robot Framework.mp4 [63m 350k 665] 06 Behaviour Driven Testing и инструмент Cucumber-JVM.mp4 [65m 194k 633] ДЗ.txt [419] Ссылки.txt [400] Объем: 3,15Гб. Скрытый текст. Доступен только зарегистрированным пользователям.Нажмите, чтобы раскрыть... |
Быстрая оплата RUB, UAH, KZT