ПРОГРАММА САМООБУЧЕНИЯ «ТЕСТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ»
В программу включены курсы:
- Введение в тестирование
- Тестирование Веб-приложений
- Тестирование мобильных приложений
- Автоматизированное тестирование
КУРС «ВВЕДЕНИЕ В ТЕСТИРОВАНИЕ»
ЧТО ДАСТ ВАМ КУРС
Всего за 6 недель самостоятельной подготовки вы получите систематизированные базовые теоретические знания и практические навыки, необходимые для того, чтобы начать работать джуниор-тестировщиком и/или продолжать углубленное обучение. Предусловия:
- Базовая компьютерная грамотность.
ЗАНЯТИЕ 1: ТЕСТИРОВАНИЕ И ТЕСТИРОВЩИКИ
- Профессия тестировщик (QA)
- Что изучить, чтобы понять азы тестирования
- Что такое тестирование
- Цели тестирования.
- Принципы тестирования
- Качество программного обеспечения
- Валидация и верификация
- Понятие ошибок, дефектов и сбоев, что такое Баг
- Значение и классификация ошибок программного обеспечения
- Причины возникновения багов
ЗАНЯТИЕ 2: ЖИЗНЕННЫЙ ЦИКЛ РАЗРАБОТКИ И ТЕСТИРОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- Что такое IT-проект?
- Управление IT проектом
- Жизненный цикл разработки программного обеспечения:
- Основные модели разработки программного обеспечения
- Гибкая методология разработки Agile
- Жизненный цикл тестирования программного обеспечения
- Методология управления проектами Scrum
- Методология управления проектами Kanban
- Управление проектами по гибкой методологии Agile
- Что такое Jira?
ЗАНЯТИЕ 3: ТРЕБОВАНИЯ И ДОКУМЕНТАЦИЯ
- Что такое «требование»
- Классификация требований
- Документация на ПО
- Тестовая документацияест план, тест-кейс, чек-лист, баг-репорт)
- Основы тестирования программного обеспечения
- Планирование процесса тестирования
ЗАНЯТИЕ 4: ТЕСТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- Основные понятия и определения
- Виды тестирования программного обеспечения
- Уровни тестирования программного обеспечения
- Тест-дизайн
- Процесс тестирования
- Автоматизированное тестирование программного обеспечения
ЗАНЯТИЕ 5: МЕТРИКИ ПРОЦЕССА ТЕСТИРОВАНИЯ
- Оценка результатов тестирования
- Метрики тестирования и оценка трудозатрат.
ЗАНЯТИЕ 6: ИНСТРУМЕНТЫ, КОТОРЫЕ НЕОБХОДИМО ОСВОИТЬ
- Java стабильно занимает первое место в индексе популярности языков программирования tiobe. Вы сможете использовать его для написания авто-тестов и в дальнейшем для разработки под любую платформу. Java — хороший язык для начала изучения программирования.
- Visual Studio Code — редактор исходного кода, разработанный Microsoft для Windows, Linux и macOS.
- Git - самая популярная система контроля версий, которой пользуется большинство разработчиков, в том числе создатели операционных систем Android, Linux. Система контроля версий позволяет работать над кодом проекта совместно, не переживая за потерю данных или конфликт версий.
- PostgreSQL - свободная объектно-реляционная система управления базами данных. Существует в реализациях для множества UNIX-подобных платформ, включая AIX, различные BSD-системы, HP-UX, IRIX, Linux, macOS, Solaris/OpenSolaris, Tru64, QNX, а также для Microsoft Windows.
- Selenium - фреймворк (программная библиотека) для автоматизации действий веб-браузера. Самый популярный инструмент для тестирования веб-приложений, предоставляя авто-тестам доступ к браузеру.
- JSON — текстовый формат обмена данными, основанный на JavaScript.
- IntelliJ IDEA - умная и удобная среда разработки для Java, включающая поддержку последних технологий и фреймворков. Предоставляет инструменты для продуктивной работы и подходит для создания коммерческих, мобильных и веб-приложений.
- Swagger - это программная среда с открытым исходным кодом, опирающаяся на обширную экосистему инструментов, которая помогает разработчикам проектировать, создавать, документировать и использовать веб-сервисы RESTful.
- Postman - HTTP-клиент для тестирования веб-сайтов. С его помощью можно составлять и редактировать простые или сложные HTTP-запросы.
- JIRA - система, которая подходит для отслеживания ошибок и управления проектом в компании любого размера.
- Apache Maven — фреймворк для автоматизации сборки проектов на основе описания их структуры в файлах на языке POM, являющемся подмножеством XML.
КУРС «ТЕСТИРОВАНИЕ ВЕБ-ПРИЛОЖЕНИЙ»
ЧТО ДАСТ ВАМ КУРС
Понимание принципов работы веб-приложений и знание используемых технологий.
Знание особенностей тестирования веб-приложений по сравнению с десктопными приложениями.
Знания для проектирования тестов и тестовых сценариев с учётом особенностей веб-приложений и оценки покрытия тестами функциональности приложения.
Уметь выполнять тесты, при необходимости используя инструментальные средства для преодоления ограничений, накладываемых браузером и оформлять баг-репорты.
Понимание основ веб-вёрстки, архитектуры веб-приложений, протоколов.
Владение инструментами, для выполнения специфических проверок, характерных для веб-приложений:
- анализ целостности ссылок,
- анализ соответствия веб-стандартам,
Понимание причин возникновения уязвимостей в веб-приложениях и умение обнаруживать наиболее критические уязвимости в веб-приложениях,
Понимание принципов оценки производительности веб-приложений и уметь выполнять анализ серверной и клиентской производительности веб-приложений.
Предусловия:
- Базовая компьютерная грамотность. Архитектура клиент и сервер.
- Знание любого языка программирования на базовом уровне (Java, Python, Ruby или PHP), основы SQL.
ЗАНЯТИЕ 1: ОСНОВЫ ВЕБ-ПРИЛОЖЕНИЙ
- Основные понятия в веб-разработке. Общая теория тестирования
- Характеристики качества: что нужно тестировать?
- Интерфейсы тестируемой программы, стимулы и реакции
- Общее устройство браузера
- Гипертекст, язык разметки HTML
- Тестирование текстового содержимого страниц
- Тестирование текстовых полей
- Тестирование текста, чисел и дат с использованием граничных значений
- Тестирование форм регистрации
- Тестирование форм авторизации и восстановления паролей
- Тестирование дополнительных элементов интерфейса
- Тестирование навигации (переходов между страницами)
ЗАНЯТИЕ 2: АРХИТЕКТУРА КЛИЕНТ И СЕРВЕР
- Клиент-серверная архитектура веб-приложений
- Протокол HTTP
- User Agent, браузеры и боты
- Браузерные движки и кроссбраузерное тестирование
- Анализ логов веб-сервера
- Developer Tools / Network, анализ запросов и ответов
- Перехват трафика между браузером и сервером
- Отправка запросов произвольного вида
- Domain Name Services (DNS)
- Протоколы IPv4 и IPv6
- Брандмауэры и прокси
ЗАНЯТИЕ 3: ДИНАМИЧЕСКАЯ ГЕНЕРАЦИЯ СТРАНИЦ
- Сервер-приложений, языки программирования
- Трехзвенная и четырехзвенная архитектура
- Сервер баз данных
- Язык запросов SQL
- Кеширование на стороне сервера
- Аутентификация и авторизация
- Cookies
- Внешняя аутентификация (OAuth)
- Тестирование прав доступа
- Тестирование производительности
ЗАНЯТИЕ 4: ПОЛУЧЕНИЕ ДАННЫХ ОТ ПОЛЬЗОВАТЕЛЯ
- Формы, параметры запроса
- Неявные параметры
- GET и POST
- Тестирование логики (функциональное тестирование)
- Автоматизация тестирования
- Тестирование производительности
- Тестирование надежности
- Тестирование защищенности
ЗАНЯТИЕ 5: ВЕРСТКА СТРАНИЦ
- Основы языка разметки документов HTML
- Основы языка оформления стилей документа CSS
- Developer Tools / DOM, анализ свойств элементов
- Основные тэги для вёрстки, Псевдоклассы и псевдоэлементы
- Простая верстка
- Адаптивная верстка
- Адаптивность. Десктоп и планшет.
- Адаптивность. Мобильные устройства.
- Семантическая верстка
- Совместимость с браузерами
- Соответствие стандартам
ЗАНЯТИЕ 6: КАРТИНКИ И ДРУГИЕ УКРАШЕНИЯ
- Размер, количество, производительность
- Кеширование на стороне клиента
- Content Delivery Network (CDN)
- Спрайты, инлайн-картинки, шрифты
- Адаптивная верстка
- Типографика
- Scalable Vector Graphics (SVG)
- Canvas
- Аудио и видео
ЗАНЯТИЕ 7: ИНТЕРАКТИВНОСТЬ
- JavaScript: встроенный в браузер язык программирования
- CSS Transform: анимация без JavaScript
- Динамическая модификация страниц
- Document Object Model (DOM)
- Developer Tools / Console
- JavaScript Debugger
- Асинхронные запросы к серверу (AJAX)
- REST API
- SOAP API
- WebSocket
- Валидация данных
- Динамическая подгрузка данных
- Single Page Applications (SPA)
ЗАНЯТИЕ 8: ПОВТОРЕНИЕ ОСНОВ
- Функциональное тестирование
- Автоматизация функционального тестирования
- Тестирование производительности, в том числе клиентской части
- Тестирование защищенности
- Тестирование надёжности
- Тестирование удобства использования (usability)
- Автоматизация тестирования вёрстки
- Тестирование доступности (accessibility)
- Расширенные техники тестирования
- Тестовые сценарии. Позитивные и негативные тесты
- Кроссплатформенное и кроссбраузерное тестирование
- Дополнительные инструменты тестирования
ЗАНЯТИЕ 9: НЕФУНКЦИОНАЛЬНОЕ ТЕСТИРОВАНИЕ
- Тестирование требований.
- Тестирование UI, UX.
- Приёмочное тестирование.
- Тестирование безопасности. Серверные уязвимости.
- Тестирование безопасности. Клиентские уязвимости.
КУРС «ТЕСТИРОВАНИЕ МОБИЛЬНЫХ ПРИЛОЖЕНИЙ»
ЧТО ДАСТ ВАМ КУРС
Знания и умение организовать тестирование мобильных приложений, какое устройство выбрать для тестирования, получите представление о построении тестовых стратегий.
Предусловия:
- Базовая компьютерная грамотность. Необходимо уметь работать с подключением телефонов с разными ОС к разным компьютерам, командной строкой, графическим и консольным интерфейсами, переменными окружения, различными файловыми системами, логами, IDE, клиент-серверной архитектурой, скриншотами и видео.
- Знание любого языка программирования на базовом уровне (Java, Python, Ruby или PHP)
ЗАНЯТИЕ 1: ОСОБЕННОСТИ МОБИЛЬНОГО ТЕСТИРОВАНИЯ
- Базовые понятия
- Виды устройств Android. Разрешение и размеры экранов.
- Архитектура процессоров Android устройств.
- Версии ОС Android
- Виды устройств iOS. Разрешения экранов
- Архитектура процессоров iOS устройств)
ЗАНЯТИЕ 2: ОСОБЕННОСТИ МОБИЛЬНОГО ТЕСТИРОВАНИЯ
- Тестирование связи (Wifi/2G/3G/LTE)
- Тестирование прерываний
- Взаимодействие с сенсорами положения и тач сенсором
- Тестирование геолокации и GPS
- Тестирование потребления ресурсов
- Работа с клиент-серверными приложениями
- Тестирование установки
- Роль тестировщика в администрировании мобильных устройств
- Списки тест-кейсов: чек-листы и мнемоники
- Брандмауэры и прокси
ЗАНЯТИЕ 3: ЭМУЛЯТОРЫ И СИМУЛЯТОРЫ
- Разница между симулятором iOS и эмулятором Android
- Особенности тестирования на физических устройствах и эмуляторах/симуляторах
- Фермы мобильных устройств
- Достоинства и недостатки использования ферм
- Пример использования мобильной фермы
ЗАНЯТИЕ 4: ТЕСТИРОВАНИЕ ANDROID-ПРИЛОЖЕНИЙ
- Установка и настройка Android Studio
- Создание и настройка эмулятора в Android Studio
- Функционал эмулятора
- Настройка Android Device Bridge
- Установка приложений на эмулятор и реальное устройство
- Анализ логов и снятие скриншотов
- Жизненный цикл операции
- Перехват трафика
- Работа с GPS
ЗАНЯТИЕ 5: ТЕСТИРОВАНИЕ IOS-ПРИЛОЖЕНИЙ
- Установка и настройка Xcode
- Модуль 2: Функционал симулятора
- Запуск приложения на симуляторе
- Запуск приложения на реальном устройстве
- Артефакты тестировании
- Перехват трафика
- Работа с GPX-путями
ЗАНЯТИЕ 6: ОРГАНИЗАЦИЯ ПРОЦЕССА ТЕСТИРОВАНИЯ
- Выбор стратегии тестирования
- Модуль 3: Гайдлайны для Android и iOS
- Модуль 4: Разработка
- Модуль 5: Monkey тестирование
- Модуль 6: Выкладка
- Мониторинг и поддержка
- A/B тестирование
КУРС «АВТОМАТИЗИРОВАННОЕ ТЕСТИРОВАНИЕ»
ЧТО ДАСТ ВАМ КУРС
- Умение работать с обеими платформами – iOS и Android;
- Выбирать правильные инструменты, подходящие именно под ваши задачи;
- Настраивать среду автоматизации с нуля на различных операционных системах;
- Писать качественные тесты, которые легко поддерживать и расширять;
- Получите все необходимые знания для старта автоматизации в вашем проекте.
Предусловия:
- Базовая компьютерная грамотность. Необходимо уметь работать с подключением телефонов с разными ОС к разным компьютерам, командной строкой, графическим и консольным интерфейсами, переменными окружения, различными файловыми системами, логами, IDE, клиент-серверной архитектурой, скриншотами и видео.
- Знание любого языка программирования на базовом уровне (Java, Python, Ruby или PHP)
- Понимание основ ООП. Надо понимать, что такое класс, метод класса и поле класса.
- Основы Java. Надо знать базовые типа данных: int, char. Надо знать, что такое String и List.
- Надо знать, что такое локатор и как составить просто XPath локатор.
ЗАНЯТИЕ 1: ВВЕДЕНИЕ В JAVA И JUNIT
- Установка инструментов разработки IDE
- Создание проекта в IntelliJ IDEA
- Основы работы с Java - переменные и типы данных, функции
- Основы работы с Java - классы, методы класса и объекты
- Объектно-ориентированное программирование - наследование, инкапсуляция, полиморфизм
- Модификаторы доступа в Java - public, private, protected
- Поля класса - переменные внутри классов
- Статические поля и методы - для чего нужны и как использовать
- Азы работы с тестовым фреймворком JUnit
- Создание простых тестов на JUnit
- Статусы теста - success, skip, failed, error
- Аннотации и описания к тестам
- Проверки в тестах - assertTrue/assertFalse, assertEquals и так далее
- Git и Github - выкладываем наши тесты в свой репозиторий
ЗАНЯТИЕ 2: УСТАНОВКА И НАСТРОЙКА ИНСТРУМЕНТОВ
- Обзор инструментов мобильной автоматизации
- Программное обеспечение для тренинга
- Установка инструментов (Windows)
- Установка инструментов (MacOS)
- UIAutomatorViewer и Appium Viewer
- Настойка тестового приложения
- Packages and Capabilities
- Создание нового проекта в IDE, подключение библиотек
- Запуск первого теста на Android
ЗАНЯТИЕ 3: ПЕРВЫЕ ТЕСТЫ НА ANDROID
- Типы свайпов и организация удобных методов для них
- Ассерты - пишем свои методы для проверки состояния приложения
- Повороты экрана и правильная подготовка эмулятора перед стартом тестов
- Background apps - тестируем работоспособность приложения в фоновом режиме
ЗАНЯТИЕ 4: ПРОДВИНУТЫЕ ТЕСТЫ НА ANDROID
- Типы свайпов и организация удобных методов для них
- Ассерты - пишем свои методы для проверки состояния приложения
- Повороты экрана и правильная подготовка эмулятора перед стартом тестов
- Background apps - тестируем работоспособность приложения в фоновом режиме
ЗАНЯТИЕ 5: ПАТТЕРНЫ PAGEOBJECT, PAGEFACTORY И ДРУГИЕ
- Page object model для организации тестов
- Создание фабрики PageObject для кроссплатформенных тестов
- Разбор других паттернов для разработки тестов
- Подготовка окружения для тестов - класс TestBase и TestCore
ЗАНЯТИЕ 6: ПРОСТЫЕ ТЕСТЫ ДЛЯ IOS
- Установка XCode и iOS-симуляторов
- Запуск приложения на iOS-симуляторе
- Appium Viewer для iOS - поиск локаторов
- Подключение iOS-платформы к тестам
- Базовые тесты для iOS-приложение
ЗАНЯТИЕ 7: СЛОЖНЫЕ ТЕСТЫ ДЛЯ IOS
- Разработка кроссплатформенных тестов для iOS и Android
- Работа с переменными окружения
- Создание конфиг-класса Platform
- Универсальные методы для swipe
- Skip тестов для платформ
ЗАНЯТИЕ 8: MAVEN И CI СИСТЕМЫ НА ПРИМЕРЕ JENKINS
- Запуск эмулятора из командной строки
- Запуск Appium Server из командной строки
- Установка Maven
- Импорт проекта в IDEA
- Установка Jenkins
- Разработка bash-скриптов для Jenkins
- Запуск тестов на iOS в Jenkins
- Запуск тестов на Android в Jenkins
- Добавление тестов в suite
ЗАНЯТИЕ 9: SELENIUM И ТЕСТЫ ДЛЯ WEB НА ПРИМЕРЕ MOBILE WEB ПРИЛОЖЕНИЯ
- Запуск Selenium и Chrome Driver
- Подготовка capabilities для Mobile Web
- Создание базовых классов для Mobile Web приложения
- Работа с инспектором Chrome DevTools
- Подготовка тестов к запуску в Jenkins