Програма:
Вступне заняття. Відразу до практики!
1. Практика. Пишемо перший автотест: Java / Gradle / JUnit5 / Selenide
2. Вивчаємо готовий проект з інфраструктурою: Github / Jenkins / Allure Report / Allure TestOps / Selenoid / Телеграм-бот
Додаткове заняття. Професійно працюємо з IntelliJ IDEA Юрій Артамонов (JetBrains)
1. Основи
2. Git and Github
3. Docker
4. Бази даних
5. HTTP Client
6. Selenium
7. BDD Support
Git. Github. Занурюємося. Дмитро Тучс
1. Ще раз повторимо основи Git&Github
2. Основи розгалуження, pull requests
Поринаємо в інструментарій та бібліотеки. Станіслав Васенков та Дмитро Тучс.
1. Теорія: Gradle, JUnit5, Selenide
2. Практика. Працюємо з тренажером demoqa.com
3. Розглянемо докладніше можливості Selenide та CSS/Xpath-селектори
Додаткове заняття. Selenide IDE – і таке буває
Не плутати із Selenium IDE, але його теж розглянемо
(Заняття на допомогу автоматизатору-початківцю, як достукатися до перших складних елементів)
1. Встановимо Selenium IDE, зробимо експорт у java-код
2. Встановимо Selenide IDE
3. Порівняємо обидва варіанти
Продовжуємо розробляти автотести. PageObjects. Станіслав Васєнков.
1. Додаємо до коду PageObjects
2. Вивчаємо підходи – степовий, сценарний, dsl
3. Додаємо PageComponents
Основи Java. Дмитро Тучс
1. Src – main
2. Клас з погляду файлів
3. Клас з погляду Java
4. Class fields – змінні (у чому різниця)
5. Примітивні типи даних
6. Літерали
7. Оператори
8. Керуючі конструкції
9. Метод, як опис поведінки
10. Створення об’єктів та виклик методів
Продовжуємо розробляти автотести. генерація тестових даних. Станіслав Васєнков.
1. Генерим рандомні значення використовуючи вбудовані бібліотеки
2. Використовуємо JavaFaker
JUnit 5. Дмитро Тучс
1. Анотація @ Test
2. Що собою представляють інструкції в Java
3. Пишемо свою найпростішу реалізацію JUnit5
4. @Disabled, @DisplayName
5. Тест кейс – що таке і з чого складається
6. Параметризовані тести:
– Концепція
– sources (дата-провайдери)
– Неймінг
Працюємо із файлами. Дмитро Тучс
1. Як завантажити та прочитати файл
2. Перевіряємо контент у .txt, .pdf, .xls/.xlsx, .doc/.docx, .zip
Allure Reports. Артем Єрошенко
1. Практика. Підключення Allure Reports та налаштування звітності про проходження автотестів
2. Практика. Побудова більш інформативної звітності із вкладеннями:
– прикладаємо скріншоти, файли, логи та інші вкладення у звіт
3. Теорія. Огляд можливостей Allure Reports
Selenide #1. Частина I. Олексій Виноградов
0. DOM для початківців (запис)
1. Лайвкодінг – прості тести для GitHub
2. Лайвкодінг – GitHub з вирішенням деяких типових проблем
Додаткове заняття. Selenide #1. Частина ІІ. Олексій Виноградов
1. Основні функції бібліотеки Selenide (довідник-шпаргалка)
2. Відповіді на запитання
**Увага! Заняття містить завдання без перевірки!
Jenkins. Створюємо перше завдання. Станіслав Васєнков.
1. Практика. Створюємо завдання (Job), пов’язуємо з репозиторієм у Github, запускаємо тести віддалено.
2. Теорія. Основи Jenkins.
3. Теорія. Основи CI/CD.
Керуємо параметрами в коді та в Jenkins. Станіслав Васєнков.
1. Передаємо параметри в код із командного рядка
2. Ховаємо приватні дані з бібліотекою Owner
3. Передаємо параметри із Jenkins
Телеграм-бот. Надсилаємо повідомлення про результати проходження автотестів. Станіслав Васєнков.
1. Практика. Пишемо телеграм-бота
2. Практика. Постобробка складання. Налаштовуємо відправку повідомлень до Jenkins
3. Теорія. Огляд можливостей Telegram API
Вчимося швидко розробляти готові проекти для тестових завдань. Станіслав Васєнков.
Набиваємо руку невеликими проектами.
1. Знаходимо цікаву нам вакансію (hh.ru/linkedin/@qa_jobs)
2. Робимо невеликий проект:
– розробляємо 5-10 простих автотестів на сайт з вакансії
– створюємо завдання у Jenkins
– ховаємо секретні дані з owner
– налаштовуємо Allure-звіт, додаємо вкладення:
— знімки екрану
– логі браузера
— відеозапис тесту
— налаштовуємо повідомлення у telegram / slack
У міру проходження курсу додамо сюди:
– автотести на API
– тест-план Allure TestOps – з ручними та автоматизованими тестами
– інтеграцію з Jira
3. Надсилаємо наш проект hr c супровідним листом
Selenoid. Роман Орлов
1. Практика. Додаємо контейнеризацію до завдання у Jenkins
2. Теорія. Основи Docker. Selenoid
Бібліотека Owner. Артем Єрошенко
1. Правильно організуємо зберігання властивостей (properties) у проекті з бібліотекою Owner
2. Ховаємо секретні дані в Jenkins
Selenide #2. Олексій Виноградов
1. Практика:
– пишемо автотести на Selenide
– тестуємо віджети
2. Теорія:
– закріплення знань, здобутих на практиці
– Java
– JUnit5
REST API. Пишемо автотести із Rest-assured. Станіслав Васєнков.
1. Практика. Пишемо тести на REST API за допомогою бібліотеки Rest-assured
2. Теорія. Основи HTTP-протоколу, типи запитів, коди відповідей
REST API. Декомпозуємо UI-тести. Підключаємо звітність
1. Перетворюємо UI-взаємодії на API-запити
Більше можливостей REST-assured
2.Підключаємо Allure-listener
3. Додаємо шаблони для більш гарного звіту
REST API. Моделі. Специфі
кації. Станіслав Васєнков.
1. Прибираємо тіло запиту та відповідь у моделі
2. Додаємо специфікації
Додаткове заняття. REST API/Groovy. Олексій Кузнєцов
– Groovy для асертів та основи мови
– Трохи магії Java
– Специфікації
– Шаблони для Allure
*Увага! Заняття містить завдання без перевірки!
Додаткове заняття. REST API. Закріплювальне заняття. Дмитро Тучс
1. Swagger
2. API з іншого боку (backend на spring boot)
3. Інтеграція backend зі Swagger
4. Контролери, які повертають списки об’єктів
5. Практика
*Увага! Заняття містить завдання без перевірки!
Додаткове заняття. SOAP API. Дмитро Тучс
*Увага! Заняття містить завдання без перевірки!
Мобільна автоматизація
#1. Розробляємо автотести з Browserstack
1. Практика. Вчимося користуватися інспектором у Browserstack, розробляємо перші автотести на iOS/Android з Selenide
2. Практика. Browserstack-API. Забираємо логи, відео
3. Теорія. Основи тестування мобільних додатків
Мобільна автоматизація #2. Розробляємо автотести з емулятором Android-пристрою та на своєму телефоні
1. Налаштовуємо робоче місце:
– Appium
– Android Studio
– Налаштовуємо змінні середовища
2. Емулюємо Android пристрій
3. Підключаємо свій телефон
4. Практика. Розробляємо автотести з Appium
5. Теорія. Основи Appium
[BONUS] Запускаємо тести на шкільному Selenoid – Android
Allure TestOps #1. Артем Єрошенко
1. Знайомство із системою
2. Заклад тест-кейсів
3. Створення першого тест-плану
Allure TestOps #2. Артем Єрошенко. Заняття у записі
1. Інтеграції з Jenkins та Jira
2. Об’єднання ручних тестів та автотестів у єдиний тест-план
3. Метрики, графіки, поглиблене вивчення платформи
4. Адміністрація
5. Огляд рішень та впроваджених проектів
Дипломний проект
Набиваємо руку невеликими проектами.
1. Знаходимо цікаву нам вакансію (hh.ru/linkedin/@qa_jobs)
2. Робимо невеликий проект – розробляємо 5-10 простих автотестів на сайт з вакансії, додаємо джобу в Джинкінсі з алюр-звітом
Додаємо сюди Selenoid, Allure TestOps, Jira, Telegram notifications
3. Надсилаємо наш проект hr c супровідним листом
Переїзд на власну інфраструктуру із ресурсів школи. Єгор Іванов (випускник першого потоку)
Налаштуємо тестовий стенд локально. Так само стенд налаштовується на будь-якому VPS, наприклад DigitalOcean.com
1. Розглянемо базові команди Linux, які знадобляться
2. Доступ до віддаленого сервера через ssh Ubuntu
2.1 Доступ до Ubuntu через ssh за допомогою публічного ключа RSA
3. На віртуальній машині встановимо:
– Java
– Docker
– Docker-compose
4. Створимо конфіг для docker-compose
5. Піднімаємо Selenoid + Selenoid UI
5.1 Перевіряємо, як це працює
6. Піднімаємо Jenkins
6.1 Первинні налаштування Jenkins
6.2 Перевірка працездатності
Завдання не обов’язкове. Доступ до інфраструктури школи залишиться після закінчення навчання (в розумних межах, звісно).
Додаткове заняття для студентів школи. Олексій Кузнєцов. ООП та ГО-дизайн в UI-тестах для найменших. Заняття у записі
1. Пара слів про себе
2. Наші друзі – змінні.
Навіщо вони потрібні, як їх створювати, їхня роль у тестах
3. Приборкуємо рандомайзер. Як використовувати генерацію випадкових даних у тестах
4. Маленький архітектор або як класи допомагають нам відокремлювати логіку та роботу від інших класів
5. Озброюємося або поговоримо ще трохи про Page Object
6. Підключаємо важке озброєння. ООП та ГО-дизайн на прикладі Page Object. Робимо наші page-класи компонентними
7. Роль інтерфейсів у проектуванні нашого рішення або як зробити подобу методу Allure.step своїми руками
8. Ще трохи про інтерфейси. Наділяємо наші element-класи додатковими можливостями на основі контрактної поведінки
9. Декілька слів про домашнє завдання
10. Запитання та відповіді
*Увага! Заняття містить завдання без перевірки!