Skip to content

EugenMakarevich/java-qa-automation-course

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Программирование на Java для тестировщиков

Курс направлен на изучение возможностей языка Java и вспомогательных библиотек, позволяющих разрабатывать автотесты для приложений разных типов, а также шаблонов проектирования, позволяющих удобно организовать и легко изменять код.

Вводная часть

  • Лекция 0.1. Обзор языков программирования и место Java в общей картине мира
  • Лекция 0.2. Установка и настройка Java SDK
  • Лекция 0.3. Первая работающая программа на языке Java
  • Лекция 0.4. Хранение кода: Git и GitHub
  • Лекция 0.5. Gradle и другие сборщики
  • Лекция 0.6. Среда разработки IntelliJ IDEA
Задание №1: Подготовить инфраструктуру и создать первую работающую программу

1. Основы программирования

  • Лекция 1.1. Классы и пакеты, файлы и директории
  • Лекция 1.2. Фигурные скобочки и структура программного кода
  • Лекция 1.3. Выражения и операции
  • Лекция 1.4. Переменные и значения
  • Лекция 1.5. Типы переменных и значений
  • Лекция 1.6. Среда разработки: запуск программы в режиме отладки
  • Лекция 1.7. Функции
  • Лекция 1.8. Классы и объекты
  • Лекция 1.9. Методы: функции, ассоциированные с объектами

Задание №2: Потренироваться использовать функции, классы, объекты и методы

  • Лекция 1.10. Немного теории: что такое "автотесты"?
  • Лекция 1.11. Подключаем зависимости от дополнительных библиотек
  • Лекция 1.12. Делаем первый тест, используя фреймворк для запуска тестов TestNG
  • Лекция 1.13. Среда разработки IDEA: полезные клавиатурные сочетания
Задание №3: Подключить тестовый фреймворк и сделать первые тесты

2. Двухуровневая архитектура тестового набора

  • Лекция 2.1. Установка учебного приложения
  • Лекция 2.2. Делаем тест для веб-приложения, используя драйвер Selenium
  • Лекция 2.3. Фикстуры: инициализация и зачистка
  • Лекция 2.4. Рефакторинг: улучшаем читаемость кода, выделяем вспомогательные методы

Задание №4: Сделать тесты для создания групп и контактов в адресной книге

  • Лекция 2.5. Создаём общий базовый класс для тестов, где можно хранить методы, общие для всех тестов
  • Лекция 2.6. Заменяем наследование на делегирование и создаём двухуровневую архитектуру
  • Лекция 2.7. Выделяем специализированные классы-помощники
  • Лекция 2.8. Создаём общий базовый класс для классов-помощников

Задание №5: Реализовать двухуровневую архитектуру тестового набора

  • Лекция 2.9. Делаем новый тест без использования рекордера

Задание №6: Сделать тесты для удаления и модификации групп и контактов

3. Управление потоком выполнения кода: ветвление

  • Лекция 3.1. Проверка условий при помощи конструкции if-then-else
  • Лекция 3.2. Полная форма if-then-else. Неполная форма if-then. Вложенные проверки. Свёртка вложенных проверок
  • Лекция 3.3. Запуск тестов в разных браузерах
  • Лекция 3.4. Сравнение объектов при помощи оператора == и метода equals

Задание №7: Научиться запускать тесты в разных браузерах

  • Лекция 3.5. Оптимизация заполнения форм: оставляем дефолтные значения в полях
  • Лекция 3.6. Оптимизация заполнения форм: оставляем не изменяющиеся значения в полях
  • Лекция 3.7. Перехват исключений
  • Лекция 3.8. Заполнение форм с почти одинаковым набором полей
  • Лекция 3.9. "Ленивые" действия
  • Лекция 3.10. Проверка и обеспечение выполнения предусловий

Задание №8: Реализовать проверку и обеспечение предусловий в тестах

4. Коллекции и циклы

  • Лекция 4.1. Знакомство с коллекциями
  • Лекция 4.2. Типы коллекций: List, Set, Map
  • Лекция 4.3. Перебор коллекций с помощью циклов for, while и foreach
  • Лекция 4.4. Методы для работы с коллекциями
  • Лекция 4.5. Использование лямбда-выражений для обработки коллекций

Задание №9: Написать тесты с использованием коллекций и циклов

  • Лекция 4.6. Оптимизация кода: использование Stream API для работы с коллекциями
  • Лекция 4.7. Применение сортировок и фильтраций в коллекциях
  • Лекция 4.8. Вложенные циклы и сложные операции с коллекциями
Задание №10: Применить Stream API для оптимизации тестов

