Post on 26-Jun-2015
Модульное и нагрузочное тестирование
Влад Алюков
О чём
Модульное тестирование
Нагрузочное тестирование
2
3
Модульное тестирование
Зачем?
Документация
Более лёгкое внесение изменений
Качество кода
Уменьшение количества итераций Разработка > Тестирование > Разработка
4
Документация
5
Простое внесение изменений
6
Сложность
7
Преимущества
Скорость
Надёжность
Стабильность
8
Скорость
9
Надёжность
10
Недостатки
Гарантируют работоспособность на уровне модуля
11
UNIT test
12
Testing Pyramid
13
Как?
Тестовый фрэймворк
Mock/Stub
DocTests
CodeCoverage
14
xUnit
15
unit test framework {lang}
Анатомия теста
16
Репорты
Html Report
xUnit Report
text report
17
Mock/Stub
Hardware
Внешние зависимости
Базы данных
18
Различия
Mock ― эмуляция объекта
Stub ― заглушка для объекта
19
Mock (example)
20
DocTest
21
DocTest недостатки
Развесистая документация
Нецелевое использование docstring
Неудобно работать с фикстурами
22
23
Анализ существующих тестов
Анализ покрытия
24
Анализ покрытия
25
Mutation Testing
26
Принцип
27
Недостатки
28
Статический анализ кода
Связанность кода
Опасные конструкции
Опечатки
Копипаст
Утечки памяти
Code Convention
29
30
Практики написания тестов
TDD
Отслеживание прогресса
Документирование
Архитектура “в нагрузку”
Очевидные ориентиры и стимулы
31
TDD
32
33
BDD
BDD
В первую очередь ― валидация
34
BDD
Когда документация важна
Регрессионное тестирование
Приёмочные тесты
35
Достоинства
Виден прогресс
Понижает порог вхождения
36
Недостатки
Много текста
Условно человекочитаемый формат
37
38
Антипаттерны
False Positive
assertTrue(True)
39
Зависимый
Зависит от окружения
Зависит от других тестов
40
Inspector
Использует знание о структуре объектов (reflection api)
41
GodTest
Задействует много посторонних объектов и подсистем
42
Счётчик
43
Медленные тесты
44
45
Вопросы?
46
Нагрузочное тестирование
Нагрузочное тестирование
47
SLA
48
Нервные пользователи
49
Цели
Поиск узких мест
Оценка допустмых пределов
Определение границ QoS
50
Стратегия
Проработка модели нагрузки
Создание профилей нагрузки
Генерация нагрузки
Мониторинг тестируемых систем
Анализ результатов
51
Профили нагрузки
52
Модель нагрузки
Список профилей нагрузки
Интенсивность выполнения операции
Зависимость интенсивности операций от времени выполнения
53
Профиль нагрузки
Определение сценариев нагрузки
Определение точек нагрузки
Определение количества пользователей
54
Точки нагрузки
Определение точек нагрузки
Технические точки нагрузки
Функциональные точки нагрузки
Определение интенсивности выполнения операций
55
Технические точки нагрузки
Работа с базой (модификация сущностей)
Задействуют несколько подсистем приложения
56
Функциональные точки нагрузки
Критический важные функции вашего приложения
Регистрация
Логин
Основные бизнес-кейсы
57
58
Анализ результатов
Метрики
Время отклика
Количество ошибок
Disk IO (tps, kb/t)
RAM (memory use)
CPU
LA
59
LoadAverage
Количество процессов в очереди
Временной интервал 1/5/15 минут
60
Время ответа
Стремится к нормальному распределению
С наименьшим среднеквадратичным отклонением
61
Нормальное распределение
62
Квадратичное отклонение
63
Квантиль
64
Типичные проблемы
Input/Output
Недостаточно производительный генератор нагрузки
65
66
Типичные ошибки
Прогрев
67
Среднее арифметическое
68
Только протоколы
69
Достойные инструменты
multi-mechanize
locustio
jmeter
grinder
tsung
70
71
Вопросы?