Table of Contents
Программа
Введение
Выбор вида тестирования
Тестирование API. WSDL
Теория
Практика
Планирование тестирования. Test case / Bugs
Тестирование API. REST
Теория
Практика
Тестирование интерфейса пользователя. Web
Теория
Практика
Нагрузочное тестирование
Теория
Практика
Тестирование интерфейса пользователя (Desktop)
Теория
Практика
Fuzzing-тестирование
Теория
Практика
Классификация методов test design
Программа
Введение
Примеры наиболее дорогих ошибок
Причины возникновения:
Космические лучи :)
Ошибки в ПО
Виды тестирования (различные классификации)
По цели
По свойствам
По исполнителю
По уровню
По интерфейсу
Политика версионирования при тестировании:
Альфа-версии
Бета-версии
Выбор вида тестирования
Пирамида тестирования:
Приоритеты различных видов тестирования
Соотношение видов тестов
Принципы семантического версионирования
Стандарт версионирования
Пример на разделяемом протоколе взаимодействия
Пример на библиотечных решениях
Тестирование API. WSDL
Теория
Особенности тестирования протоколов
RPC: WSDL/SOAP + REST/JSON
Messaging
XSD-схемы - основы и примеры описания типов
WSDL-сервис - основы и пример описания методов
Пример генерированного кода для сервера и клиента
Практика
Сетевой сниферинг SOAP с помощью wireshark
SoapUI:
Создание проекта на основе WSDL
Посылка запросов и получение ответов
Создание TestSuit
Проверки на основе XPath
Планирование тестирования. Test case / Bugs
Структура и назначение Test-plan:
Кто
Что
Как
Когда
Критерии
Структура и назначение Test-case:
Предусловия
Шаги
Фокусирование на функциональности
Заведение ошибок:
Workflow
Основные поля и принципы их заполнения
Поиск дубликатов по стекам
Тестирование API. REST
Теория
Напоминание принципов протокола HTTP (GET/POST/…)
JSON-schema/OpenAPI/Swagger - основы и примеры описания REST
API
Аналогия с XSD/WSDL
Практика
Postman:
Импорт описания
API
Применение окружений
Создание запросов
Использование переменных и их переопределение
Тесты на JS для проверки:
Кода возврата
Полей ответа
Соответствия схеме
Назначение и применение mock-серверов
Тестирование интерфейса пользователя. Web
Теория
Архитектура Selenium:
WebDriver
API
на Python, Java, …
IDE как расширение браузеров
Принципы идентификации элементов web-страниц
Практика
Selenuim:
Создание виртуального окружения на Python
Запуск WebDriver
Поиск элементов на странице (css, id, атрибуты)
Ввод текстовых данных
Автоматизированная генерация сценария в IDE
Нагрузочное тестирование
Теория
Фокусы нагрузочного тестирования:
Производительность
Стабильность
Отказоустойчивость
Масштабируемость
Стресс-тестирование
Профили нагрузки:
SLA
Пределы производительности
Параметры:
Время обработки
Чатота запросов
Размер данных
Откуда брать профили нагрузки:
БД
Журналы
Прогноз
Инструменты:
Web-консоль
JMeter
Gatling
K6
Практика
JMeter:
Поддерживаемые протоколы
Ручное создание HTTP-запросов
Запись сценариев через Proxy
Thread group и его параметры
Вынесение общих параметров
Просмотр результатов в графическом и табличном видах
Тестирование интерфейса пользователя (Desktop)
Теория
Примеры технологий разработки интерфейса и соответствие инструментов тестирования со знанием идентификаторов элементов интерфейса:
Qt: Squish
JS: Selenium
Применение компьютерного зрения: Sikuli
Архитектура
OpenCV
Tesseract
Jython
Применение машинного обучения: Testolang
Архитектура
QEMU/KVM
Нейронные сети
Практика
Sikuli:
Подключение sikuli в Python
Тест сложения в калькуляторе передачей нажатия клавиш
Фиксация изображений для поиска
Параметры поиска изображения
Fuzzing-тестирование
Теория
Виды верификации:
Статическая
Динамическая (…, fuzzing, …)
Sanitizers:
asan
ubsan
Генерация данных:
Начальная выборка
Контроль трасс исполнения
Эволюционные алгоритмы
Критерии остановки тестирования
Практика
AFL fuzzer:
Сборка clang с ключами asan и ubsan
Создание тестовых данных для затравки
Пример на дереве условных операторов
Запуск afl-fuzz и разъяснение полей, выводимых в runtime
Разбор результата поска падения приложения
Классификация методов test design
Black Box
Классы эквивалентности
Граничные значения
Доменный анализ
Диаграмма переходов состояний
Попарное тестирование
Тестирование вариантов использования
White Box
Потоки управления
Потоки данных
Experience based
Checklists
Исследовательское тестирование. Test strategy model:
Function
Claims
Domain
User
Stress
Risk
Flow
Automatic
Scenario