5. Работа с файлами

  • Лекция 5.1. Чтение данных из файла
  • Лекция 5.2. Запись данных в файл
  • Лекция 5.3. Форматы файлов: текстовые, бинарные, CSV, JSON, XML
  • Лекция 5.4. Работа с JSON и XML при помощи библиотек

Задание №11: Написать тесты с чтением и записью данных в файлы

  • Лекция 5.5. Потоки ввода-вывода в Java
  • Лекция 5.6. Обработка исключений при работе с файлами
  • Лекция 5.7. Работа с большими файлами и буферизация
Задание №12: Написать тесты для обработки больших файлов

6. Тестирование веб-приложений

  • Лекция 6.1. Основы тестирования веб-приложений
  • Лекция 6.2. Введение в Selenium WebDriver
  • Лекция 6.3. Работа с элементами страницы: клики, ввод текста, проверки
  • Лекция 6.4. Динамическое ожидание элементов на странице
  • Лекция 6.5. Работа с окнами, алертами и фреймами

Задание №13: Написать тесты для основных функций веб-приложения

  • Лекция 6.6. Поддержка тестов для разных браузеров
  • Лекция 6.7. Локаторы и XPath для поиска элементов
  • Лекция 6.8. Работа с AJAX и динамическим контентом

Задание №14: Написать тесты для работы с динамическим контентом

7. Работа с базами данных

  • Лекция 7.1. Основы работы с базами данных и SQL
  • Лекция 7.2. Подключение к базе данных из Java с помощью JDBC
  • Лекция 7.3. Выполнение CRUD-операций с базой данных
  • Лекция 7.4. Использование транзакций в JDBC
  • Лекция 7.5. Обработка исключений при работе с базами данных

Задание №15: Написать тесты для CRUD-операций с базой данных

  • Лекция 7.6. Оптимизация запросов и индексация таблиц
  • Лекция 7.7. Использование ORM для работы с базами данных
  • Лекция 7.8. Взаимодействие с NoSQL базами данных
Задание №16: Написать тесты для работы с NoSQL базой данных

8. Тестирование REST API

  • Лекция 8.1. Основы REST API и HTTP
  • Лекция 8.2. Подключение к REST API из Java
  • Лекция 8.3. Отправка GET, POST, PUT, DELETE запросов
  • Лекция 8.4. Обработка ответов от сервера и проверка статусов
  • Лекция 8.5. Тестирование безопасности и авторизации REST API

Задание №17: Написать тесты для REST API приложения

  • Лекция 8.6. Работа с JSON и XML в REST API
  • Лекция 8.7. Использование библиотек для тестирования REST API
  • Лекция 8.8. Параметризованные тесты для REST API
Задание №18: Написать параметризованные тесты для REST API

9. Оптимизация и масштабирование тестов

  • Лекция 9.1. Стратегии оптимизации тестов
  • Лекция 9.2. Параллельное выполнение тестов
  • Лекция 9.3. Работа с большими объемами данных
  • Лекция 9.4. Использование контейнеризации для тестов (Docker)
  • Лекция 9.5. Масштабирование тестов в облачных окружениях

Задание №19: Оптимизировать тесты для параллельного выполнения

  • Лекция 9.6. Работа с отчетами и логированием
  • Лекция 9.7. Использование CI/CD для автоматизации тестов
  • Лекция 9.8. Автоматическое развертывание тестов в разных окружениях
Задание №20: Настроить CI/CD для автоматизации тестов

10. Тестовые фреймворки и инфраструктура

  • Лекция 10.1. Введение в тестовые фреймворки
  • Лекция 10.2. Основы работы с JUnit
  • Лекция 10.3. Использование TestNG для продвинутого тестирования
  • Лекция 10.4. Настройка Maven для автоматизации сборки и тестов
  • Лекция 10.5. Использование Gradle для управления зависимостями и сборкой

Задание №21: Написать и настроить тесты с использованием JUnit и TestNG

  • Лекция 10.6. Интеграция тестов с CI/CD пайплайнами
  • Лекция 10.7. Использование Selenide для упрощения автоматизации UI-тестов
  • Лекция 10.8. Настройка окружений с помощью Docker и Kubernetes для тестирования

Задание №22: Интеграция тестов с CI/CD и настройка тестовой инфраструктуры с использованием Docker

  • Лекция 10.9. Использование Allure для создания отчетов о тестировании
  • Лекция 10.10. Мониторинг и анализ результатов тестирования
  • Лекция 10.11. Интеграция с внешними сервисами для уведомлений и отчетов
Задание №23: Настроить создание отчетов с использованием Allure и интеграцию с внешними сервисами для уведомлений