This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
courses:testing:lectures [2022/03/11 17:35] kalishenko |
courses:testing:lectures [2023/06/09 20:10] kalishenko |
||
---|---|---|---|
Line 11: | Line 11: | ||
* По уровню | * По уровню | ||
* По интерфейсу | * По интерфейсу | ||
- | - Особенности тестирования протоколов | ||
- | * RPC: WSDL/SOAP + REST/JSON | ||
- | * Messaging | ||
- Политика версионирования при тестировании: | - Политика версионирования при тестировании: | ||
* Альфа-версии | * Альфа-версии | ||
* Бета-версии | * Бета-версии | ||
+ | |||
+ | ===== Выбор вида тестирования ===== | ||
+ | - Пирамида тестирования: | ||
+ | * Приоритеты различных видов тестирования | ||
+ | * Соотношение видов тестов | ||
+ | - Принципы семантического версионирования | ||
+ | * Стандарт версионирования | ||
+ | * Пример на разделяемом протоколе взаимодействия | ||
+ | * Пример на библиотечных решениях | ||
===== Тестирование API. WSDL ===== | ===== Тестирование API. WSDL ===== | ||
==== Теория ==== | ==== Теория ==== | ||
+ | - Особенности тестирования протоколов | ||
+ | * RPC: WSDL/SOAP + REST/JSON | ||
+ | * Messaging | ||
- XSD-схемы - основы и примеры описания типов | - XSD-схемы - основы и примеры описания типов | ||
- WSDL-сервис - основы и пример описания методов | - WSDL-сервис - основы и пример описания методов | ||
Line 31: | Line 40: | ||
* Создание TestSuit | * Создание TestSuit | ||
* Проверки на основе XPath | * Проверки на основе XPath | ||
- | * Валидация WSDL/XSD | ||
- | ===== Выбор вида тестирования ===== | + | ===== Планирование тестирования. Test case / Bugs ===== |
- | - Пирамида тестирования: | + | - Структура и назначение Test-plan: |
- | * Приоритеты различных видов тестирования | + | * Кто |
- | * Соотношение видов тестов | + | * Что |
- | - Принципы семантического версионирования | + | * Как |
- | * Стандарт версионирования | + | * Когда |
- | * Пример на разделяемом протоколе взаимодействия | + | * Критерии |
- | * Пример на библиотечных решениях | + | - Структура и назначение Test-case: |
+ | * Предусловия | ||
+ | * Шаги | ||
+ | * Фокусирование на функциональности | ||
+ | - Заведение ошибок: | ||
+ | * Workflow | ||
+ | * Основные поля и принципы их заполнения | ||
===== Тестирование API. REST ===== | ===== Тестирование API. REST ===== | ||
Line 99: | Line 113: | ||
* JMeter | * JMeter | ||
* Gatling | * Gatling | ||
- | * K6 | + | * K6 |
- | - Место в CI: | + | |
- | * Базовый workflow сборки проекта | + | |
- | * Интеграционное тестирование с записью видео/результатов | + | |
==== Практика ==== | ==== Практика ==== | ||
Line 112: | Line 123: | ||
* Вынесение общих параметров | * Вынесение общих параметров | ||
* Просмотр результатов в графическом и табличном видах | * Просмотр результатов в графическом и табличном видах | ||
- | |||
- | ----------- | ||
===== Тестирование интерфейса пользователя (Desktop) ===== | ===== Тестирование интерфейса пользователя (Desktop) ===== | ||
==== Теория ==== | ==== Теория ==== | ||
- Примеры технологий разработки интерфейса и соответствие инструментов тестирования со знанием идентификаторов элементов интерфейса: | - Примеры технологий разработки интерфейса и соответствие инструментов тестирования со знанием идентификаторов элементов интерфейса: | ||
- | * Java/Swing или SWT: ? | ||
* Qt: Squish | * Qt: Squish | ||
* JS: Selenium | * JS: Selenium | ||
- | * Windows forms: ? | ||
- Применение компьютерного зрения: Sikuli | - Применение компьютерного зрения: Sikuli | ||
+ | * Архитектура | ||
+ | * OpenCV | ||
+ | * Tesseract | ||
+ | * Jython | ||
- Применение машинного обучения: Testolang | - Применение машинного обучения: Testolang | ||
+ | * Архитектура | ||
+ | * QEMU/KVM | ||
+ | * Нейронные сети | ||
==== Практика ==== | ==== Практика ==== | ||
- | - Sikuli | + | - Sikuli: |
- | - Testolang | + | * Подключение sikuli в Python |
+ | * Тест сложения в калькуляторе передачей нажатия клавиш | ||
+ | * Фиксация изображений для поиска | ||
+ | * Параметры поиска изображения | ||
===== Fuzzing-тестирование ===== | ===== Fuzzing-тестирование ===== | ||
==== Теория ==== | ==== Теория ==== | ||
- | - [[https://habr.com/ru/company/dsec/blog/517596/|Введение в fuzzing]] | + | - Виды верификации: |
+ | * Статическая | ||
+ | * Динамическая (..., fuzzing, ...) | ||
+ | - Sanitizers: | ||
+ | * asan | ||
+ | * ubsan | ||
+ | - Генерация данных: | ||
+ | * Начальная выборка | ||
+ | * Контроль трасс исполнения | ||
+ | * Эволюционные алгоритмы | ||
+ | - Критерии остановки тестирования | ||
==== Практика ==== | ==== Практика ==== | ||
- | - [[https://github.com/google/fuzzing/blob/master/tutorial/libFuzzerTutorial.md|libfuzzing "Hello world"]] | + | - AFL fuzzer: |
- | - OSS-Fuzz | + | * Сборка clang с ключами asan и ubsan |
- | * [[https://google.github.io/oss-fuzz/|OSS-Fuzz документация]] | + | * Создание тестовых данных для затравки |
- | * [[https://github.com/google/oss-fuzz/tree/master/projects|Список проектов под OSS-Fuzz]] | + | * Пример на дереве условных операторов |
- | - [[https://github.com/microsoft/restler-fuzzer|RESTler документация и репозиторий]] | + | * Запуск afl-fuzz и разъяснение полей, выводимых в runtime |
- | - [[https://github.com/schemathesis/schemathesis|Schemathesis документация и репозиторий]] | + | * Разбор результата поска падения приложения |
+ | ===== Классификация методов test design ===== | ||
+ | - Black Box | ||
+ | * Классы эквивалентности | ||
+ | * Граничные значения | ||
+ | * Доменный анализ | ||
+ | * Диаграмма переходов состояний | ||
+ | * Попарное тестирование | ||
+ | * Тестирование вариантов использования | ||
+ | - White Box | ||
+ | * Потоки управления | ||
+ | * Потоки данных | ||
+ | - Experience based | ||
+ | * Checklists | ||
+ | * Исследовательское тестирование. Test strategy model: | ||
+ | * Function | ||
+ | * Claims | ||
+ | * Domain | ||
+ | * User | ||
+ | * Stress | ||
+ | * Risk | ||
+ | * Flow | ||
+ | * Automatic | ||
+ | * Scenario | ||
+ | - Заведение ошибок: | ||
+ | * Поля | ||
+ | * Поиск дубликатов по стекам |