This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
courses:testing:lectures [2022/04/22 15:56] kalishenko |
courses:testing:lectures [2023/06/09 20:11] (current) 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 109: | Line 124: | ||
* Вынесение общих параметров | * Вынесение общих параметров | ||
* Просмотр результатов в графическом и табличном видах | * Просмотр результатов в графическом и табличном видах | ||
- | |||
- | ===== Планирование тестирования ===== | ||
- | - Структура и назначение Test-plan: | ||
- | * Кто | ||
- | * Что | ||
- | * Как | ||
- | * Когда | ||
- | * Критерии | ||
- | - Структура и назначение Test-case: | ||
- | * Предусловия | ||
- | * Шаги | ||
===== Тестирование интерфейса пользователя (Desktop) ===== | ===== Тестирование интерфейса пользователя (Desktop) ===== | ||
Line 142: | Line 146: | ||
* Фиксация изображений для поиска | * Фиксация изображений для поиска | ||
* Параметры поиска изображения | * Параметры поиска изображения | ||
- | |||
- | ----------- | ||
- | |||
===== 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 |