Программа

Введение

Примеры наиболее дорогих ошибок

Причины возникновения:

Космические лучи :)

Ошибки в ПО

Виды тестирования (различные классификации)

По цели

По свойствам

По исполнителю

По уровню

По интерфейсу

Особенности тестирования протоколов

RPC: WSDL/SOAP + REST/JSON

Messaging

Политика версионирования при тестировании:

Альфа-версии

Бета-версии

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

Теория

XSD-схемы - основы и примеры описания типов

WSDL-сервис - основы и пример описания методов

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

Практика

Сетевой сниферинг SOAP с помощью wireshark

SoapUI:

Создание проекта на основе WSDL

Посылка запросов и получение ответов

Создание TestSuit

Проверки на основе XPath

Валидация WSDL/XSD

Выбор вида тестирования

Пирамида тестирования:

Приоритеты различных видов тестирования

Соотношение видов тестов

Принципы семантического версионирования

Стандарт версионирования

Пример на разделяемом протоколе взаимодействия

Пример на библиотечных решениях

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

Теория

Напоминание принципов протокола HTTP (GET/POST/...)

JSON-schema/OpenAPI/Swagger - основы и примеры описания REST API

Аналогия с XSD/WSDL

Практика

Сетевой сниферинг JSON с помощью tcpdump / wireshark

Postman:

Импорт описания API

Применение окружений

Создание запросов

Использование переменных и их переопределение

Тесты на JS для проверки:

Кода возврата

Полей ответа

Соответствия схеме

Назначение и применение mock-серверов

Тестирование интерфейса пользователя (Web)

Теория

Архитектура Selenium:

WebDriver

API на Python, Java, ...

IDE как расширение браузеров

Принципы идентификации элементов web-страниц

Практика

Selenuim:

Создание виртуального окружения на Python

Запуск WebDriver

Поиск элементов на странице (css, id, атрибуты)

Ввод текстовых данных

Автоматизированная генерация сценария в IDE

Нагрузочное тестирование

Теория

Фокусы нагрузочного тестирования:

Производительность

Стабильность

Отказоустойчивость

Масштабируемость

Стресс-тестирование

Профили нагрузки:

SLA

Пределы производительности

Параметры:

Время обработки

Чатота запросов

Размер данных

Откуда брать профили нагрузки:

БД

Журналы

Прогноз

Инструменты:

Web-консоль

JMeter

Gatling

K6

Место в CI:

Базовый workflow сборки проекта

Интеграционное тестирование с записью видео/результатов

Практика

JMeter:

Поддерживаемые протоколы

Ручное создание HTTP-запросов

Запись сценариев через Proxy

Thread group и его параметры

Вынесение общих параметров

Просмотр результатов в графическом и табличном видах

Тестирование интерфейса пользователя (Desktop)

Теория

Примеры технологий разработки интерфейса и соответствие инструментов тестирования со знанием идентификаторов элементов интерфейса:

Java/Swing или SWT: ?

Qt: Squish

JS: Selenium

Windows forms: ?

Применение компьютерного зрения: Sikuli

Применение машинного обучения: Testolang

Практика

Sikuli

Testolang

Fuzzing-тестирование

Теория

Введение в fuzzing

Практика

libfuzzing "Hello world"

OSS-Fuzz

OSS-Fuzz документация

Список проектов под OSS-Fuzz

RESTler документация и репозиторий

Schemathesis документация и репозиторий